2016-01-16 13 views
-1

我有一个表格是这样的:登记表使用数组但在表单值未提交

<form class="registration-form" name="applicationForm" action="<?=$_SERVER['PHP_SELF']?>" method="get"> 
        <div class="form-top"><h3 class="col-md-12 col-md-offset-4">Application for employment</h3> </div> 

        <div class="col-md-12 col-sm-12 col-lg-6"> 

         <div class="col-md-12"> 
          <div class="form-group"> 
           <label for="inputFirstName">First Name</label> 
           <input type="text" class="form-control required" id="inputFirstName" placeholder="First Name" name="driver[first_name]" /> 
          </div> 
          <div class="form-group"> 
           <label for="inputMiddle">Middle Initial</label> 
           <input type="text" class="form-control" id="inputMiddle" placeholder="Middle Initial" name="driver[middle]" /> 
          </div> 
          <div class="form-group"> 
           <label for="inputLastName">Last Name</label> 
           <input type="email" class="form-control required" id="inputLastName" placeholder="Last Name" name="driver[last_name]" /> 
          </div> 
          <div class="form-group"> 
           <label for="inputDob">Date of Birth</label> 
           <input type="email" class="form-control required datepicker" id="inputDob" placeholder="MM/DD/YYYY" name="driver[dob]" /> 
          </div> 

但是当我尝试打提交按钮后显示的值,也不会提交和将不显示值。我有这样的事情显示的值:

$form_names = array_keys($_GET); 
$form_values = array_values($_GET); 

if(isset($_GET["submit"])) 

{ 

     echo "<h3>Your Input:</h3>"; 
     for ($i = 0; $i < sizeof($_GET); $i++) { 
     echo "<p>".$form_names[$i]." = " . $form_values[$i] . "</p>"; 




     } 
} 

请告诉我什么是丢失或错误的东西在我的代码,因为它不会提交并显示值。它在注册后也不会发送电子邮件。

+0

好这永远不会发生'如果(isset($ _ GET [ “提交”])){...}'你似乎没有结束''标签。 *“我有一个这样的表格:”* - 你是什么意思“像这样”。类似的东西,还是那个? –

+0

*“注册后它也不会发送电子邮件。”* - 在您的发布代码中没有看到任何邮件功能。 –

+0

然后姓氏和DOB是'电子邮件'类型。代码中的错误太多。 –

回答

2

您发布的代码有很多错误。

首先,如果您的代码没有关闭</form>标记,那么您需要添加它。

您还没有为if(isset($_GET["submit"]))设置名称属性,例如带有匹配名称属性的提交按钮,因此该条件语句内没有任何内容会触发。

<input type = "submit" name = "submit" value = "Submit"> 

你还需要将driver属性添加到$_GET阵列。

$form_names = array_keys($_GET['driver']); 
$form_values = array_values($_GET['driver']); 

,并在循环也:

for ($i = 0; $i < sizeof($_GET['driver']); $i++) 

此外,无论您Last NameDate of Birth输入端分别使用<input type="email"代替textdate

有人试图将数据输入到电子邮件输入和现在的方式,它会失败,并在日期输入相同。 “

”它在注册后也不会发送电子邮件。“

我在您的发布代码中没有看到任何邮件功能,因此您需要对此进行排序。

请教关于mail()手动,如果这是你使用的是什么:

添加error reporting添加到您的文件的顶部,这将有助于查找错误。

<?php 
error_reporting(E_ALL); 
ini_set('display_errors', 1); 

// Then the rest of your code 

旁注:显示错误应该只在分期完成,并且从不生产。


脚注:

我建议你不要使用GET,但POST,因为它似乎是你可以(通过网络)发送敏感信息。使用POST更安全。

因此,您可以将$_GET的所有实例更改为$_POST,包括表单方法,您将得到相同的结果。从我的回答

样品结果:

 
first_name = John 

middle = Q 

last_name = Public 

dob = 01/01/1984 
+0

非常感谢Fred :)我会尝试你的建议。 – loenex

+0

@loenex不客气。 –