将静态值添加到下拉菜单

时间:2013-01-03 08:04:32

标签: php html sql

我有一个在不同文件中生成的下拉菜单。它是用while循环生成的,我想添加一个静态值(Select contract)。

现在,下拉菜单如下所示:

1234
4321
2323
3232

我想这样做:

Select contracr
1234
4321
2323
3232

这是我在index.php中的代码:

<select id="text2" name="text2">

</select>

这是我在process.php中的代码(生成项目的地方):

<?php
$selectedKey = $_GET['selected_key'];
$query = "SELECT * FROM `1 received` WHERE Key = '".$selectedKey."'";
$run = mysql_query($query);
while($row = mysql_fetch_assoc($run)) {
    echo "<option value='".$row['Number']."'>".$row['Number']."</option>";
}
?>

Ajax代码:

<script>
$("select#select2").change(function(){
    $.ajax({
        type: "GET",
        url: "process.php",
        data: "selected_key=" + $(this).val(),
        success: function(result) {
            $("select#text2").html(result);
        }
    });
});
</script>

4 个答案:

答案 0 :(得分:3)

我认为你是在思考这个问题。

在添加数据库中的所有其他值之前,只需向<select>添加一个额外选项 - 即文字值,而不是PHP生成的值。给它一个像“0”或“NotSelected”的值,然后在验证程序中检查它。

哦,作为一个无关的问题,不要这样做:

$selectedKey = $_GET['selected_key'];
$query = "SELECT * FROM `1 received` WHERE Key = '".$selectedKey."'";

您正在打开SQL注入。如果您不知道那是什么,请查阅。您应该为此使用准备/参数化查询。无论是PDO与mysqli的扩展具有这种能力,所以你应该使用这些替代MySQL的扩展,它已被弃用的一个(即“这会从语言很快就被删除,所以停止使用”)在最新的版本PHP。


更新

基于您使用AJAX请求直接更新HTML以获取<select>元素的新内容这一事实,您需要移动我提到的<option>项作为其中的一部分您在AJAX请求中调用的脚本。

具体来说,您应该在foreach循环之前直接执行此操作:

<?php
$selectedKey = $_GET['selected_key'];

// DO SOME VALIDATION ON $selectedKey here
// Remember what I said about SQL injection and using mysqli/PDO

$query = "SELECT * FROM `1 received` WHERE Key = '".$selectedKey."'";
$run = mysql_query($query);
echo "<option value='NotSelected'>Select Contract</option>";
while($row = mysql_fetch_assoc($run)) {
    echo "<option value='".$row['Number']."'>".$row['Number']."</option>";
}
?>

答案 1 :(得分:1)

<?php
$selectedKey = $_GET['selected_key'];
$query = "SELECT * FROM `1 received` WHERE Key = '".$selectedKey."'";
$run = mysql_query($query);

echo "<option value='0'>Select Contractor</option>"; //Simply add this

while($row = mysql_fetch_assoc($run)) {
    echo "<option value='".$row['Number']."'>".$row['Number']."</option>";
}
?>

答案 2 :(得分:1)

试试这个..

<?php
$selectedKey = $_GET['selected_key'];
$query = "SELECT * FROM `1 received` WHERE Key = '".$selectedKey."'";
$run = mysql_query($query);
$str = "<option value='0'>Select anyone</option>";
while($row = mysql_fetch_assoc($run)) {
    $str .= "<option value='".$row['Number']."'>".$row['Number']."</option>";
}
echo $str;
?>

像这样你可以添加静态选项

答案 3 :(得分:-2)

please used this code......
<?php
$selectedKey = $_GET['selected_key'];
$query = "SELECT * FROM `1 received` WHERE Key = '".$selectedKey."'";
$run = mysql_query($query);

$str = "<option value='0'>Select Contractor</option>"; //Simply add this

while($row = mysql_fetch_assoc($run)) {
    $str .= "<option value='".$row['Number']."'>".$row['Number']."</option>";
}
?>


echo $str variable into your select box like this:-


<select id="text2" name="text2">
<?php echo $str;?>
</select>