批量資料錄入
設計方法:同時提交多條表單記錄,為每一條記錄設定相同的文本網域名稱稱,然後在表單處理頁中,通過for
迴圈來讀取提取表單提交的資料,最後以資料的形式將資料逐條添加到資料庫中。
其中,應用一個count()函數來擷取數組中元素的個數。
int count(mixed var);
表單提交頁面
| 代碼如下 |
複製代碼 |
<form name="form1" method="post" action="index_ok.php"> <tr> <td>商品名稱</td> <td>編號</td> <td>單價</td> <td>數量</td> <td>產地</td> <input name="data" type="hidden" value="<?php echo $data;?>"> </tr> <tr> <td><input name="sp_name[]" type="text" id="sp_name" size="15"></td> <td><input name="sp_number[]" type="text" id="sp_number" size="10"></td> <td><input name="price[]" type="text" id="price" size="8"></td> <td><input name="counts[]" type="text" id="counts" size="8"></td> <td><input name="address[]" type="text" id="address" size="15"></td> </tr> <input type="submit" name="submit" value="提交"> <input type="reset" name="reset" value="重設"> </form> 資料庫連接頁 <?php $id=mysql_connect("localhost","root","password") or die('connection failed'.mysql_error()); if(mysql_select_db('mydatabase',$id)) echo ""; else echo('select db failed:'.mysql_error()); ?> 表單處理頁 <?php session_start(); include("conn/conn.php"); if($submit==true){ for($i=0;$i<count($sp_name);$i++){ $path=$_POST["sp_name"][$i]; $path1=$_POST["sp_number"][$i]; $path2=$_POST["price"][$i]; $path3=$_POST["counts"][$i]; $path4=$_POST["address"][$i]; $query=mysql_query("insert into tb_products(sp_name,sp_number,price,counts,address,data) values('$path','$path1','$path2','$path3','$path4','$data');} if($query==true){ echo"提交成功"; else echo"提交失敗";} } ?>
|
批次更新資料
主要通過while, list(),each()函數來實理資料的批次更新
list()函數用於一次性為多個變數賦值
| 代碼如下 |
複製代碼 |
<?php session_start(); include("conn/conn.php");?> <form name="form1" method="post" action="index_ok.php"> <?php $query="select * from tb_users"; $result=mysql_query($query); if($result==true){ while($myrow=mysql_fetch_array($result)){ ?> <tr> <td><input name="<?php echo $myrow[id];?> type="checkbox" value="<?php echo $myrow[id]; ?></td> <td><?php echo $myrow[user];?></td> <td><?php echo $myrow[popedom];?></td> <td><?php echo $myrow[operation];?></td> </tr> <?php }} ?> <tr> <input type="submit" name="submit" value="啟用"> <input type="submit" name="submit2" value="凍結"> </tr> </form> 表單處理頁 <?php session_start(); include("conn/conn.php") if($submit=="啟用"){ while(list($name,$value)=each($_POST)){ $result=mysql_query("update tb_user set operation='啟用' where id='".$name."'"); if($result==true){ echo "<script> alert('啟用成功');window.location.href='index.php';</script>";}} if($submit2=="凍結"){ while(list($name,$value)=each($_POST)){ $result=mysql_query("update tb_user set operation='凍結' where id='".$name."'"); if($result==true){ echo "<script> alert('凍結成功');window.location.href='index.php';</script>";}} } ?> |
總結,
心細的朋友會發現兩個例子都有幾個共同點,一個是表單from的表單名是以counts[]數組形式了,而在php處理接受頁面都會使用for 或while來實現遍曆了,下面我就簡單的給大家分析這兩個例子。
counts[]
這個在表單中是代表數組,如果你有10個表單那麼我們name=counts[] 意思他們內個都是一樣數組,知道這個是數組了就知道下面知道為什麼會使用遍曆了。
for 或while
因為表單過來的是數組我們就可以遍曆數組然後對資料進行儲存了,如下代碼
while(list($name,$value)=each($_POST)){
或
for($i=0;$i<count($sp_name);$i++){
兩個實現結果是一樣的的哦。