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


How to update database from dynamically created webpage? 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"。一旦用户在这些字段中输入了条目,我需要在单击Submit时使用这些值更新数据库表。

然而,我不明白如何做到这一点,因为字段name是动态生成的。是否有任何方法可以用输入的值更新相应的行?

不应动态生成输入的name。而是使用常量。该输入的动态值应设置在输入的value属性中。

您的一个输入示例:

<input type="text" name="phone" value="<?php echo $phoneCount ?>" />

您可以使用$_GET或$_POST数组来检索值。假设您的表单使用POST方法,您可以执行以下操作:

$phone = $_POST['phone']; // the entered text for the phone field

现在您可以编写UPDATEmysql查询了。

更新

要同时更新多行,请使用数组作为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 ?>" />

您必须为页面创建一个表单,将用户更改提交回PHP,并使您的PHP页面接受表单输入(POST),然后解析该输入,并使用该数据更新数据库。

@darkie

由于您必须从表中检索所有记录并需要更新它们,因此您可能必须对每个记录使用循环才能使用PHP进行更新。

如何获取值?

  • 使用计数器,并为输入字段命名,如"phone1"answers"rating1"等等
  • 将<输入>带有表单标记
  • 使用OnSubmit()操作,检索所有值并通过JS或JQuery创建匹配的字符串。例如:phone1:123 rank1:1phone2:456 rank2:2,制作一个类似于:123::1|456::2等的字符串
  • 将字符串发送到PHP后端-拆分字符串并开始循环
  • 使用主键,使用UPDATE更新它们

p.S:-我认为你应该在"value"属性中呼应phoneCount和ratingCoung。

注意:name应该是静态的,你应该把值存储在value属性中,否则你是如何得到输入字段的值的??

否则还有其他选择使用使用extract($_POST),这样您将获得具有name字段的键和value字段的值的关联数组

使用动态名称不是一个好的做法。话虽如此;这是可以做到的。

我会名字前面加上"Phone_"

<input type="text" name="Phone_<?php echo $phoneCount ?>">

现在,您可以循环所有Post变量,并挑选出以"Phone_"开头的所有变量

你这样循环:

foreach($_POST as $name => $value) {
     print "$name : $value<br>";
}