2016-07-29 79 views
1

我有一個表,其中ResultHRM列包含一個textarea用戶可以寫評論。我想知道,當我點擊提交按鈕時,如何更新正確的行與textarea內容到我的MySQL表NContrib? 我讀過textarea不能有一個值屬性。Php MySQL更新表textarea html

我的表NContrib具有以下結構:

+-------------------+--------------+------+-----+---------+----------------+ 
| Field    | Type   | Null | Key | Default | Extra   | 
+-------------------+--------------+------+-----+---------+----------------+ 
| IdVariantNContrib | mediumint(9) | NO | PRI | NULL | auto_increment | 
| ID    | varchar(30) | YES |  | NULL |    | 
| Reference   | varchar(20) | YES |  | NULL |    | 
| ResultHRM   | varchar(60) | YES |  | NULL |    | 
+-------------------+--------------+------+-----+---------+----------------+ 

在我的PHP頁面,我顯示一個類似此表:

<form method='POST' action='SaveValidation.php'> 
    <?php 
    require_once 'config.php'; //database connection 
    $sql='SELECT ID, Reference, ResultHRM FROM NContrib'; 
    $PerformSql=mysqli_query($conn,$sql) or die(mysqli_error($conn)); 
    ?> 
<table style="width:100%" border='1px' CELLSPACING='0' cellpadding='2'> 
    <tr> 
    <th>&nbsp;ID&nbsp;</th> 
    <th>&nbsp;Reference&nbsp;</th> 
    <th>&nbsp;ResultsHRM&nbsp;</th> 
    </tr> 
<?php 
while($rowNcontrib = mysqli_fetch_assoc($PerformSql)) { 
    echo "<tr><td>&nbsp;".$rowNcontrib["ID"]."&nbsp;</td><td>&nbsp;".$rowNcontrib["Reference"]."&nbsp;</td><td><textarea name='ResultHRM[]' id='ResultHRM[]' cols='30' rows='1'></textarea></td></tr>"; 
} 
?> 
</table> 
<input type="submit" name="sendEcht" value="Submit" /> 
</form> 
+1

文本區域有一個名字在PHP中,你可以得到$ _ POST [「your_text_area_name」]值.... –

+1

當你想顯示你的內容只是把它放在

回答

0

1)使用$rowNcontrib['ResultHRM']在beetween <textarea></textarea>顯示value

2)也使用已經使用name='ResultHRM[]'這會給你,你已經更新了textareaarray值,但其值屬於你不會得到軌道ID。所以name='ResultHRM[$id]'。這裏id應該是row

所以ID代碼應該是

while($rowNcontrib = mysqli_fetch_assoc($PerformSql)) { 
     $id = $rowNcontrib["ID"]; 
     echo "<tr><td>&nbsp;".$rowNcontrib["ID"]."&nbsp;</td><td>&nbsp;".$rowNcontrib["Reference"]."&nbsp;</td><td><textarea name='ResultHRM[$id]' id='ResultHRM[]' cols='30' rows='1'>".$rowNcontrib['ResultHRM ']."</textarea></td></tr>"; 
    } 

現在頁SaveValidation.php檢查此

if(isset($_POST['sendEcht'])){ 
echo "<pre>";print_r($_POST);die;} 

這會告訴你是這樣的

Array 
(
    [ResultHRM] => Array 
     (
      [3] => hello its test 
      [11] => test string 
      [10] => 

     ) 

    [sendEcht] => Submit 
) 

// here 3,11, 10 are my id's of table in your case it will be the id's of your table then you can easily update your table `ResultHRM` field 
+0

非常感謝您的幫助。我只有一個關於ID的問題。當我提交表單時,我可以通過執行以下命令輕鬆獲取textarea內容:'$ textarea = $ _ POST ['ResultHRM'];',但是對於id,我該怎麼辦?在我看來,我是這樣做的:'foreach($ textarea as $ value) {$ sql ='UPDATE TABLE SET ResultHRM ='。$ textarea。'其中id = ??'}' – user979974

+0

我想我明白了,我喜歡那樣做我的id:'$ textarea = $ _ POST ['ResultHRM']; foreach(array_values($ textarea)as $ i => $ value) { $ j = $ i + 1; echo'UPDATE TABLE SET ResultHRM =''。$ value。'「其中ID ='。$ j'。
'; }' – user979974

0

有,我想在這裏提到的某些點:

  1. 如果ResultHRM字段要在形式上保留來自textarea的值,我會建議tha你改變數據類型。目前,其varchar(60)。我建議,它應該是text
  2. 從數據庫中獲取數據後,將顯示在表結構中。我建議,你添加textarea並用現有值填充它。假設您命名爲textarea ResultHRM_ta
  3. 一旦您關注第2點並提交表單,您可以在$_POST['ResultHRM_ta']SaveValidation.php處獲得textarea值。
  4. 將值保存在數據庫中。

請注意,我已經提到了您需要遵循的流程的基本概要。您必須自行處理安全措施和編碼標準。

0

解決這個問題,您可以使用代碼調用AJAX請求,並在javascript方法中爲每個請求傳遞id。

,並在HTML代碼中,你可以調用每個錶行的方法如下:

<table style="width:100%" border='1px' CELLSPACING='0' cellpadding='2'> 
    <tr> 
    <th>&nbsp;ID&nbsp;</th> 
    <th>&nbsp;Reference&nbsp;</th> 
    <th>&nbsp;ResultsHRM&nbsp;</th> 
    </tr> 
<?php 
while($rowNcontrib = mysqli_fetch_assoc($PerformSql)) { 
    echo "<tr><td>&nbsp;".$rowNcontrib["ID"]."&nbsp;</td><td>&nbsp;".$rowNcontrib["Reference"]."&nbsp;</td><td><textarea name='ResultHRM' id='ResultHRM' cols='30' rows='1'></textarea></td><td><button type='button' onclick='update(".$rowNcontrib["ID"].")'">Update</button>; 
} 
?> 
</table>