2013-08-25 47 views
1

我有一个表,它存储了一系列项目的类别(例如衣服,电子等)。我写了一个表格,列出了数据库中的所有类别,并给了用户删除选项他们如他所愿。错误的记录正在删除

问题:

当我试图删除显示的第一条记录,最后一条记录显示,当我试图删除显示的其他记录(例如第2不会出现被删除,而不是第一。问题,第三,第四,等等)

实施例:

+---------------------+ 
|  Category  | 
----------------------- 
| Clothes | Delete | <---Tried to delete this 
----------------------- 
| Computers| Delete | 
----------------------- 
| Games | Delete | <--This gets deleted 
----------------------- 

我的窗体/处理代码:

后续代码var_dump($ _ POST)

array(2) { ["delcatid"]=> string(1) "3" ["delcatsubmit"]=> string(6) "Delete" } Category Deleted 

问题的

<?php 
if(!isset($_SESSION)) 
{ 
    session_start(); 
} 

if($_SESSION['auth']!=="yes") 
{ 
    echo"You are not authorised to view this page. Please login <a href='login.php'>here</a>"; 
    exit(); 
} 

?> 

<?php 

if($_POST['delcatsubmit']=="Delete") 
{ 
    include("cxn.inc"); 
    var_dump($_POST); 
    $id=$_SESSION['BizID']; 
    $catid=$_POST['delcatid']; 
    $delcat=$cxn->prepare("DELETE FROM `testdb`.`itemcat` WHERE `BusinessID`=:id AND `ID`=:catid"); 
    $delcat->bindValue(":id",$id); 
    $delcat->bindValue(":catid",$catid); 
    $delcat->execute(); 
    echo"Category Deleted"; 
} 

?> 
<!DOCTYPE HTML> 
<html> 
<head> 
</head> 
<body> 
<?php 
    include("cxn.inc"); 
    $id=$_SESSION['BizID']; 
    $viewcat=$cxn->prepare("SELECT * FROM `testdb`.`itemcat` WHERE `BusinessID`= :id"); 
    $viewcat->bindValue(":id",$id); 
    $viewcat->execute(); 
    echo'<form name="delcategory" id="delcategory" action="delcategory.php" method="POST" >'; 
     echo"<table border='1'>"; 
     echo"<tr>"; 
     echo"<td colspan='2'>"; 
     echo"Category"; 
     echo"</td>"; 
     echo"</tr>"; 
    while($getcat=$viewcat->fetch(PDO::FETCH_ASSOC)) 
    { 

     echo"<tr>"; 
     echo"<td>"; 
     $cat=$getcat['ItemCat']; 
     $delcatid=$getcat['ID']; 
     echo"$cat"; 
     echo"</td>"; 
     echo"<td>"; 
     echo"<input type='hidden' name='delcatid' id='delcatid' value='$delcatid' />"; 
     echo"<input type='submit' name='delcatsubmit' id='delcatsubmit' value='Delete' />"; 
     echo"</td>"; 
     echo"</tr>"; 

    } 
    echo"</form>"; 
    echo"</table>"; 
?> 
</body> 
</html> 

结果:

1.为什么会显示被删除的最后一个项目的ID /返回,当我试图删除的第一个项目?

2.我得到的消息:

PHP公告:未定义指数:delcatsubmit

当我删除category.I GETHER,这是由于$ _ POST [ 'delcatsubmit']未在所述第一表单被加载的时间。是否有任何方法可以纠正/删除通知,而不是用@来抑制它?

我很感激任何意见和建议

谢谢!

P.S.我正在使用MYSQL和UNIFORM SERVER

回答

0

解决了它。

我在窗体中的每一行使用了相同的名称属性,所以它们被覆盖,它使用最后一个。

我做了什么来解决它是围绕提交按钮的每一个迭代包装一个新的形式,因为它正在循环。希望这可以帮助任何遇到同样问题的人。

<!DOCTYPE HTML> 
<html> 
<head> 
</head> 
<body> 
<?php 
    include("cxn.inc"); 
    $id=$_SESSION['BizID']; 
    $viewcat=$cxn->prepare("SELECT * FROM `testdb`.`itemcat` WHERE `BusinessID`= :id"); 
    $viewcat->bindValue(":id",$id); 
    $viewcat->execute(); 

     echo"<table border='1'>"; 
     echo"<tr>"; 
     echo"<td colspan='2'>"; 
     echo"Category"; 
     echo"</td>"; 
     echo"</tr>"; 
    while($getcat=$viewcat->fetch(PDO::FETCH_ASSOC)) 
    { 

     echo"<tr>"; 
     echo"<td>"; 
     $cat=$getcat['ItemCat']; 
     $delcatid=$getcat['ID']; 
     echo"$cat"; 
     echo"</td>"; 
     echo"<td>"; 
     echo"$delcatid"; 
     echo"</td>"; 
     echo"<td>"; 
     echo'<form name="delcategory" id="delcategory" action="delcategory.php" method="POST" >'; 
     echo"<input type='hidden' name='delcatid' id='delcatid' value='$delcatid' />"; 
     echo"<input type='submit' name='delcatsubmit' id='delcatsubmit' value='Delete' />"; 
     echo"</form>"; 
     echo"</td>"; 
     echo"</tr>"; 

    } 

    echo"</table>"; 
?> 
</body> 
</html>