作者ufly (飞)
看板PHP
标题Re: [请益] 如何用checkbox foreach 删除多笔资料
时间Mon May 14 09:34:42 2012
※ 引述《ufly (飞)》之铭言:
: 各位前辈好,我想使用foreach语法删除我资料表中的多笔资料
: 但无法执行...不知道哪边语法有错 (网页执行正常,资料库却一动也不动)
: member_table 中的第二栏为 username
: [NO] [username] [password]
: 主键
: §这是秀资料的网页码
: <?php
: $data = "SELECT * FROM member_table";
: $result = mysql_query($data);
: echo '<form name="form" method="post" action="del.php">';
: echo '<table width="700" border="1">' ;
: while($row = mysql_fetch_row($result))
: {
: echo "<tr>";
: echo '<td><input type=checkbox name="del[]" value="$row[1]" /></td>';
: echo "<td>$row[1]</td>";
: echo "<td>$row[1]</td>";
: }
: echo "</table>";
: echo '<input type=submit value="删除">';
: echo '</form>';
: >?
: §这是del.php
: <?php
: $link=mysql_connect("localhost","root","test");
: mysql_select_db("mydb");
: $id=$_POST['del'];
: foreach($id as $ide){
: $data="delete from member_table where username=$ide";
: $result=mysql_query($data);
: if((mysql_affected_rows()==0) or (mysql_affected_rows==-1))
: {
: echo "没有找到纪录,或者删除时出错";
: exit;
: }
: else{
: echo "纪录已删除";
: }
: }
: mysql_close();
: ?>
我将语法改成 member.php
<?php
$data = "SELECT * FROM member_table";
$result = mysql_query($data);
echo '<form name="form" method="post" action="del.php">';
echo '<table width="700" border="1">' ;
while($row = mysql_fetch_
array($result))
{
echo "<tr>";
echo "<td><input type=\"checkbox\" name=\"del[]\" value=\"$row[1]\"
/></td>";
//这边的value可以打$row[1]或是$row[username],秀出来的值都是一样的
echo "<td>$row[1]</td>";
}
echo "</table>";
echo '<input type=submit value="删除">';
echo '</form>';
>?
--------------
del.php
--------------
<?php
$link=mysql_connect("localhost","root","test");
mysql_select_db("mydb");
$idArray=$_POST['del'];
foreach(
(array)$idArray as $username){
$sql = 'delete from member_table where username=
\''.$username.'\'';
if((mysql_affected_rows()==0) or (mysql_affected_rows==-1))
{
echo "没有找到纪录,或者删除时出错";
exit;
}
else{
echo "纪录已删除</br>";
echo "$sql</br>";
echo "$username";
}
}
mysql_close();
?>
--------------------
在member.php将 帐号为test2的checkbox打勾送出之後
del.php出现
纪录已删除
delete from member_table where username='test2'
test2
这边member.php正确将要删除的值送到del.php了
但是
资料表的纪录一样没有删除
但是如果把网页的 delete from member_table where username='test2'
这段sql语法贴近phpmyadmin的sql执行指令
又可以删除
已删除栏数: 1 (查询需时 0.0034 秒)
想请问这次问题出在哪边....好不容易可以送值了,却删不掉..
(泣)
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 125.231.208.76
1F:→ chenstin:看起来少了 05/14 10:01
2F:→ chenstin:mysql_query($sql,$link) or die(mysql_error($link)); 05/14 10:02
3F:→ chenstin:还有mysql_affected_rows==-1应该是 05/14 10:06
4F:→ chenstin:mysql_affected_rows()==-1 05/14 10:06
5F:→ chenstin:所以会恒false 导致都会跑到 "纪录已删除" 05/14 10:07
6F:→ ufly:感谢 chenstin ,可以正常删除资料了。感激不尽 05/14 11:21
<?php
$link=mysql_connect("localhost","root","test");
mysql_select_db("mydb");
$idArray=$_POST['del'];
foreach(
(array)$idArray as $username){
$sql = 'delete from member_table where username=
\''.$username.'\'';
$result = mysql_query($sql,$link) or die (mysql_error($link));
if((mysql_affected_rows()==0) or (mysql_affected_rows
()==-1))
{
echo "没有找到纪录,或者删除时出错";
exit;
}
else{
echo "纪录已删除</br>";
echo "$sql</br>";
echo "$username";
}
}
mysql_close();
?>
修改成红色部分就可以正常删除资料库资料了,感谢chenstin前辈
※ 编辑: ufly 来自: 125.231.208.76 (05/14 11:23)