【问题标题】:Send array values in PHP form以 PHP 形式发送数组值
【发布时间】:2018-05-27 23:31:09
【问题描述】:

我有一个带有嵌入式 PHP 代码的 HTML 表单,它为数组中包含的每个值创建一个复选框。就像这样:

<?php 
  $rows = array_map( 'str_getcsv', file( 'file.csv' ) );
  $header = array_shift( $rows );
  foreach ( $rows as $row ) {
    echo '<input type="checkbox" id="'.$row[0].'" name="'.$row[0].'">
          <label for="'.$row[0].'">'.$row[0].'</label>
          <input type="number" name="'.$row[0].'" placeholder="Some text">';
  }
?>

现在,我想使用此代码发送此表单,该代码已插入另一个 PHP 文件:

<?php
  if( isset( $_POST ) == true && empty( $_POST ) == false ) {
    $account = $_POST['account'];
    $investment = $_POST['row[0]'];
    $password = $_POST['password'];
    $formcontent=" Account: $account \n $row[0]: $investment \n Password: $password";
    $recipient = "my@email.com";
    $subject = "My Form";
    $mailheader = "From: My Form <my@form.com>";
    mail($recipient, $subject, $formcontent, $mailheader) or die("Error!");
    echo "Some text";
  } 
?>

但它不起作用。当您单击提交按钮时,表单什么也不做。

我已经用纯 HTML 代码成功地检查了它,所以我想我在使用 PHP 时犯了一个错误。

对于那些感兴趣的人,这里是我的表单的链接: Example

编辑:正如@DavidJorHpan 所指出的,我已经删除了preventDefault,但我仍然卡住了。我无法让我的 form.php 将 $row[0] 发送到我的电子邮件。

【问题讨论】:

  • 错误代码是什么?现在你再解释一下?
  • 你能告诉我们你得到的错误吗?
  • @ÖzgürCanKaragöz 我已经更新了我的问题。感谢您的帮助。
  • @JakeSylvestre 请参阅评论 #3。
  • 您使用的名称属性错误。像这样使用name="operative[]" 然后使用value 属性设置实际值

标签: php html arrays forms


【解决方案1】:

因为您使用preventDefault,所以在您编写提交表单之前它永远不会提交表单

$("button").click(function(e) {
  e.preventDefault();
});

您可以删除该代码或添加类似的代码 $('form').submit();

【讨论】:

  • 也许我没有理解你的意思,但我没有使用preventDefault
  • 你在你的index.js中使用了
  • 它有效,但我仍然卡住了。请检查新帖子编辑。谢谢。
【解决方案2】:

正如 David JorHpan 在第二个答案中指出的那样,您必须从按钮单击事件中删除 preventDefault() 。这会阻止表单被提交。

对于每个复选框,您都有一个相应的数字输入字段。尽管可能,但在“名称”属性值中包含空格并不是一个好习惯。尝试用破折号或下划线替换这些空格。例如,您可以执行以下操作:

name="'.str_replace(' ','_',$row[0]).'"

同样可以对 id 属性值进行。

您的表单提交检查应该可以工作,但如果您按以下方式更改它会更有意义:

if($_SERVER['REQUEST_METHOD'] == 'POST')
{
   // process here
}

完成这些更改后,尝试加载页面并查看它的运行情况。

【讨论】:

  • 它有效,但我仍然卡住了。请检查新帖子编辑。谢谢。
  • @ÁngelNarciso 请在输入字段中修正您的姓名属性。您是要从这些复选框中获取多个值还是只获取一个值?
猜你喜欢
  • 2013-11-22
  • 1970-01-01
  • 2013-10-02
  • 1970-01-01
  • 2011-03-30
  • 2018-08-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多