我正在尝试从下拉列表中获取变量。下拉列表使用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'];}
?>
答案 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。
使用此功能并希望它能解决问题。