2014-10-06 89 views
-1

我有一个联系表单,它通过电子邮件发送几个输入字段,但我正在努力寻找从下拉列表中检查值的正确方法。在下拉列表中选择电子邮件发送方式

HTML

<label for="email"><span>E-mail:</span> 
<input type="email" name="email" id="email" placeholder="Your e-mail" /> 
</label> 


<label for="phone"><span>Tlf:</span> 
<input type="text" name="phone" id="phone" placeholder="Your number" /> 
</label> 

<label for="service"><span>Service:</span> 
<select class="service" id="service"> 
<option value="choose">Choose</option> 
<option value="Option1">Option1</option> 
<option value="Option2">Option2</option> 
<option value="Option3">Option3</option> 
<option value="Option4">Option4</option> 
</select> 
</label> 

PHP

if(!isset($_POST["userEmail"]) || !isset($_POST["userPhone"]) || !isset($_POST["userService"])) 
{ 
    $output = json_encode(array('type'=>'error', 'text' => 'Fields are empty')); 
    die($output); 
} 

所以我做错了使用$ _ POST的下拉?

编辑:

这里是我的jQuery

var user_name  = $('input[name=name]').val(); 
    var user_email  = $('input[name=email]').val(); 
    var user_phone  = $('input[name=phone]').val(); 

所以我想我错过了什么是这样的:

var user_service = $('select[name=service]').val(); 
+0

缺少'

2014-10-06 21:42:40

+0

不,这不是完整的html。我只添加了我认为是错误的脚本。这完全没有下拉验证工作,所以在我的PHP或下拉列表中的一些错误。 – user3707281 2014-10-06 21:45:32

+0

你忘了名字属性! – yellowsir 2014-10-06 21:48:40

回答

0

<select>标签不具有name财产。

请修改代码:

<label for="service"><span>Service:</span> 
<select class="service" id="service" name="userService"> 
<option value="choose">Choose</option> 
<option value="Option1">Option1</option> 
<option value="Option2">Option2</option> 
<option value="Option3">Option3</option> 
<option value="Option4">Option4</option> 
</select> 
2

有你的代码的几个问题。

  • 你似乎没有<form></form>标签在你的代码/贴出的问题,添加它们;他们没有显示在你的问题中,所以目前还不确定你是否使用它们。

  • 你的表单应该是method="post"包括一个动作。 I.e .: action="handler.php"

  • 您的<select>未被命名。

  • 您使用了错误的POST变量相比,你的条件语句:

这是你目前正在使用的是什么:

if(!isset($_POST["userEmail"]) || !isset($_POST["userPhone"]) || !isset($_POST["userService"])) 

看看这个:

<input type="email" name="email" id="email" placeholder="Your e-mail" /> 

and

<input type="text" name="phone" id="phone" placeholder="Your number" /> 

至于它们如何与条件语句不匹配。

他们需要匹配按照修改的条件语句的变量:

if(!isset($_POST["email"]) || !isset($_POST["phone"]) || !isset($_POST["userService"])) 

在修改/命名您的选择为:

<select class="service" id="service" name="userService"> 

注::

现在,如果您的其余未显示 PHP代码使用相同的POST变量,那么他们都需要匹配我在这里发布的内容。你需要这样做,因为我不知道你的其他代码是什么样的。

如果你的PHP代码的其余部分使用这些POST变量$_POST["email"]$_POST["phone"]$_POST["userService"]那么你就需要改变你的投入:

<input type="email" name="userEmail" id="email" placeholder="Your e-mail" /> 

<input type="text" name="userPhone" id="phone" placeholder="Your number" /> 

,同时保持你现在的条件语句:

if(!isset($_POST["userEmail"]) || !isset($_POST["userPhone"]) || !isset($_POST["userService"])) 

已使用error reporting本来会发出Undefined index警告。

将错误报告添加到文件顶部,这将有助于生产测试。

error_reporting(E_ALL); 
ini_set('display_errors', 1); 
+1

除此之外,它的一切都很好:-) – 2014-10-06 22:27:12

+0

@Dagon谢谢:) – 2014-10-06 22:27:59

+0

对不起,我的错误不是发布整个代码。我的jquery分配了正确的post变量。我将编辑我的原始帖子以显示。 – user3707281 2014-10-07 06:14:43

相关问题