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>";