这里是PHP新手
我有一个页面,它循环通过一个数据库并显示表的内容。
当按下delete按钮时,我想删除数据库中的条目。
现在,当按下按钮,页面转到delete.php时,我会一直得到未定义的索引:userid
这是第一页:
<?php
foreach($rows as $row){
$userid = $row['userid'];
$pName = $row['pName'];
$pDesc = $row['pDesc'];
$dDate = $row['dDate'];
?>
<div class="project-container">
<label>Project ID:</label>
<span><?php echo $userid; ?></span><br>
<label>Project Owner:</label>
<span><?php echo $pName; ?></span><br>
<label>Project Description:</label>
<span><?php echo $pDesc; ?> </span><br>
<label>Project Due Date:</label>
<span><?php echo $dDate; ?> </span><br>
<br>
<form action="#" method="GET">
<input type="submit" name="delete" value="Delete Project">
</form>
<form action="index.php">
<input type="submit" name="update" value="Update Project">
</form>
</div>
<br>
<br>
</div><br><br><?php } ?>
这里是delete.php:
include('connect.php');
$userid = $_GET['userid'];
echo $userid;
$sql = "DELETE FROM projecttable WHERE userid = '$userid'";
$conn->exec($sql);
感谢您的帮助
最佳答案
试试这个。它将在GET数组中发送一个名为userid的变量,该变量的userid值为delete.php:
<form action="delete.php" method="GET">
<input type="hidden" name="userid" value="<?php echo $userid; ?>">
<input type="submit" name="delete" value="Delete Project">
</form>
表单标记中的action属性将指示发送请求的位置,即delete.php脚本,该方法将告诉它使用GET数组,该数组基本上将键和值放在URL本身中。您也可以通过修改操作字段而不是使用输入字段来执行此操作。我只是喜欢这种方式的可读性。
因为输入字段通常是可见的,所以使用隐藏字段可以防止它显示在网页上,但是在代码中很容易管理。输入字段的name属性确定GET数组中键的名称,value属性确定GET数组中元素的值。因此,在PHP脚本中,它最终成为$GET['name\u attributue']=value\u属性。
举个例子。如果将form method属性更改为POST,则PHP脚本将需要使用$POST数组而不是$GET数组。