Php 基于下拉值的MySQL选择

Php 基于下拉值的MySQL选择,php,html,mysql,Php,Html,Mysql,我有以下代码: <?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($

我有以下代码:

<?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语句在用户单击下拉菜单中的一个选项时运行,然后将结果填充到表中

任何信息都会有帮助


谢谢

我假设$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>';
}
?>

好的,Resont81,您想根据所选选项填写表格,下一个代码完全按照您的要求执行,解释如下:

<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>
因此,select语句将从$\u 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>";
//从数据库中填写的列表(默认)。
$query=“从书籍中选择类别”;
$result=mysqli\u查询($mysqli,$query);
while($row=mysqli\u fetch\u数组($result))
“回声”$行['Category']。"";
下一步编辑是填充表格。如果查询不正确,请更改正确的查询:

// 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>";
//根据所选选项从数据库中填充表。
$query=“从类别类似于“”的书籍中选择类别”$_张贴[“我的选项”]。"'";
$result=mysqli\u查询($mysqli,$query);
while($row=mysqli\u fetch\u数组($result))
“回声”。
"" . $行['book_name']。"" .
"" . $行['author']。"" .
"" . $行['Category']。"" .
"";

你好,谢谢你的提问。当tou说“你所要做的就是将以前的代码复制粘贴到文本文件”时,你是指我发布的原始代码吗?不,我是指我自己的代码,复制粘贴我的代码,我发布的代码(它将像一个符咒一样运行)。试着添加你自己的代码以填充下拉列表。如果您可以做到这一点,那么请尝试添加您自己的代码,以使用$\u POST[“my\u option”]作为select语句的参数来填充表。我们差不多完成了!嗯,我一直在把我的字段从数据库放到下拉框中。啊,好的,是的,现在下拉框已经填充了。我从未添加过一行:include_once('config.php');在顶端
// 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>";