我有一个表格,其中ResultHRM列包含一个textarea,用户可以在其中编写注释。我想知道,当我点击提交按钮时,如何将textarea内容的正确行更新到我的MySQL表NContrib中? 我读到textarea不能有值属性。
我的表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> ID </th>
<th> Reference </th>
<th> ResultsHRM </th>
</tr>
<?php
while($rowNcontrib = mysqli_fetch_assoc($PerformSql)) {
echo "<tr><td> ".$rowNcontrib["ID"]." </td><td> ".$rowNcontrib["Reference"]." </td><td><textarea name='ResultHRM[]' id='ResultHRM[]' cols='30' rows='1'></textarea></td></tr>";
}
?>
</table>
<input type="submit" name="sendEcht" value="Submit" />
</form>
答案 0 :(得分:0)
我想在此提及一些观点:
ResultHRM
字段将保留表单中textarea的值,我建议您更改数据类型。目前,它的varchar(60)
。我建议,它应该是text
。ResultHRM_ta
$_POST['ResultHRM_ta']
上的SaveValidation.php
中获得textarea值。请注意,我已经提到了您需要遵循的流程的基本大纲。您必须自己处理安全措施和编码标准。
答案 1 :(得分:0)
1)在$rowNcontrib['ResultHRM']
之间使用<textarea></textarea>
来显示value
2)另外使用name='ResultHRM[]'
这将为您提供已更新的array
textarea
个值但您无法跟踪哪个值属于哪个{{1} }}。所以ID
。此处name='ResultHRM[$id]'
应为id
所以你的代码应该是
像
row
现在在页面 while($rowNcontrib = mysqli_fetch_assoc($PerformSql)) {
$id = $rowNcontrib["ID"];
echo "<tr><td> ".$rowNcontrib["ID"]." </td><td> ".$rowNcontrib["Reference"]." </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;}
答案 2 :(得分:0)
要解决此问题,您可以使用代码调用AJAX请求,并在javascript方法中为每个请求传递id。
并且在html代码中你可以在每个表行中调用方法如下:
<table style="width:100%" border='1px' CELLSPACING='0' cellpadding='2'>
<tr>
<th> ID </th>
<th> Reference </th>
<th> ResultsHRM </th>
</tr>
<?php
while($rowNcontrib = mysqli_fetch_assoc($PerformSql)) {
echo "<tr><td> ".$rowNcontrib["ID"]." </td><td> ".$rowNcontrib["Reference"]." </td><td><textarea name='ResultHRM' id='ResultHRM' cols='30' rows='1'></textarea></td><td><button type='button' onclick='update(".$rowNcontrib["ID"].")'">Update</button>;
}
?>
</table>