【发布时间】:2018-03-09 10:23:08
【问题描述】:
我正在从数据库中获取值并使用以下代码显示在表格中。
<tr>
<th>ORDERID</th>
<th>STATUS</th>
</tr>
<tr>
<td><?php echo $orderrecords[$k]["order_id"]; ?></td>
<td><?php echo $orderrecords[$k]["in_transit"]; ?></td>
</tr>
要求
下拉框的值是从表头的数据库中获取的。当用户在下拉菜单中选择选项 [示例:Undelivered] 之一时,我只需要显示具有该值的行 [示例:Undelivered]
问题:
我尝试了下面的代码,现在当用户选择“未交付”时,它不会过滤具有“未交付”值的行,而是显示表中的所有行并将值显示为“未交付”列下方的所有表行.
<table>
<tr>
<th>ORDERID</th>
<th>
<select id="my_select" onchange="send_option();">
<option>Select an option</option>
<?php
$query = "SELECT DISTINCT in_transit FROM do_order";
$result = mysqli_query ($mysqli, $query);
while ( $row = mysqli_fetch_array($result) )
echo "<option value='" . $row['in_transit'] . "'>" . $row['in_transit'] . "</option>";
?>
</th>
</tr>
<?php
if(!empty($orderrecords))
{
foreach($orderrecords as $k=>$v)
{
?>
<tr>
<td><?php echo $orderrecords[$k]["order_id"]; ?></td>
<td>
<?php
if (isset($_POST['my_option']))
{
$query = "SELECT DISTINCT in_transit FROM do_order where in_transit like '" . $_POST["my_option"] . "'";
}
$result = mysqli_query ($mysqli, $query);
while( $row = mysqli_fetch_array($result) )
echo $row['in_transit']."<br>";
?>
</td>
</tr>
<?php
$tabindex++;
}
}
?>
</table>
<form method="post" action"dashboard.php" style="display:none" id="my_form">
<input type="text" id="my_option" name="my_option"/>
</form>
<form method="post" action"dashboard.php" style="display:none" id="my_form">
<input type="text" id="my_option" name="my_option"/>
</form>
脚本
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();
}
【问题讨论】:
-
当您选择其中一个过滤器时,页面是否会重新加载?
-
@PhilippMaurer 是的,它重新加载.....
标签: php