将动态文本输入传递给PHP以便写入文本文件

时间:2015-01-07 00:17:55

标签: javascript php dynamic input fwrite

建立我的第一个网站,但无法弄清楚最后一点。我的RSVP表单具有以下用户输入:1)下拉选择菜单中的访客数量2)访客姓名3)文本区域。用户选择该号码后,将动态显示来宾名称文本框以进行名称输入。完成所有操作后,用户单击RSVP,PHP代码将其写入文本文件。

问题:访客号码和文本区域写得很好,但动态的访客姓名框不会传递给PHP。

我该如何解决这个问题?一直在尝试一切。非常感谢任何帮助。



<script> //--add numbers to the dropdown select menu and append the options to select--//
$(function() {
  var $select = $("#selectguest");
  for (i=1;i<=10;i++) {
    $select.append($('<option></option>').val(i).html(i))
  }
});
</script>

    <script type='text/javascript'> //--makes Next button responsive to number of guest input--//
        function addFields(){
            // Number of inputs to create
            var number = document.getElementById("selectguest").value;
            // Container <div> where dynamic content will be placed
            var container = document.getElementById("guest_names");
            // Clear previous contents of the container
            while (container.hasChildNodes()) {
                container.removeChild(container.lastChild);
            }
            for (i=0;i<number;i++){
                // Append a node with a random text
                container.appendChild(document.createTextNode("Guest" + (i+1)));
                // Create an <input> element, set its type and name attributes
                var input = document.createElement("input");
                input.type = "text";
                input.name = "guestnames_' + i +'";
                container.appendChild(input);
                // Append a line break 
                container.appendChild(document.createElement("br"));
            }
        }
    </script>
&#13;
<?php
date_default_timezone_set("America/Vancouver");
//Make sure the file exists.
touch('rsvp.txt');
//Check the length of the comments file.
if ( filesize('rsvp.txt') < 50000 ) {
  //Get the user's message.
  $date = date('l, F jS Y, h:i:s A');
  $guests = substr($_POST['guest_number'], 0, 2);
  $guests = htmlentities($guests);
  $guestnames = substr($_POST['guestnames'], 0, 20);
  $guestnames = htmlentities($guestnames);
  //  Limit it to 2,000 characters.
  $message = substr($_POST['message'], 0, 2000);
  //Convert special characters to HTML entities.
  $message = htmlentities($message);
  //Append message to the RSVP file.
  $f = fopen('rsvp.txt', 'a');
  fwrite($f, "\r\n$date\r\n$guests\r\n$guestnames\r\n$message\r\n");
  fclose($f);
}
//Jump back to whichever page.
header("refresh:3; index.html");
?>
&#13;
<form class="RSVPform" action="rsvp.php" method="post">
  <div>
    <p>Please select the number of guests and enter their names. Once you're ready, click RSVP and you're all set!</p><br>
    <center>Number of Guests: <select id="selectguest" name="guest_number" onChange="addFields()"></select><br><div id="guest_names" name="guest_names"/></div><br><hr><p align="left"><font size=2>Have dietary preferences? Tell us in the message box below.</font></p><textarea id="text" placeholder="Leave a message for the bride &amp groom!" name="message" id="guest_message" rows="5" cols="48"></textarea><button type="submit" id="RSVP">RSVP</button></center>
  </div>
  </form>
&#13;
&#13;
&#13;

1 个答案:

答案 0 :(得分:0)

您没有发布$_POST['guestnames'],而是发布了很多$_POST['guestnames_#']

在您的HTML页面上,将访客姓名输入的名称更改为:

input.name = "guestnames[]";

在PHP脚本中,您现在可以访问$_POST['guestnames']

这将是一个数组,因此您必须执行类似

的操作
$guestnames = "";
foreach ($_POST['guestnames'] as $guest)
{
    $guestnames .= ", ".trim($guest); //trim whitespaces from beginning and end of string.
}

$guestnames = htmlentities(substr($guestnames, 2)); //strip the first comma and space and run through htmlentities.