我的PHP代码存在问题。我有一个包含数据库数据的表。在表中我有一个包含name属性的输入。当我已经从数据库加载数据时,属性名称具有相同的值。所以,如果我想发布它们,只需要输入最后一个输入名称。这是我的代码:
<html>
<head>
<title>Table PHP</title>
</head>
<body>
<form action="execute.php" method="POST">
<table>
<tr>
<th>No.</th>
<th>Registration Number</th>
<th>Customer Name</th>
<th>Action</th>
</tr>
<?php
include "connect.php";
$sql = mysql_query("SELECT numreg,name FROM registration WHERE (numreg NOT IN(SELECT validation FROM tablevalidation)) ");
$no = 1;
while($result = mysql_fetch_array($sql)){
echo "
<tr>
<td>$no.</td>
<td><input type='hidden' name='numreg' value='$result[numreg]' />$result[numreg]</td>
<td>$result[name]</td>
<td><input type='submit' name='validation' value='Validation' /></td>
</tr>";
$no++;
}
?>
</table>
</form>
</body>
</html>
使用上面的代码,input name ='numreg'将为每个输入标记生成相同的值。因此,如果我在表单中使用POST方法,即使我选择了第一条记录,也只会执行最后一条记录。我怀疑这是因为输入标签属性名称具有相同的值。那么,我如何在输入标签中获取不同的属性名称来解决我的问题?请帮忙。
答案 0 :(得分:0)
使用以下代码。您需要将numreg定义为数组,以便显示post中的所有记录。将name='numreg'
更改为name='numreg_".$no."'
,以便为所有人定义您的唯一numreg。
<html>
<head>
<title>Table PHP</title>
</head>
<body>
<form action="execute.php" method="POST">
<table>
<tr>
<th>No.</th>
<th>Registration Number</th>
<th>Customer Name</th>
<th>Action</th>
</tr>
<?php
include "connect.php";
$sql = mysql_query("SELECT numreg,name FROM registration WHERE (numreg NOT IN(SELECT validation FROM tablevalidation)) ");
$no = 1;
while($result = mysql_fetch_array($sql)){
echo "
<tr>
<td>$no.</td>
**<td><input type='hidden' name='numreg_".$no."' value='$result[numreg]' />$result[numreg]</td>**
<td>$result[name]</td>
<td><input type='submit' name='validation' value='Validation' /></td>
</tr>";
$no++;
}
?>
</table>
**<input type='hidden' id='totalRecords' name='totalRecords' value='<?php echo $no; ?>' />**
</form>
</body>
</html>
<?php
if($_POST['validation'])
{
for($i=1;$i<=$_POST['totalRecords'];$i++)
{
**echo $_POST['numreg_$i']."<br>";**
}
}
?>