php
<table border="1px" cellpadding="0" cellspacing="0"> <tr align="center"> <td>id</td> <td>视频类型</td> <td>视频名称</td> <td>视频简介</td> </tr> <?php $sql = mysql_query("SELECT * FROM wjyl_content1 "); while($row=mysql_fetch_array($sql)){ ?> <tr> <td><?php echo @$row[content_id]?></td> <td><?php echo @$row[content_leixing]?></td> <td><?php echo @$row[content_title]?></td> <td><?php echo @$row[content_comment]?></td> <td> <form action="#" method="get" name="form"> <input type="submit" value="删除" name="submit"> <?php $id=@$row['content_id']; if(@$_GET['submit']){ $sql=mysql_query("DELETE FROM wjyl_content1 WHERE `content_id`='$id'"); if($sql){ echo "<script>alert('删除成功!');history.back();</script>"; }else{ echo "<script>alert('删除失败!!');history.back();</script>"; } } ?> </form> </td> </tr> <?php } ?> </table>
删除id=11的内容时,就删除了id=9的内容了,,,求解???
你的代码在输出列表的过程中就去检测 是否有 if(@$_GET['submit']){
, 如果有就执行删除.$sql=mysql_query("DELETE FROM wjyl_content1 WHERE
content_id='$id'");
而你删除的时候是使用的当前查询结果集中的id, 所以你每点一次删除,就是把当前表里第一条删除掉.
正确的做法应该是下面这样的(注意SQL注入的问题,请根据自己所需要的参数类似对传入的值做相应的检测).
php
<?php if(@$_GET['submit']){ $id=@$_GET['id']; if(strlen($id) > 0){//如果内容不为空 $sql=mysql_query("DELETE FROM wjyl_content1 WHERE `content_id`='$id'"); if($sql){ echo "<script>alert('删除成功!');history.back();</script>"; }else{ echo "<script>alert('删除失败!!');history.back();</script>"; } exit(); } } ?> <table border="1px" cellpadding="0" cellspacing="0"> <tr align="center"> <td>id</td> <td>视频类型</td> <td>视频名称</td> <td>视频简介</td> </tr> <?php $sql = mysql_query("SELECT * FROM wjyl_content1 "); while($row=mysql_fetch_array($sql)){ ?> <tr> <td><?php echo @$row[content_id]?></td> <td><?php echo @$row[content_leixing]?></td> <td><?php echo @$row[content_title]?></td> <td><?php echo @$row[content_comment]?></td> <td> <form action="#" method="get" name="form"> <input type="hidden" name="id" value="<?php echo @$row[content_id]?>" /> <input type="submit" value="删除" name="submit" /> </form> </td> </tr> <?php } ?> </table>
逻辑上有问题。。。一行是一个form,不应该是一个删除键一个form,所以把form往前写应该就行了。。
建议:这种情况下一般不要想当然,先输出sql 语句看看,然后慢慢调试