PHP - 下拉为未传递的变量

时间:2015-08-28 17:02:25

标签: php mysql

我正在尝试从下拉列表中获取变量。下拉列表使用mysql查询完全填充,并演示了我期望的正确信息。我在网上找到了一个例子(最下面一个),它完全符合我的要求,但我的例子(最上面的例子)却没有。我认为这与它是由数据库信息而不是纯文本填充的事实有关,但我无法确切地解决出错的问题。

这就是填充表格并正常工作的原因。

<?php
$sql="SELECT athleteforename, athletesurname FROM athletes WHERE userID='$userID'"; 
$result=mysql_query($sql); 
$options=""; 
while ($row=mysql_fetch_array($result)) { 
$forename=$row["athleteforename"]; 
$surname=$row["athletesurname"];         
$options.="<option value='$id'>" . $forename . ' ' . $surname . '</option>';
}
?> 

这个回声“名称设置为”但是没有给出任何值。但它充满了正确的名字。

<form action="" method="post">
<select NAME="name" onchange="this.form.submit();"> 
<?=$options?>
</select>
</form>
<?php 
if (isset($_POST['name'])) {echo 'name is now set to ' . $_POST['$name'];} 
?>

这个完全按照我想要的最高者的方式工作。

<form action="" method="post"> 
<select name="var" onchange="this.form.submit();"> 
<option value="1">var 1</option> 
<option value="2">var 2</option> 
<option value="3">var 3</option> 
<option value="4">var 4</option> 
<option value="5">var 5</option> 
</select> 
</form> 

<?php 
if (isset($_POST['var'])) {echo 'var is now set to ' . $_POST['var'];} 
?>

3 个答案:

答案 0 :(得分:1)

我想,就是这一行:

$options.="<option value='$id'>" . $forename . ' ' . $surname . '</option>';

$id来自哪里?似乎是未初始化的。

您还可以查看脚本生成的输出HTML,以找到您找到的工作示例的差异。

另一件事:

您的代码会生成HTML(如果您有$id=3):<option value='3'>。那不太好。 ;)浏览器可能会接受它,但是好的&#34; HTML应该使用" s。因此,如果您有$id初始化的属性,则上面的行应该如下所示:

$options.='<option value="$id">' . $forename . ' ' . $surname . '</option>';

修改

Konstantinos Botonakis发现了另一个问题:$_POST['$name'];应该是$_POST['name'];恕我直言。

答案 1 :(得分:0)

问题是因为你有:

$_POST['$name'];

你应该改变它:

$_POST[$name];

答案 2 :(得分:0)

您没有声明变量是正确的。 $ varaible = [&#39; value&#39;]; 值通常是下拉值。 例如: 变量1 所以,当你回显$ variable 它将显示值var 1。

使用此功能并希望它能解决问题。