2011-06-03 132 views
1

我有一个使用MySQL查询动态生成的网页的一部分:如何从动态创建的网页更新数据库? PHP 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将是动态生成的。有没有办法用输入的值更新相应的行?

+3

'name'应该是静态的,应该值存储在'value' attibute – diEcho 2011-06-03 16:51:43

回答

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参数:

​​

检索$_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 ?>" /> 
+0

最后一部分是我的实际问题是什么。如果表中有100行,并且每行都有'',那么如何使用单个“Submit”按钮更新所有100行?或者我需要为每一行提交一个提交按钮?这将是一个肮脏的修复更新所有行 – 2011-06-03 17:00:56

+0

您可以使用一个数组作为POST参数。看到我更新的答案。 – Alp 2011-06-03 17:05:27

+0

另一个问题,更新显然需要从页面的主键,在这种情况下,电子邮件地址字段。考虑到该表是动态生成的100行的类型 – 2011-06-03 17:08:50

3

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

2

注意:name应该是静态的,您应该将该值存储在value属性中,否则u如何获取该输入字段的值?

否则有另一种方法是使用 使用 这样extract($_POST),你会得到关联数组value场的name领域的key和value

+0

[参考资料](http://php.net/manual/en/function.extract.php) – diEcho 2011-06-03 16:56:47

3

@darkie

如你检索所有记录从一个表中并且需要更新它们,您可能必须使用循环为每个记录更新使用PHP。

如何获取值?

  • 使用计数器,并像“PHONE1”和“额定值1”等
  • 附上所有的<输入>与形式标签输入字段提供姓名。
  • 使用OnSubmit()操作,并检索所有值并通过JS或JQuery创建匹配的字符串。 例如:phone1:123 rank1:1 phone2:456 rank2:2,创建一个字符串,例如:123 :: 1 | 456 :: 2等
  • 将字符串发送到PHP后端 - 拆分字符串并启动循环
  • 使用您的主键,使用UPDATE更新它们。

P.S: - 我相信你应该在“value”属性中回显phoneCount和ratingCoung。

2

使用动态名称不是一个好习惯。话虽如此;可以办到。

我会前缀与“Phone_”

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

的名字。您现在可以循环中的所有邮政变量,并挑选出大家的是,与“Phone_”开始

你循环是这样的:

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

谢谢。在不使用动态名称的情况下实现相同目标的最佳方法是什么? – 2011-06-03 17:14:24