繁体   English   中英

如何从动态表单中获取/发布 PHP 中的值,该表单会自动添加输入表单元素

[英]How to get/post the values in PHP from a dynamically form which add automatically input form elements

所以我的表单是基于 Total Person 动态创建表单的。 总人数是: 3

然后将出现 3 个表单,其中包含每个不同的“值名称”,例如:

<input name="lastname[1]">
<input name="lastname[2]">
<input name="lastname[3]">

但是如何在 $POST PHP 中调用每个输入的结果?

看这张图我的意思:

在此处输入图片说明

我需要在 php 中显示、获取、调用这些值。

所以它是打印,我需要发布这个数组的每个值以将结果作为邮件发送:

**[lastname] => Array ( [1] => MARVIN [2] => JIM [3] => ZOO**

例子:

Lastname 1: MARVIN
Lastname 2: JIM
Lastname 3: ZOO

以下代码将在变量后缀一个要计算的数字,for 循环将循环 0 到 4(总共 5 个字段),然后回显结果。

您必须调整代码以匹配其他表单变量。

<?php

for($i=0;$i<5;$i++){

    $var = 'lastname'.$i;

    if(isset($_POST[$var])){
        echo $_POST[$var];
    }
}

?>

<html>
<head>
<title></title>
</head>
<body>

<form action="<? $_SERVER['PHP_SELF'];?>" method="post">

    <input type="text" name="lastname1" />
    <input type="text" name="lastname2" />
    <input type="text" name="lastname3" />
    <input type="text" name="lastname4" />
    <input type="text" name="lastname5" />
    <input type="submit" value="test">
</form>
</body>
</html>

我看到您确实获得了数组中的值。 但是你的php代码是初学者,剪切、粘贴、改编和“快乐思考”,我们都开始了一天,所以我会详细回顾一下。

你启动你的循环

$消息.=

应该:

$消息=

当您启动消息时,而不是连接到它...

然后你跟进它:

$消息=

现在,当您连接到 $message 时,应该是

$消息.=

阅读: 语言运营商

然后是一些非常基本的东西,

然后你用“空白”跟随消息=,所以php处理器继续读取直到语句关闭“;” 被发现。 解析器不会找到它,因为它会一直读入您的消息字符串,直到找到“From”。 那是因为解析器要么在 "" 或 '' 之间找到文字字符串,要么找到连接运算符 ".",解析器将在连接器之间添加变量值。 如您所见,这两个条件都满足,直到遇到“From”,此时解析将抛出错误,因为它要么期待一个语句闭包“;” 或新的连接运算符,但找到一个文字。

如果你没有发现它可能你需要打开错误报告:

把这个放在页面的开头:(在生产中把它们拿出来!!)

 error_reporting(E_ALL);
 ini_set("display_errors", 0);

快乐编码!

尽管如此,尽管有时会起作用,但绝对建议不要将命令跨越多行。

有两种选择,连接每一行,就像你在 $headers 部分中所做的那样......

或者使用 heredoc 语法,尽管这需要一些练习才能掌握。

Heredoc sintax 将采用“<<

另外解析器会贪婪地寻找变量或一维数组变量并用它们的值替换它们,更复杂的值应该用花括号括起来,只是为了帮助你开始,这里是修改后的php代码,在heredoc语法下带有$meesage块,但如果您想取得一些进展,请阅读此基本页面:

php字符串手册

这是修改后的php代码:

      <?php

  error_reporting(E_ALL);
  ini_set("display_errors", 0);

  foreach($_POST['name'] as $index => $name)
       { // Just for clarity sake,Obtain this person information. similarly could have been done inside the $message build, 
         // Left bornday to show how is that done......
       $Passenger  =  ($index);
       $Name  = $name;
       $LastName = $_POST['lastname'][$index];     
       $BornDay = $_POST['bornday'][$index];     
       $Trip = $_POST['destination'][$index];     
       $Persons = $_POST['vol'][$index];     
       $Kids = $_POST['kinderen'][$index];     
       $Babys = $_POST['Babys'][$index];     


  $message .= <<<EOD         
  Trip: $Trip<br><br>
  Persons: $Persons<br>
  Kids:  $Kids<br>
  Babys: $Babys<br><br>
  Personsinformation:   $Name  $LastName   {$_POST['bornday'][$index]  <br><br>
  EOD;

  // DBG // Show the message
  echo "The $index message  is: $message<br>";

  // Sending mail dpends a bit on you enviroment, supposig this applies:

  $headers = 'From:' . $_POST['email'] . "\r\n";
  $headers .= 'Reply-To:' . $_POST['email'] . "\r\n";
  $headers .= "MIME-Version: 1.0\r\n";
  $headers .= "Content-Type: multipart/mixed; ";
  $headers .= "boundary=$num\r\n";
  $headers .= "--$num\r\n";  

  // Define the message section
  $headers .= "Content-Type: text/html; charset=ISO-8859-1\r\n";
  $headers .= "Content-Transfer-Encoding:8bit\r\n\n";
  $headers .= "$message\r\n";
  $headers .= "--$num\r\n";

  // Send email

  mail ($to, $subject, '', $headers);
  print_r($_POST);
  }

  ?>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM