如何从动态创建的网页更新数据库? PHP MySQL

时间:2011-06-03 16:47:39

标签: php mysql

我有一部分使用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。有没有办法用输入的值更新相应的行?

5 个答案:

答案 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']将为您提供所有行的数组。

更新2

要标识每一行,您可以使用隐藏字段,如下所示:

<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更新每个记录。

如何获取值?

  • 使用计数器,并为输入字段命名,如'phone1'和'rating1'等等
  • 附上所有&lt; input&gt;带有表格标签。
  • 使用OnSubmit()操作,并检索所有值并通过JS或JQuery创建匹配的字符串。 例如:phone1:123 rank1:1 phone2:456 rank2:2,组成一个字符串:123 :: 1 | 456 :: 2 etc
  • 将字符串发送到PHP后端 - 拆分字符串并启动循环
  • 使用主键,使用UPDATE更新它们。

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>";
}