2013-04-09 54 views
3

这是一个标准的HTML/PHP表单。我的代码看起来很好,但由于某种原因,echo语句(标准调试措施)不起作用。任何想法为什么?HTML表单不会发布或检索值

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

<form action="<?php $_SERVER['PHP_SELF'] ?>" method="POST"> 
Symbol: <input type="text" name="symbol" /> 
<br /> 
Start Date: 
<select name="month_start"> 
<option value="1">January</option> 
<option value="2">February</option> 
<option value="3">March</option> 
<option value="4">April</option> 
<option value="5">May</option> 
<option value="6">June</option> 
<option value="7">July</option> 
<option value="8">August</option> 
<option value="9">September</option> 
<option value="10">October</option> 
<option value="11">November</option> 
<option value="12">December</option> 
</select> 

<br /> 

... 
<input type="submit" value="Submit"> 
</form> 

</body> 
</html> 

<?php 
if(isset($_POST['submit'])) { 

    $SYMBOL = $_POST['symbol']; 
    echo "$SYMBOL"; 
    $MONTH_START = $_POST['month_start'] - 1; 
    echo "$MONTH_START; 

?> 

非常感谢。

+0

你是什么意思回声陈述?你的意思是这个<?php $ _SERVER ['PHP_SELF']?>? – 2013-04-09 22:02:26

+3

'$ _POST ['submit']'set在哪里? – nickhar 2013-04-09 22:04:48

回答

2

3个问题 - 第一表单动作要<?php echo $_SERVER['PHP_SELF'] ?>,第二,在第二个echo语句中有一个语法错误,应该是echo "$MONTH_START";(您错过了结束语,尽管如果您只是回应变量,则不需要引号。)最后,您需要当您的帖子变量包含适合您的显示条件的正确提交键时,将name="submit"添加到您的提交按钮中

+1

我们走了。这个名字=“提交”是我错过了。谢谢。 – neilthawani 2013-04-10 01:25:06

+0

谢谢,我错过了每个输入字段上的名称=“fieldname” – 2016-01-05 04:50:35

2

嗯,我注意到你缺少一个右"的最后回音,而不是更改为:

echo "$MONTH_START;"(假设它是不是一个错字)

1

你没有设置$_POST['submit'],所以它永远不会回应任何东西。
测试如果一个字段(您使用)设置:

<?php 
if(isset($_POST['symbol'])) { 

    $SYMBOL = $_POST['symbol']; 
    echo "$SYMBOL"; 
    $MONTH_START = $_POST['month_start'] - 1; 
    echo "$MONTH_START"; 
} 
?> 
+0

感谢您的回复。有用。 – neilthawani 2013-04-09 22:33:04

+0

@ drbr0wn好。不要忘记通过点击答案分数下的勾号来接受答案:) – nickhar 2013-04-09 22:36:25

1

为了获得在action财产的任何值,你必须把回声来自可变的,就像这样:<?php echo $_SERVER['PHP_SELF']; ?> 。 但是,这不会有帮助,因为您可以只做<form method="post" action="">,它仍然会POST到同一页面。

其次,你在最后一行需要一个额外的",使其echo "$MONTH_START";

此外,您尝试捕捉的变量永远不会被设置,因为它不是您的一部分。尝试使用print_r($_POST);来查看。

您会得到两个变量:$_POST['symbol']$_POST['month_start'] - 在采取任何操作之前,您应该确实检查是否设置了其中一个(或两个)。

希望它有帮助! :)