单击go按钮后如何保持选定的列表值?

时间:2013-04-04 09:37:41

标签: php mysql

我有一个php页面,其中从mysql数据库填充下拉列表,当用户进行选择并单击“go”按钮时,有关该选定项目的数据将显示在页面。现在一切都在我的页面中完美运行,但列表项名称会自动显示为默认值。 例如:有4个列表项,特色艺术,流行艺术,自然艺术,幻想艺术。 当用户选择pop art并按下go按钮时,与此相关的数据将显示在页面上,但下拉列表不包含在列表中选择的流行艺术名称。即便如此,下拉列表也会将特色艺术视为默认。获取数据没有问题,但我想在下拉列表中显示作为选定的流行艺术或自然艺术或幻想艺术或特色艺术不仅仅是特色艺术)及其相关数据页面等。我认为我的观点是清楚的。请帮帮我。

这是代码:

<select name="category">
<?php
$sql = "SELECT id, art_name FROM category;";
$result = mysql_query($sql);
while ($row = mysql_fetch_assoc($result)) {
 ?>
<option value="<?= $row['id']; ?>"><?= $row['art_name']; ?></option>

<?php

 }
 ?>
 </select>
 <input name="go" type="submit" value="Go" /></div>


 <div align="center" class="showimage">
 <ul class="display">

 <?php
  $id = (int)$_POST['category'];
 $sql_search = "SELECT id, categoryid, path FROM list WHERE categoryid = $id";
 $search = mysql_query($sql_search);
 $sql = mysql_query("SELECT autodisplay FROM list WHERE categoryid = 2");
 if (isset($_POST['go'])) {
 while ($row = mysql_fetch_assoc($search)) {
 ?>


<li><a href="<?= $row['path']; ?>" class="highslide" onClick="return hs.expand(this)"><img src="<?= $row['path']; ?>" border="0"></a></li>
<?php }

 }

 else {
 while ($row = mysql_fetch_assoc($sql)) {
 ?> 
 <li><a href="<?= $row['autodisplay']; ?>" class="highslide" onclick="return hs.expand(this)"><img src="<?= $row['autodisplay']; ?>" border="0"></a></li>
  <?php 
   }
   }
  ?>
 </ul>

This is the running page

1 个答案:

答案 0 :(得分:2)

用以下内容替换您的选择列表:

<select name="category">
    <?php
    $sql = "SELECT id, art_name FROM category;";
    $result = mysql_query($sql);
    while ($row = mysql_fetch_assoc($result)) {
        ?>

        <option value="<?= $row['id']; ?>"<?=($_POST['category']==$row['id'] ? ' selected="selected" : '')?>><?= $row['art_name']; ?></option>

        <?php
    }
    ?>
</select>

我添加了一个if语句来检查行id是否与发布的变量匹配 - 如果是,则将选项值设置为selected。