php MySQL 更新表 textarea html

Posted

技术标签:

【中文标题】php MySQL 更新表 textarea html【英文标题】:Php MySQL update table textarea html 【发布时间】:2016-12-03 23:30:45 【问题描述】:

我有一个表,其中 ResultHRM 列包含一个文本区域,用户可以在其中编写 cmets。我想知道,当我单击提交按钮时,如何将带有 textarea 内容的正确行更新到我的 mysql 表 NContrib 中? 我读到 textarea 不能有 value 属性。

我的 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>

【问题讨论】:

textarea 有一个名字在 php 中你可以得到 $_POST['your_text_area_name'] 值.... 当你想显示你的内容时,只需把它放在 【参考方案1】:

1) 在&lt;textarea&gt;&lt;/textarea&gt; 之间使用$rowNcontrib['ResultHRM'] 来显示value

2) 也使用 have use name='ResultHRM[]' 这将为您提供 arraytextarea 值,您已更新但您将无法跟踪哪个值属于哪个 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

【讨论】:

非常感谢您的帮助。我只有一个关于身份证的问题。当我提交表单时,我可以通过以下方式轻松获取 textarea 内容:$textarea=$_POST['ResultHRM'];,但是对于 id,我该怎么办?在我看来,我是这样做的:foreach ($textarea as $value) $sql='UPDATE TABLE SET ResultHRM='.$textarea.' where id=??' 我想我明白了,我确实喜欢这样来获取我的 id:$textarea=$_POST['ResultHRM']; foreach(array_values($textarea) as $i =&gt; $value) $j=$i+1; echo 'UPDATE TABLE SET ResultHRM="'.$value.'" where ID='.$j.'&lt;br/&gt; '; 【参考方案2】:

这里有几点我想提一下:

    如果ResultHRM 字段将在表单中保存来自 textarea 的值,我建议您更改数据类型。目前,它的varchar(60)。我建议,应该是text。 从数据库中获取数据后,您将其显示在表结构中。我建议您添加 textarea 并用现有值填充它。假设您命名为 textarea ResultHRM_ta 一旦您按照第 2 点操作并提交表单,您就可以在 SaveValidation.php 上的 $_POST['ResultHRM_ta'] 中获得 textarea 值。 将值保存在数据库中。

请注意,我已经提到了您需要遵循的流程的非常基本的大纲。您必须自行处理安全措施和编码标准。

【讨论】:

【参考方案3】:

要解决这个问题,您可以使用代码调用 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>

【讨论】:

以上是关于php MySQL 更新表 textarea html的主要内容,如果未能解决你的问题,请参考以下文章

php将textarea内容上传到mysql表中

从 PHP 将 textarea 元素插入 MySQL

如何在 textarea、PHP 到 MySQL 上允许 html 标签?

注销PHP / MySql后如何更新表

使用PHP逐行读取textarea中的单词并插入到mySQL

PHP Mysql获取表上次更新时间和日期[重复]