Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/255.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用jQuery动态添加表单元素并使用PHP提交到数据库_Php_Jquery - Fatal编程技术网

使用jQuery动态添加表单元素并使用PHP提交到数据库

使用jQuery动态添加表单元素并使用PHP提交到数据库,php,jquery,Php,Jquery,我对jQuery比较陌生,在使用jQuery动态添加表单元素,然后使用PHP迭代这些表单元素以添加到数据库中时遇到问题 基本上,我拥有的是一个表,单击一个div,就会添加一个包含表单元素的新表行。代码如下所示: $('.addRow1').click(function() { <?php $count++; ?> $('.mainTable > tbody:last').one().append('<tr><td>Chronic

我对jQuery比较陌生,在使用jQuery动态添加表单元素,然后使用PHP迭代这些表单元素以添加到数据库中时遇到问题

基本上,我拥有的是一个表,单击一个
div
,就会添加一个包含表单元素的新表行。代码如下所示:

$('.addRow1').click(function() {
      <?php $count++; ?>
       $('.mainTable > tbody:last').one().append('<tr><td>Chronic Pain Referral</td><td>Chronic referral</td><td><input type="hidden" name="count" value="<?php echo $count; ?>"><textarea name="notes"></textarea></td></tr>');
    });
var cnt = $('.mainTable > tbody > tr').length + 1;
var row = '<tr><td>Chronic Pain Referral</td><td>Chronic referral</td><td><input type="hidden" name="count" value="' + cnt + '"><textarea name="notes"></textarea></td></tr>';
$('.addRow1')。单击(函数(){

$('.mainTable>tbody:last').one().append('Chronic Pain referral Chronic referral据我所知,PHP脚本在服务器端执行,代码
不会在循环中执行。它将在服务器端执行一次。您必须以另一种方式执行,在PHP脚本中的列表上迭代,并相应地附加事件

我没有PHP技能,因此无法提供代码示例


希望这会有所帮助。

据我所知,PHP脚本在服务器端执行,代码
不会在循环中执行。它将在服务器端执行一次。您必须以另一种方式执行,在PHP脚本中的列表上迭代,并相应地附加事件

我没有PHP技能,因此无法提供代码示例


希望这有帮助。

PHP代码在发送到浏览器之前只在服务器端执行,您需要使用javascript获取行数

试着这样做:

$('.addRow1').click(function() {
      <?php $count++; ?>
       $('.mainTable > tbody:last').one().append('<tr><td>Chronic Pain Referral</td><td>Chronic referral</td><td><input type="hidden" name="count" value="<?php echo $count; ?>"><textarea name="notes"></textarea></td></tr>');
    });
var cnt = $('.mainTable > tbody > tr').length + 1;
var row = '<tr><td>Chronic Pain Referral</td><td>Chronic referral</td><td><input type="hidden" name="count" value="' + cnt + '"><textarea name="notes"></textarea></td></tr>';
var cnt=$('.mainTable>tbody>tr')。长度+1;
var行=‘慢性疼痛转诊慢性转诊’;
现在,如果要同时提交所有行,则需要在每行的字段名中添加[]。这会通知PHP数据是一个数组。这可能是使用foreach时出现错误的原因,而不是向其传递数组

<textarea name="notes[]"></textarea>

然后,当您使用PHP提交表单时,您不需要计数,只需执行以下操作:

<?php
if (!empty($_POST['notes'])) {
  foreach ($_POST['notes'] as $note) {
     ...
  }
}
?>

阿德里安方式的一个例子:

<textarea name="notes_"' + cnt + '"></textarea>

PHP代码在发送到浏览器之前只在服务器端执行,您需要使用javascript获取行数

试着这样做:

$('.addRow1').click(function() {
      <?php $count++; ?>
       $('.mainTable > tbody:last').one().append('<tr><td>Chronic Pain Referral</td><td>Chronic referral</td><td><input type="hidden" name="count" value="<?php echo $count; ?>"><textarea name="notes"></textarea></td></tr>');
    });
var cnt = $('.mainTable > tbody > tr').length + 1;
var row = '<tr><td>Chronic Pain Referral</td><td>Chronic referral</td><td><input type="hidden" name="count" value="' + cnt + '"><textarea name="notes"></textarea></td></tr>';
var cnt=$('.mainTable>tbody>tr')。长度+1;
var行=‘慢性疼痛转诊慢性转诊’;
现在,如果要同时提交所有行,则需要在每行的字段名中添加[]。这会通知PHP数据是一个数组。这可能是使用foreach时出现错误的原因,而不是向其传递数组

<textarea name="notes[]"></textarea>

然后,当您使用PHP提交表单时,您不需要计数,只需执行以下操作:

<?php
if (!empty($_POST['notes'])) {
  foreach ($_POST['notes'] as $note) {
     ...
  }
}
?>

阿德里安方式的一个例子:

<textarea name="notes_"' + cnt + '"></textarea>
在页面发送到客户端之前,PHP代码
在服务器上执行;当JavaScript函数启动时,它不会执行。您需要使用JavaScript变量进行增量字段计数

此外,在表单中,只有名为“count”且值递增的字段的重复实例,以及名为“notes”的文本区域的实例。“count”字段将毫无意义,因为您无法将它们与文本区域关联(表单不保证按任何特定顺序提交表单字段)

您可能希望将计数附加到动态字段上的字段名,以便能够知道哪些字段在一行中一起。然后,您可以在表单处理程序中迭代已发布的字段,并使用字段名末尾的索引将相关字段匹配在一起。我已经做过很多次了,这有点棘手,但有点困难B绝对可行

另一种解决方案是将文本区域命名为“notes[]”,而不是“notes”。然后,在表单处理程序中,
$\u REQUEST['notes']
将是所有“notes”的数组表单中的字段。如果只有一个要处理的动态字段,则此操作很好;但是,如果每个动态添加的行都有多个相互关联的字段,则无法分辨哪些字段在一行中放在一起。在这种情况下,您必须将索引附加到表单字段名。

PHP代码
在服务器,在页面发送到客户端之前;当JavaScript函数启动时,它不会执行。您需要使用JavaScript变量进行增量字段计数

此外,在表单中,只有名为“count”且值递增的字段的重复实例,以及名为“notes”的文本区域的实例。“count”字段将毫无意义,因为您无法将它们与文本区域关联(表单不保证按任何特定顺序提交表单字段)

您可能希望将计数附加到动态字段上的字段名,以便能够知道哪些字段在一行中一起。然后,您可以在表单处理程序中迭代已发布的字段,并使用字段名末尾的索引将相关字段匹配在一起。我已经做过很多次了,这有点棘手,但有点困难B绝对可行


另一种解决方案是将文本区域命名为“notes[]”,而不是“notes”。然后,在表单处理程序中,
$\u REQUEST['notes']
将是所有“notes”的数组表单中的字段。如果只有一个要处理的动态字段,这很好;但是,如果每个动态添加的行都有多个相互关联的字段,您将无法分辨哪些字段在一行中放在一起。在这种情况下,您必须将索引附加到表单字段名。

JS/jQuery是客户端,PHP是服务器side.基本上
只在服务器上运行一次。了解
HTTP
协议:jQuery如何执行
HTTP
请求以及PHP如何处理它们[并相应地生成
HTTP
响应].JS/jQuery是客户端,PHP是服务器端。基本上,
只在服务器上运行一次。了解
HTTP
协议:jQuery如何执行
HTTP
请求,以及PHP如何处理它们[和]