2011-06-03 41 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

相關問題