我有一部分使用MySQL查询动态生成的网页:
<table id="livePlayers" cellpadding="4" align="center">
<tr>
<th>First Name</th>
<th>Last Name</th>
<th>Phone number</th>
<th>Email Address</th>
<th>Rating</th>
</tr>
<?php
while ($currLine = @mysql_fetch_array($resultSet))
{
$phoneCount= "phone".$count;
$ratingCount= "rate".$count;
?>
<tr>
<td><?php echo $currLine[1]?></td>
<td><?php echo $currLine[2]?></td>
<td><input type="text" name="<?php echo $phoneCount ?>"></td>
<td><?php echo $currLine[0]?></td>
<td><input type="text" name="<?php echo $ratingCount ?>"></td>
</tr>
<?php
$count++;
}
?>
</table>
如您所见,2个字段为input type="text"
。一旦用户在这些字段中输入了条目,我就需要在单击“提交”时使用这些值更新数据库表。
但是,我不明白如何执行此操作,因为将动态生成字段name
。有没有办法用输入的值更新相应的行?
答案 0 :(得分:4)
不应动态生成输入的name
。而是使用常量。应该在输入的value
属性中设置该输入的动态值。
您输入的示例之一:
<input type="text" name="phone" value="<?php echo $phoneCount ?>" />
您可以使用$ _GET或$ _POST数组来检索值。假设您的表单使用POST方法,您可以执行以下操作:
$phone = $_POST['phone']; // the entered text for the phone field
现在您可以编写UPDATE mysql查询。
要同时更新多个行,请使用数组作为POST参数:
<input type="text" name="phone[]" value="<?php echo $phoneCount ?>" />
检索$_POST['phone']
将为您提供所有行的数组。
要标识每一行,您可以使用隐藏字段,如下所示:
<input type="hidden" name="id[]" value="<?php echo $id ?>" />
或者您将id用作所有其他输入字段的关联数组键:
<input type="text" name="phone[<?php echo $id ?>]" value="<?php echo $phoneCount ?>" />
答案 1 :(得分:3)
您必须为页面创建一个表单,以便将用户更改提交回PHP,并使您的PHP页面接受表单输入(POST),然后解析该输入,并使用该数据更新您的数据库。 / p>
答案 2 :(得分:3)
@darkie
由于您要检索表中的所有记录并需要更新它们,您可能必须使用循环来使用PHP更新每个记录。
如何获取值?
P.S: - 我相信你应该在“value”属性中回显phoneCount和ratingCoung。
答案 3 :(得分:2)
注意:name
应该是静态的,你应该将值存储在value
属性中,否则你是如何获得输入字段的值的?
否则有替代方案
使用
使用extract($_POST)
以便您获得关联数组,其中包含name
字段的键和value
字段的值
答案 4 :(得分:2)
使用动态名称不是一个好习惯。话虽如此;它可以做到。
我会用“Phone _”
前缀这些名称<input type="text" name="Phone_<?php echo $phoneCount ?>">
您现在可以循环播放所有Post变量并选出以“Phone _”开头的所有人
你这样循环:
foreach($_POST as $name => $value) {
print "$name : $value<br>";
}