
批改狀態(tài):合格
老師批語(yǔ):
1、單文件上傳
<form action="" method="POST" enctype="multipart/form-data">
<fieldset>
<legend>單文件上傳</legend>
<!-- 瀏覽器中限制上傳文件的大小,寫(xiě)到一個(gè)隱藏域中,并寫(xiě)到type=file之前 -->
<input type="hidden" name="MAX_FILE_SIZE" value="300000">
<input type="file" name="my_pic">
<button>上傳</button>
</fieldset>
</form>
<?php
// $_FILES: PHP超全局變量數(shù)量,保存著上傳文件的全部信息
printf('<pre>%s</pre>',print_r($_FILES,true));
/**
* 1. $_FILES:二維數(shù)組,每個(gè)元素對(duì)應(yīng)一個(gè)上傳的文件
* 2. name: 原始文件名
* 3. type: 文件類(lèi)型,mime類(lèi)型
* 4. tmp_name: 臨時(shí)目錄
* 5. error: 錯(cuò)誤代碼
* 6. size: 文件大?。ㄗ止?jié)表示 byte)
*/
if(isset($_FILES['my_pic'])){
$name = $_FILES['my_pic']['name'];
$tmpName = $_FILES['my_pic']['tmp_name'];
$error = $_FILES['my_pic']['error'];
if($error > 0){
$tips = '<span style="color:red;">上傳失敗:</span>';
switch($error){
case 1:
$tips .= '上傳的文件超過(guò)了 php.ini 中 upload_max_filesize 選項(xiàng)限制的值';
break;
case 2:
$tips .= '文件大小超過(guò)了上傳表單中MAX_FILE_SIZE最大值';
break;
case 3:
$tips .= '文件只有部分被上傳';
break;
case 4:
$tips .= '沒(méi)有文件被上傳';
break;
case 6:
$tips .= '找不到臨時(shí)目錄';
break;
case 7:
$tips .= '文件寫(xiě)入失敗,請(qǐng)檢查目錄權(quán)限';
break;
}
echo "<p>$tips</p>";
}else{
// 判斷用戶(hù)是不是通過(guò)合法的POST方式上傳
if(is_uploaded_file($tmpName)){
// 設(shè)置允許上傳文件類(lèi)型的白名單
$allow = ['jpg','jpeg','png','gif'];
// 獲取文件擴(kuò)展名
$ext = pathinfo($name)['extension'];
if(in_array($ext,$allow)){
// 兩個(gè)條件都滿(mǎn)足了
// 1、post方式上傳的 2、文件類(lèi)型是合法的
// 目標(biāo)目錄
$path = 'uploads/';
// 自定義目標(biāo)文件名
$dest = $path.md5($name).'.'.$ext;
// 將文件從臨時(shí)目錄中移動(dòng)到目標(biāo)目錄中并重命名
if(move_uploaded_file($tmpName,$dest)){
echo '<p style="color:green">上傳成功</p>';
// 預(yù)覽
echo "<img src='$dest' width='200' >";
}else{
echo '<p style="color:red">移動(dòng)失敗</p>';
}
}else{
echo '<p style="color:red">文件類(lèi)型錯(cuò)誤</p>';
}
}else{
echo '<p style="color:red">非法方式上傳</p>';
}
}
}
?>
2、多文件上傳
<form action="" method="POST" enctype="multipart/form-data">
<fieldset>
<legend>多文件上傳:批量上傳</legend>
<!-- multiple:允許同時(shí)選擇多個(gè) -->
<input type="file" name="my_pic[]" multiple>
<button>上傳</button>
</fieldset>
</form>
<?php
// $_FILES: PHP超全局變量數(shù)量, 保存著上傳文件的全部信息
printf('<pre>%s</pre>',print_r($_FILES,true));
if(isset($_FILES['my_pic'])){
// 這時(shí)值需要遍歷$_FILES['my_pic']['error']這個(gè)數(shù)組
foreach($_FILES['my_pic']['error'] as $key=>$error){
if($error === 0){
// 臨時(shí)文件名
$tmpName = $_FILES['my_pic']['tmp_name'][$key];
// 原始文件名
$name = $_FILES['my_pic']['name'][$key];
// 目標(biāo)文件名
$destFile = 'uploads/0627/'.$name;
move_uploaded_file($tmpName,$destFile);
}
}
}
?>
數(shù)據(jù)表如下:
分頁(yè)參數(shù):當(dāng)前頁(yè)數(shù)、偏移量、每頁(yè)數(shù)量、總數(shù)、總頁(yè)數(shù)
<?php
// 1.連接數(shù)據(jù)庫(kù)
$db = new PDO('mysql:dbname=mydb','myshop','yzj123');
// 2.當(dāng)前頁(yè),再GET參數(shù)中
$page = $_GET['p'] ?? 1;
echo "當(dāng)前頁(yè):p= $page<hr>";
// 3. 每頁(yè)顯示數(shù)量
$num = 5;
// 4. 記錄總數(shù)
$sql = 'SELECT COUNT(`ps_id`) AS `total` FROM `sp_permission`';
$stmt = $db->prepare($sql);
$stmt->execute();
// 將某列的值與php變量綁定,`total` => $total
$stmt->bindColumn('total',$total);
$stmt->fetch(PDO::FETCH_ASSOC);
echo "總記錄數(shù)量:$total<hr>";
// 5. 總頁(yè)數(shù)
// 10.1 => 11 ceil: 向上取整,不丟失數(shù)據(jù)
$pages = ceil($total/$num);
echo "總頁(yè)數(shù): $pages<hr>";
// 6. 偏移量
// offset = (page-1)*num
$offset = ($page-1)*$num;
echo "偏移量:$offset<hr>";
// 7. 分頁(yè)數(shù)據(jù)
$sql = "SELECT * FROM `sp_permission` LIMIT $offset,$num";
$stmt = $db->prepare($sql);
$stmt->execute();
$staffs = $stmt->fetchAll(PDO::FETCH_ASSOC);
// 遍歷
if(count($staffs) === 0){
echo '查詢(xún)結(jié)果為空';
}else{
foreach($staffs as $staff){
// 提取參數(shù)
extract($staff);
printf('%d-%s-%s-%s<br>',$ps_id,$ps_name,$ps_c,$ps_a);
}
}
<body>
<table>
<caption>角色列表</caption>
<thead>
<tr>ID</tr>
<tr>名稱(chēng)</tr>
<tr>ps_c</tr>
<tr>ps_a</tr>
</thead>
<tbody>
<?php foreach ($staffs as $staff) : extract($staff) ?>
<tr>
<td><?= $ps_id ?></td>
<td><?= $ps_name ?></td>
<td><?= $ps_c ?></td>
<td><?= $ps_a ?></td>
</tr>
<?php endforeach ?>
</tbody>
</table>
<p>
<?php for($i=1;$i<=$pages;$i++): ?>
<?php
$url = $_SERVER['PHP_SELF'].'?p='.$i;
$active = $i==$_GET['p'] ? 'active' : null;
?>
<a href="<?= $url ?>" class="<?= $active ?>">
<?= $i ?>
</a>
<?php endfor ?>
</p>
</body>
微信掃碼
關(guān)注PHP中文網(wǎng)服務(wù)號(hào)
QQ掃碼
加入技術(shù)交流群
Copyright 2014-2025 http://ipnx.cn/ All Rights Reserved | php.cn | 湘ICP備2023035733號(hào)