【问题标题】:MySQL Select based on drop down valueMySQL 根据下拉值选择
【发布时间】:2015-05-19 06:27:29
【问题描述】:

我有以下代码:

<?php
session_start();
include_once("config.php");

$query = "SELECT Category FROM books";
$result = mysqli_query ($mysqli, $query);

echo '<select name="dropdown" value=""><option value="">Dropdown</option>';
    while($row = mysqli_fetch_array($result))
    {
        echo '<option value="' . $row['Category'] . '">' . $row['Category'] . '</option>';
    }
    echo "</select>";

?>

下拉框的值是从数据库中填充的。 我想知道是否有一种方法可以在用户单击下拉菜单中的一个选项然后将结果填充到表格中时运行 select 语句?

任何信息都会有所帮助!

谢谢

【问题讨论】:

    标签: php html mysql


    【解决方案1】:

    好的,resontant81,你想根据选择的选项填充一个表,下一个代码完全符合你的要求,解释就在后面:

    <html>
      <head>
        <title>My list</title>
        <script type="text/javascript">
    //----------------------------------------------------------------
    // SENDS SELECTED OPTION TO RETRIEVE DATA TO FILL TABLE.
    function send_option () {
    var sel = document.getElementById( "my_select" );
    var txt = document.getElementById( "my_option" );
    txt.value = sel.options[ sel.selectedIndex ].value;
    var frm = document.getElementById( "my_form" );
    frm.submit();
    }
    //----------------------------------------------------------------
        </script>
      </head>
      <body>
    
        Click on any option
        <br/>
        <select id="my_select" onchange="send_option();">
          <option>Select an option</option>
    <?php
    //----------------------------------------------------------------
    // LIST FILLED FROM DATABASE (ALLEGEDLY).
    for ( $i = 0; $i < 5; $i++ )
    { $text = chr($i+65) . chr($i+65) . chr($i+65);
      echo "<option value='" . $text . "'>" . $text . "</option>";
    }
    //----------------------------------------------------------------
    ?>
        </select>
        <br/> 
        <br/>
        <table>
    <?php
    //----------------------------------------------------------------
    // TABLE FILLED FROM DATABASE ACCORDING TO SELECTED OPTION.
    if ( IsSet( $_POST["my_option"] ) ) // IF USER SELECTED ANY OPTION.
         for ( $i = 0; $i < 4; $i++ ) // DISPLAY ROWS.
         { echo "<tr>";
           for ( $j = 0; $j < 6; $j++ ) // DISPLAY COLUMNS.
             echo "<td>" . $_POST["my_option"] . "</td>"; // DISPLAY OPTION.
           echo "</tr>";
         }
    else echo "<tr><td>Table empty</td></tr>";
    //----------------------------------------------------------------
    ?>
        </table>
    
    <!-- FORM TO SEND THE SELECTED OPTION. -->
        <form method="post" action"01.php" style="display:none" id="my_form">
          <input type="text" id="my_option" name="my_option"/>
        </form>
    
      </body>
    </html>
    

    为了方便您(和我),我没有使用数据库,您只需将之前的代码复制粘贴到文本文件中,将其重命名为“01.php”(因为这是操作形式,您可以更改它),并在您的浏览器中运行它,即可使用。

    The dropdown is filled from database (in this case, with letters), when an option is selected the page reloads with the selected option and fills the table.

    您说:“当用户单击下拉菜单中的一个选项然后将结果填充到表格中时将运行的选择语句”。你想要的这个选择语句必须放在该行之后:

    if ( IsSet( $_POST["my_option"] ) ) // IF USER SELECTED ANY OPTION.
    

    因此,您的 select 语句将从 $_POST 中获取选定的选项,并使用它来检索正确的数据并显示它。

    如果对你有帮助,请告诉我。

    这是填写下拉列表的代码,这是我的代码和你的代码:

    // LIST FILLED FROM DATABASE (ALLEGEDLY).
    $query = "SELECT Category FROM books";
    $result = mysqli_query ($mysqli, $query);
    while ( $row = mysqli_fetch_array($result) )
      echo "<option value='" . $row['Category'] . "'>" . $row['Category'] . "</option>";
    

    下一个编辑是填充表格。如果不正确,请更改正确的查询:

    // TABLE FILLED FROM DATABASE ACCORDING TO SELECTED OPTION.
    $query = "SELECT Category FROM books where category like '" . $_POST["my_option"] . "'";
    $result = mysqli_query ($mysqli, $query);
    while( $row = mysqli_fetch_array($result) )
      echo "<tr>" .
           "<td>" . $row['book_name'] . "</td>" .
           "<td>" . $row['author'] . "</td>" .
           "<td>" . $row['Category'] . "</td>" .
           "</tr>";
    

    【讨论】:

    • 您好,感谢您的提问。你在哪里说“你所要做的就是将以前的代码复制粘贴到文本文件中”你是指我发布的原始代码吗?
    • 不,我的意思是我自己的代码,复制粘贴我的代码,我发布的代码(它会像魅力一样运行)。
    • 尝试添加您自己的代码来填充下拉列表。如果您可以完成这项工作,请尝试添加您自己的代码以使用 $_POST["my_option"] 作为您选择语句的参数来填充表格。我们快完成了!
    • 嗯,我坚持将我的字段从数据库中放入下拉框中。
    • 啊,好的,现在下拉框已经被填充了。我从未添加行: include_once('config.php');在顶部
    【解决方案2】:

    我假设 $mysqli 是您的数据库连接,它是通​​过 config.php 建立的。我还假设 category 是 books 表中的列名。清理和验证用户输入由您决定。这只是一个帮助您入门的示例。

    page.php ....

    <?php
    session_start();
    include_once("config.php");
    
    function categories() {
    
        global $mysqli;
        $result = "";
        $stmt = "SELECT Category FROM books GROUP BY Category";
        $sql = mysqli_query ($mysqli, $stmt);
        while ($row = $sql->fetch_array(MYSQLI_BOTH))
        {
        $result .= '<option value="' . $row['Category'] . '">' . $row['Category'] . '</option>';
        }
        mysqli_free_result($sql);
        mysqli_close($mysqli);
    
        return $result;
    
    }
    
    IF (isset($_POST['ThisForm'])) {
    
      $category = htmlspecialchars(strip_tags(trim($_post['dropdown'])));
      $stmt = "SELECT * FROM books WHERE category ='$category'";
      $sql = mysqli_query ($mysqli, $stmt);
      while ($row = $sql->fetch_array(MYSQLI_BOTH))
      {
        // do something with result
    
      }
      // free result and close connection
      mysqli_free_result($sql);
      mysqli_close($mysqli);
    
    }ELSE{
      // base form 
      echo '<form action="page.php" name="something" method="post">';
      echo '<select name="dropdown" value=""><option value="">Dropdown</option>'.categories().'</select>';
      echo '<input type="submit" name="ThisForm" value="submit" />';
      echo '<form>';
    }
    ?>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-03
      • 2019-05-16
      • 2012-02-03
      • 1970-01-01
      • 2015-10-24
      • 1970-01-01
      相关资源
      最近更新 更多