【问题标题】:Handling isset and select box in php html and for loop处理 php html 和 for 循环中的 isset 和选择框
【发布时间】:2014-06-06 11:48:36
【问题描述】:

这是我的代码。如果您认为下面的代码不好并且有人真的可以帮助我,这需要一些优化

  1. 我使用了两个 if 条件和两个 else 条件。无论如何,这可以微调。

  2. 在搜索框中,我需要保留之前选择的书名。即单击提交按钮时,选择框应显示结果 在选择框中选择的项目。例如:如果我在下拉菜单中选择“book1”并单击提交按钮,则结果应与“book1”一起显示在选择框内。就我而言,每次提交点击都会重置搜索框。

我的代码:

<?php
if(isset($_POST['submit'])){
    $get_project_id = $_POST['project_name'];
    if($get_project_id == 1){
        ..display all the books(mysql query)..
    }else{
        ..display the particular  book(mysql query)..
    }
}else{
    ..if the search button is not clicked then display all the books(mysql query)..
}
?>
<form method="post" name="book_list">
    <select name="book_list" id="book_list">
        <option value="1">All Books</option>
    <?php while($row=mysql_fetch_array($result_books)){?>
        <option value="<?php  echo $row['Project_Auto_Id'];?>">
            <?php  echo $row['Book_Id']. " - ".$row['Book_Name'] ;?>
        </option>
    <?php  }?>
    </select>
    <input type="submit" name="submit" class="btn btn-default pull-right" value="Search"/> 
</form>

任何帮助都将不胜感激。

谢谢 金兹

【问题讨论】:

  • 执行语句“..显示所有书籍(mysql查询)..”和“..如果未单击搜索按钮,则显示所有书籍(mysql查询)..”导致相同的书单?

标签: php html post if-statement for-loop


【解决方案1】:

您可以通过检查 while 循环内的条件来做到这一点。检查 option 的值和 post 的值是否相同,如下代码所示。

   <form method="post" name="book_list">
        <select name="book_list" id="book_list">
            <option value="1">All Books</option>
        <?php while($row=mysql_fetch_array($result_books)){?>
            <option <?php if(isset($_POST['book_list']) && ($_POST['book_list'] == $row['Project_Auto_Id'])) { echo 'selected'; } ?> value="<?php  echo $row['Project_Auto_Id'];?>">
                <?php  echo $row['Book_Id']. " - ".$row['Book_Name'] ;?>
            </option>
        <?php  }?>
        </select>
        <input type="submit" name="submit" class="btn btn-default pull-right" value="Search"/> 
    </form>

【讨论】:

  • 更新了代码,使得选择框没有被选中时不会报错(即$_POST['book_list']没有设置)
  • 您可能想尝试一下,它不会起作用。对于初学者,checked 用于单选按钮和复选框,而不是选择。您正在使用两个 $$ 而不是&符号,并且您没有关闭 PHP 标记。
  • 对不起。我的错。我在快速输入时输入了选中而不是选中。 :P
【解决方案2】:
  1. 不确定是否有更好的方法来执行这两个if... else 语句,但即使您的执行方式没有任何问题,只是方式不同。

    李>
  2. 关于在提交后选择选项,您需要将选项的输出更改为:

    <?php while($row=mysql_fetch_array($result_books)){?>
        <option value="<?php  echo $row['Project_Auto_Id'];?>"<?php if(isset($_POST['book_list']) && $_POST['book_list'] == $row['Project_Auto_Id']) echo ' selected'; ?>>
            <?php  echo $row['Book_Id']. " - ".$row['Book_Name'] ;?>
        </option>
    <?php  }?>
    

【讨论】:

    猜你喜欢
    • 2015-09-13
    • 1970-01-01
    • 1970-01-01
    • 2014-05-06
    • 2016-10-21
    • 1970-01-01
    • 2018-09-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多