【发布时间】:2019-02-24 13:06:49
【问题描述】:
单击我的 sql 表中填充的下拉条目后,我可以过滤我的表。默认情况下,该表向我显示数据库中“完成”和“打开”的结果。我想要的是我的下拉列表中的一个静态条目,它向我显示“所有”结果以及“正在进行”结果。
这是我的 sql 表:
+--------+------+----------+
|StatusID| name | status |
+--------+------+----------+
| 1 | TC | open |
| 2 | HTS | on going |
| 3 | HTOL |finished |
+--------+------+----------+
这是我的 html 下拉列表,带有 php 代码,它提供了 sql 表中的条目。
<th>
<td>
<label class="wmfg_label_a" for="chk_Status"> Status </label>
</td>
<td>
<select name="StatusIDSuch[]" multiple="multiple">
<option disabled selected value> </option>;
<option value="alle" <?php if ($StatusIDSuch=="alle") echo 'selected="selected"'; ?>>alle</option>;
<?php
foreach($result as $m)
{
echo "<option value=\"" . $m['StatusID'] . "\">" .$m['Status'] . "</option>";
}
?>
</select>
</td>
</th>
这里尝试显示所有条目 1、2 3,不仅是我的默认 1,2,而且它不起作用。重点是带有“alle”这个词的行。
if(isset($_POST['StatusIDSuch'])) {
if ($StatusIDSuch == "alle"){
$search .= "WHERE StatusID IN ('1', '2', '3')";
var_dump($StatusIDSuch);
} else {
$i = 0;
$selectedOptionCount = count($_POST['StatusIDSuch']);
$selectedOption = "";
while ($i < $selectedOptionCount) {
$selectedOption = $selectedOption . "'" . $_POST['StatusIDSuch'][$i] . "'";
if ($i < $selectedOptionCount -1){
$selectedOption = $selectedOption . ", ";
}
$i ++;
}
$search .= " WHERE StatusID IN (".$selectedOption.")";
}
}
感谢您的帮助。
【问题讨论】:
-
向我们展示您的实际完整查询。现在我只能看到您正在尝试在仅包含
PK_ID的表中选择StatusID。 -
完全抛弃
if(isset($_POST['StatusIDSuch'])) {部分,您将能够看到所有内容 -
表格已编辑。并且 .$search 被添加到完整的查询中。
-
另外,请检查您的 HTML 标记。它包含错误(选择和 th 元素未关闭)。如果您使用正确的代码缩进,您将来可以防止这种情况发生。
-
@cemal 不知道如果我理解正确,我应该删除该部分吗?重点是默认情况下我只想显示结果打开并持续进行。
标签: php html search drop-down-menu filter