保持下拉选择并且在选择之前不要提交 - PHP / MYSQL

时间:2012-07-20 22:03:07

标签: php mysql drop-down-menu

我创建了一个下拉菜单来选择表格,然后创建另一个下拉菜单,其中填充了来自所选表格的一列的数据。目前,当我第一次加载页面时,我收到一条错误消息,因为在我的下拉列表中没有选择任何内容,因此索引freqtype未定义。当我选择一些东西时,一切都很好,除了我的选择不是由保管箱保留。 PHP中是否有一种方法可以在一个脚本中实现这一点。我想可能在初始表单中使用if语句,因此底部下拉列表不会填充,直到选中顶部但我无法使代码工作。任何帮助将不胜感激。

<html>
<head>
<title>Frequency Chart Update</title>
</head>

<body text="#FFFFFF" bgcolor="#000000">

<font size="4">Please Select the Frequency You Wish To Edit.
</font>
<br>
<br>
<?php

echo '<form ENCTYPE=multipart/form-data action=editfreq.php method=post>';
echo '<select name=freqtype onChange=this.form.submit()>';
echo '<option value="empty"> </option>';
echo '<option value="rptfreq">Repeater (Base) Frequencies</option>';
echo '<option value="pltfreq">Pilot Frequencies (VDV Leaky Feeder)</option>';
echo "</select>";

//define variables to be used
$table = $_POST['freqtype'];

//Connect to database
include 'connect.php';

$sql = "SELECT channel FROM $table";
$result = mysql_query($sql);


echo '<form ENCTYPE=multipart/form-data action=editrptfreq.php method=post>';
echo 'Channel  ';
echo '<select name=channel>';
while ($row = mysql_fetch_array($result)) {
echo "<option value='" . $row['channel'] . "'>" . $row['channel'] . "</option>";
}
echo "</select>";
echo "<button type=submit>Select</button>
";
echo "</form>";



?>

</body>
</html>

2 个答案:

答案 0 :(得分:2)

<option value="rptfreq"<?php if(@$_POST['freqtype'] == 'rptfreq') echo ' selected="selected"'; ?>>Repeater (Base) Frequencies</option>
<option value="pltfreq"<?php if(@$_POST['freqtype'] == 'pltfreq') echo ' selected="selected"'; ?>>Pilot Frequencies (VDV Leaky Feeder)</option>

答案 1 :(得分:0)

您可以使用PHP的$_POST['freqtype']函数检查isset()是否已设置,然后不执行其余代码:

<?php
$table = isset($_POST['freqtype'])?$_POST['freqtype']:false;
echo '<form ENCTYPE=multipart/form-data action=editfreq.php method=post>';
echo '<select name=freqtype onChange=this.form.submit()>';
echo '<option value="empty"> </option>';
echo '<option value="rptfreq" '.($table=='rptfreq'?'selected="selected"':''.).'>Repeater (Base) Frequencies</option>';
echo '<option value="pltfreq" '.($table=='pltfreq'?'selected="selected"':''.).'>Pilot Frequencies (VDV Leaky Feeder)</option>';
echo "</select>";

if($table){
    //Connect to database
    include 'connect.php';

    $sql = "SELECT channel FROM $table";
    $result = mysql_query($sql);
    echo '<form ENCTYPE=multipart/form-data action=editrptfreq.php method=post>';
    echo 'Channel  ';
    echo '<select name=channel>';
    while ($row = mysql_fetch_array($result)) {
        echo "<option value='" . $row['channel'] . "'>" . $row['channel'] . "</option>";
    }
    echo "</select>";
}
echo "<button type=submit>Select</button>";
echo "</form>";
?>

在旁注中,仅仅因为您在下拉框中提供选项,可以提交除您决定之外的其他值。这意味着如果您不对输入进行清理,则可能会遇到非常糟糕的SQL体验。

另外请注意,您应该查看PDO而不是使用非常旧的mysql函数。