php下拉列表保持一个位置

时间:2017-02-13 20:35:07

标签: php html mysql

我创建了pogoda数据库,城市表和列city和cityid。我正在使用php创建动态列表,然后将所选值提交到更多代码中。

这就是我将defult开始位置添加到下拉列表中的方式(如果是html中的语句)。

选择值并单击提交按钮后,一切工作正常的exepct下拉列表 - 它始终处于相同的位置(defult),我不知道如何。这很奇怪,因为其他依赖于提交按钮的东西效果很好。

我的代码吼叫 - db.inc.php:

 <?php
    define('DB_NAME','pogoda');
    define('DB_USER','root');
    define('DB_PASS','');
    define('DB_HOST','localhost');
?>

func.inc.php     

require_once 'db.inc.php';

function connect(){
    mysql_connect(DB_HOST,DB_USER,DB_PASS) or die('Could not connect to server!' . mysql_error());
    mysql_select_db(DB_NAME);
}
function close(){
    mysql_close();
}
function query(){
    $myData = mysql_query("SELECT * FROM city");
    while($record = mysql_fetch_array($myData)){
        echo '<option value="' . $record['cityid'] . '">' . $record['city'] . '</option>';

    }
}

function get($name){
    return isset($_REQUEST[$name]) ? $_REQUEST[$name] : '';
}


?>

html的一部分

        <div class="title">
        Pogoda
        </div>
        <div class="main">
            <form>
            <select name="city">
                <?php query() ?>
            </select>
                <?php close() ?>
                <br>
                <input type="submit">
            </form>
            <?php
                $cityid = get('city');

                if($cityid == NULL){
                $cityid = 4927854; //start position
                }
                else{
                $cityid = get('city'); //this one after clicking submit
                }
                echo $cityid; // test
                date_default_timezone_set('Europe/Warsaw');
                use Cmfcmf\OpenWeatherMap;
                require __DIR__ . '/vendor/autoload.php';
                $lang = 'pl';
                $units = 'metric';
                $owm = new OpenWeatherMap("mycode");
                $forecast = $owm->getWeatherForecast( $cityid, $units, $lang, '', 3);
            ?>
</div>

start value(数字显示选择的价值)。选择不同的值并单击“提交”后,如下所示,表中的所有数据都在变化,测试编号正在变化,但列表中的值仍然相同after submit

1 个答案:

答案 0 :(得分:0)

您需要在创建选项列表时检查选择了哪个城市。 或多或少是这样的:

function query($cityId){
    $myData = mysql_query("SELECT * FROM city");
    while($record = mysql_fetch_array($myData)){
        if($cityId == $record['cityid']){
            echo '<option selected value="' . $record['cityid'] . '">' . $record['city'] . '</option>';
        }else{
            echo '<option value="' . $record['cityid'] . '">' . $record['city'] . '</option>';
        }
    }
}


<select name="city">
    <?php query(get('cityid')) ?>
</select>