PHP下拉框不显示所选值

PHP下拉框不显示所选值,php,Php,嗨,我有一段php代码,它从数据库中获取php变量,然后填充一个下拉框。这可以正常工作,但一旦页面更新,它就不会显示选定的值,而是再次显示原始列表 我曾经尝试过使用isset显示所选值的一些不同想法,但是它只显示该值,而不显示其他值 我已将原始代码附加到它的工作位置,但始终只显示数据库中的原始值列表 如果任何机构能够提供一个解决方案,甚至在正确的方向上推动,那么它将非常感激 谢谢 if (isset($select) && $select != "location") {

嗨,我有一段php代码,它从数据库中获取php变量,然后填充一个下拉框。这可以正常工作,但一旦页面更新,它就不会显示选定的值,而是再次显示原始列表

我曾经尝试过使用isset显示所选值的一些不同想法,但是它只显示该值,而不显示其他值

我已将原始代码附加到它的工作位置,但始终只显示数据库中的原始值列表

如果任何机构能够提供一个解决方案,甚至在正确的方向上推动,那么它将非常感激

谢谢

if (isset($select) && $select != "location") {
    $select = $_POST['location'];
}
?>

<select name="location">
<?php
// Get records from database (table "name_list").
$list = mysql_query("select DISTINCT region_name from masterip_details WHERE country_code='GB' AND TRIM(IFNULL(region_name,'')) <> '' order by region_name asc");

// Show records by while loop.
while ($row_list = mysql_fetch_assoc($list)) {
    $location = $_POST['location']; ?>
    <option value="<?php echo $row_list['region_name']; ?>"
    <?php if  $row_list['region_name'] == $select) {
        echo "selected";
    } ?>><?php echo $row_list['region_name']; ?></option>        
<?php } ?>
if(isset($select)&&$select!=“位置”){
$select=$_POST['location'];
}
?>
>        

您确定发送该表单时附带post请求吗

你的代码不可读 最好这样做:

<?php

    //database request don't belong in the presentation layer
    $list=mysql_query("select DISTINCT region_name from masterip_details WHERE country_code='GB' AND TRIM(IFNULL(region_name,'')) <> '' order by region_name asc");
    $location = "";
    $isSelect = "";
    if(isset($_POST['location'])){
        $location = $_POST['location']; 
    }
    while($row_list=mysql_fetch_assoc($list)){
        if($row_list['region_name'] == $location ){ 
            $isSelect = "selected"; 
         } 
         echo '<option value="'.$row_list['region_name'].'" '.$isSelect.'  >'. $row_list['region_name'].'</option>';

    }
?>
在创建
标记时,可以使用以下选项:

<?php if ($row_list['region_name'] == $select) { echo "selected='true'"; } ?>

或者类似的东西,如果你得到
真的
或者没有。

你没有正确地检查select值

更改此选项:

if (isset($select) && $select != "location") {
    $select = $_POST['location'];
}

if (isset($_POST['location']) && $_POST['location'] != "location") {
    $select = $_POST['location'];
}

问题在于第一行-实际上系统将永远不会执行第二行来分配
$select
,因为
$select
从未设置:

if(isset($_POST['select']) && $select!="location") { $select=$_POST['location']; } ?>

$select集合在哪里?它不应该是
&&&$select!==“位置”
?@Alfo not强制在第二行设置$select!检查
$\u POST['location']
是否有任何一个下拉框值。@Ranjith,是的,不必这样设置。问题可能与
$row\u list['region\u name']==$select有关。但是遵循XHTML约定,每个属性都应该有一个值。但这并不是主要问题。参考w3.orgThank的这个链接,我喜欢代码更整洁、更容易理解,尽管它应该在If(If($row…)附近出现错误,但我会看看这个,让它工作起来,因为它比我的方式更整洁。而且while循环中的位$location=$\u POST['location']没有意义。。。
if(isset($_POST['select']) && $select!="location") { $select=$_POST['location']; } ?>