【问题标题】:Search form with a drop down list带有下拉列表的搜索表单
【发布时间】:2013-07-28 03:38:50
【问题描述】:

我有一个搜索表单,我必须按类别搜索,这是一个下拉列表。有 2 个表称为成员和类别。在类别表中有两个字段作为 ID 和名称(此名称字段存储名称银行,医院等类别。).members表有一个名为Category的字段,其类别ID与类别表ID值相同(成员表中的Category字段是外键)。

这是下拉列表的代码

<?php if($_GET['level']==2){ ?>
        Category<select name="Cat" style="display:inline-block">
        <option></option>
        <?php $rs=mysql_query("SELECT ID,Name FROM categories ORDER BY Name"); 
        while($rc=mysql_fetch_array($rs)){
            ?>
            <option value="<?php echo $rc[ID]; ?>" 
            <? echo $_POST['Cat'];?>
            <?php if($_POST['Cat']==$rc[ID])
                     echo 'selected'; ?> >
            <?php echo $rc['Name']; ?></option>
            <?php } ?>
            </select>
        <?php } ?>

我在这段代码中有几个我不明白的地方。

  1. value="&lt;?php echo $rc[ID]"有什么用。应该是回显我刚刚在文本框中输入的内容吧?但是$rc[ID]指的是1,2,3,4,5中的一个值,但是对于这些值在下拉列表中它不显示数字。那么为什么要回显这个?
  2. $_POST['Cat'] 没有引用数据库中的任何内容,因为我没有这样的字段。它与 &lt;form name="Cat"&gt; 有关。这个$_POST['Cat'] 如何获取应该是整数的值以便查看与$rc[ID] 的匹配。但是它如何获取整数值,因为我输入的只是来自下拉列表的特定名称。
  3. echo selected”有什么用?是不是要在找到匹配的时候使用,然后option标签变成&lt;option selected&gt;,这样这个值才会弹出到列表顶部

【问题讨论】:

    标签: php html forms


    【解决方案1】:
    1. value=&lt;?php echo $rc[ID]这个只用于数据库当你 提交表单,此值存储到您的数据库表 Ex。 &lt;option value='1'&gt;Display Value&lt;/option&gt; 这里 1 存储到 db 和 用于显示值的显示值是前端。

    2. $_POST['Cat'] 对,这不是指任何数据库值 值仅在您提交表单时发生在您的情况下,您有 写#rc[Name] 然后只显示下拉菜单。

    3. echo selected 的使用是当你的条件匹配时 仅第一次在下拉列表中选择值 自动。

    更新:

    &lt;option value="&lt;?php echo $rc[ID]; ?&gt; 给出整数值,因为您正在获取选择下拉列表的后值 $rc[ID] 给出了值,因为您正在使用从数据库中获取数据,例如 SELECT ID,Name FROM categories ORDER BY Name

    希望对你有帮助

    【讨论】:

    • $_POST['Cat'] 怎样才能得到一个整数值来匹配 $rc[ID] 的值。并且没有为 value= 被存储。我认为它不会进入数据库。