2016-07-29 80 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>