回显已发布ID的行名称,用于预先选择的表单值

时间:2011-10-12 18:35:28

标签: php mysql post html-form

这有望成为一个简单的,但我缺乏技能!

                                <select name="search_category"  id="select1" >
<option value="">By Category</option>
 <?php if (!empty($_POST['search_category'])) { ?>
 <option value="<?php echo $_POST['search_category']; ?>" selected="selected"><?php echo $_POST['search_category']; ?></option>
<?php }?>
  <?php foreach($categoriesListt as $row) : ?>

  <option value="<?php echo $row->id; ?>"><?php echo $row->name; ?></option>

                                      <?php endforeach; ?>
                                </select>

以上是搜索模块中众多选择之一。它从我页面中较高的查询返回一个动态的选项列表。我的目标是预先选择上次搜索的选项。一切都按预期工作,但我的问题确实很小;发布的搜索类别的值是一个ID($ row-&gt; id。我希望做的是使用关联的$ row-&gt;名称进行显示,但保留id值,以便我的搜索功能仍然有效。

换句话说,我希望做的事情如下:

<?php echo $row->name;  WHERE ID = $_POST['search_category']

在上面的代码中是否有一种简单的方法可以做到这一点,或者我是否需要在页面顶部添加一个特殊的查询,获取与发布的id匹配的单个行名称?

谢谢!

编辑:为了简化,我已经有一个返回row-&gt; id和row-&gt; name的查询,我在foreach循环中使用它来填充我的选项值和名称。我只需要一种方法,或者我可以添加到查询中的一行,也可以获得与POSTED ID匹配的row-&gt;名称的值。

1 个答案:

答案 0 :(得分:1)

我会编写一个简短的函数,即使对于其他应用程序也能提供此功能。 就像

<?php 

    function($id, $table) {

        select ... etc

    }
?>

出于安全原因,我建议使用Prepared Statements或mysql_escape

希望我能提供帮助

也许

SELCET('id', 'name' FROM yourTable WHERE 'name' = $_POST['ID']) 

你的意思是这样的,或者你会选择下拉选项

<?php foreach($categoriesListt as $row) : ?> 
    <option value="<?php echo $row->id; ?>"
          <?php if($row->name == $_POST['search_category']) : ?>
               selected="selected"<?php } ?>>
        <?php echo $row->name; ?>
    </option> 
<?php endforeach; ?>