php - get 函数不会从表单中动态创建的字段中获取数据

标签 php javascript html forms

我正在尝试使用 PHP 存储来自动态创建的字段的数据。固定字段不是问题。我在获取“flex”字段时遇到了麻烦;也就是说,用户可以生成的字段(最多 3 个)来为事件添加更多参与者。我搜索了这个站点,一般的互联网并研究了 PHP 手册。似乎解决方案在于使用 foreach,但我(还)不够聪明和熟练,无法编写正确的函数。

到目前为止我想出的代码(正在进行中)是:

HTML:

<!DOCTYPE html PUBLIC etc >
<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <script type="text/javascript"> 
      var counter = 0;
      var limit = 3;
      var veldwaarde ="";

      function addInput(divName) {
        if (counter == limit)  {
          alert("More then " + counter +  " partcipants not possible ");
        } else {
          var newdiv = document.createElement('div');
          newdiv.innerHTML = "<table><tr><td>Naam deelnemer " + (counter + 1) + "</td><td><input type='text' name='myInputs[]'/></td></tr>" + "<tr><td>Schoenmaat deelnemer " + (counter + 1) + "</td><td><br><input type='text' name='myInputs2[]'></td></tr></table>";
          document.getElementById(divName).appendChild(newdiv);
          counter++;
        }
      }
    </script>
  </head>

  <form name="formulier" method="get" action="invoer_data.php" >
    <table>
      <tr><td width="15%">Naam:</td><td width="15%"><input type="text" name="naam"   >id="naam" value="" ></td></tr>
      <tr><td width="15%">Schoenmaat:</td><td><input type="text" name="schoenmaat" >    >id="schoenmaat" value="" ></td></tr>
      <!--  <tr><td width="15%">Adres:</td><td><input type="text" name="adres" id="adres"   >value="" ></td></tr>
            <tr><td width="15%">Postcode:</td><td><input type="text" name="postcode" >id="postcode" value="" ></td></tr>
      <tr><td width="15%">Woonplaats:</td><td><input type="text" name="woonplaats" >id="woonplaats" value="" ></td></tr>
      <tr><td width="15%">E-mail:</td><td><input type="text" name="email" id="email" >value="" ></td></tr>
      <tr><td width="15%">Telefoon overdag:</td><td><input type="text" name="telefoon" >id="telefoon" value=""></td></tr> -->
      <tr><td  width="15%">More partcipants:</td><td><div id="dynamicInput" > <a href="" >onClick="addInput('dynamicInput');return false;"><p style="color:red;">Add (max 3) >partcipants</p></a></td></tr>

      <td><input type="submit" name="verzenden"  value="Verzenden"></td>
    </table>
  </form>

PHP:

<?php
// collect varaiables
@$naam = addslashes($_GET['naam']);
@$schoenmaat = addslashes($_GET['schoenmaat']);
@$adres = addslashes($_GET['adres']);
@$postcode = addslashes($_GET['postcode']);
@$woonplaats = addslashes($_GET['woonplaats']);
@$email = addslashes($_GET['email']);
@$telefoon = addslashes($_GET['telefoon']);
// next two lines are for the dynamically generated fields
@$myInputs = addslashes($_GET['myInputs']);
@$myInputs2 = addslashes($_GET['myInputs2']);

// Validation
if (strlen($naam) == 0) {
  die("<p align=\"center\"><font face=\"Vrinda\" size=\"4\"color=\"#FF0000\">First field is empty</font></p>");
}

//saving record in a text file to test the GET function
$pfw_file_name = "invoerDynvelden.txt";
$pfw_first_raw = "naam,schoenmaat,adres,postcode,woonplaats,email,telefoon,naam2,schoenmaat2,naam3,schoenmaat3,naam4,schoenmaat4\r\n";
$pfw_values = "$naam,$schoenmaat,$adres,$postcode,$woonplaats,$email,$telefoon,$naam2,$schoenmaat2,$naam3,$schoenmaat3,$naam4,$schoenmaat4\r\n";
$pfw_is_first_row = false;
if(!file_exists($pfw_file_name)) {
  $pfw_is_first_row = true;
}
if (!$pfw_handle = fopen($pfw_file_name, 'a+')) {
  die("Cannot open file ($pfw_file_name)");
  exit;
}
if ($pfw_is_first_row)
{
  if (fwrite($pfw_handle, $pfw_first_raw ) === FALSE) {
    die("Cannot write to file ($pfw_filename)");
    exit;
  }
}
if (fwrite($pfw_handle, $pfw_values) === FALSE) {
  die("Cannot write to file ($pfw_filename)");
  exit;
}
fclose($pfw_handle);
//saving record to MySQL database DBxxxxx still to be developed
?>
<body>
<a href="index.htm">Returm to entry screen</a><br/>
</body>

最佳答案

您在 html/javascript 中像这样设置动态输入:

 name='myInputs[]'
               ^^ an array

所以要在 php 中获取您的值,您需要循环:

 $_GET['myInputs']    // this is an array

使用例如 foreach

如果你只是想可视化这些值,你也可以使用类似的东西:

implode(', ', $_GET['myInputs'])

关于php - get 函数不会从表单中动态创建的字段中获取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17762715/

相关文章:

php - 按修改日期排序这个数组?

php - laravel 中的 {{asset ('css/app.css' )}} 与 {{mix ('css/app.css' )}} 相同吗

javascript - Foundation CSS 框架的 Closure Compiler externs

jquery - 在 HTML5 视频中捕获特定时间的图像

html - 使用 CSS 更改 div 顺序

php - 重置密码不起作用

javascript - 范围输入 WP 定制器上出现无效值错误

javascript - 如何在 Jasmin 中使用剩余调用来测试 AngularJS 服务

javascript - 在具有动态内容的 div 上保持纵横比

asp.net - 超链接 url 包含本地主机和端口号