2015-01-14 68 views
0

嗨,大家好我有这个问题。 我有一个while循环显示了表的值。现在我需要你可以删除其中的一个,如果它是错误的。 我只是不能运行这个代码,我不明白什么是错的。 这是我的PHP,我有问题。Php删除行onclick

while($row = mysql_fetch_array($res)) 
{ 

echo "<tr> 

    <td> ".$row['id']."</td> 
    <td> ".$row['val1']."</td> 

    <form action='' method='POST'> 
    <input type='submit' name='delete' value='".$row['id']."' /></td> 
    </form> 
    </tr>"; 

} 

if(isset($_POST['delete'])){ 


$user = $_POST['delete']; 
$delet_query = mysql_query("DELETE FROM table_name WHERE id = '$user' ") or die(mysql_error()); 

if($delet_query) { 
echo "Delete success!"; 

} 
} 

为什么不工作?非常感谢! 我需要用户可以删除该行。

+0

PHP有什么样的错误显示给你? – bcesars

+0

你的代码似乎在显示列表后删除该行。把它放在前面。并在$ _POST ['delete']周围添加一个intval()以防止注入。那么,错误是什么? – Spoke44

+0

@ Spoke44它无所谓,因为if语句 –

回答

1

您的HTML无效。还有就是你的表格前,没有<td>

<td> ".$row['val1']."</td> 

     <----missing <td> 
    <form action='' method='POST'> 
    <input type='submit' name='delete' value='".$row['id']."' /></td> 

所以在技术方面,你的形式是自由漂浮soemwhere表内,行内,而不是在细胞内。

另外,您的SQL容易受到injection attacks的影响。

1

这可能是更好地把你的价值在一个隐藏字段,而不是依靠提交按钮的值:

echo "<tr> 

     <td> ".$row['id']."</td> 
     <td> ".$row['val1']."</td> 

     <td> 
      <form action='' method='POST'> 
       <input type='hidden' name='delete' value='".$row['id']."' /> 
       <input type='submit' value='".$row['id']."' /> 
      </form> 
     </td> 
    </tr>"; 

还要注意的失踪开放<td>,以及相应的结束</td>在外面的地点。

+0

继续不工作.. –

+0

@Andreaphp你有没有看过'$ _POST ['delete']'是否正在设置,如果它包括ID等? – mopo922

+0

我试着写回声“测试”;但我已经看到提交不会在if(isset($ _ POST ['delete'])){}} @ mopo922 –