我正在尝试使用$ _GET值加载到与我的表单相同的页面而不是打开新页面。例如,表单在我的页面上" products.php"我希望表单按产品类型过滤数据库结果。所以在提交时,它应该重定向到" products.php?type = tee"。
如果我在地址栏中手动输入它,它就像一个魅力,但我无法提交表单以加载它。
这是我的代码(更新:这里是整个文件,使用require_once进入基本的html5模板):
<?php
error_reporting(E_ALL); ini_set('display_errors', 1);
//Populate Items to Show
function populateItems($result){
while ($row = $result->fetch_assoc()){
if ($row['available']){
echo '<li><img src="', $row['image'], '" />';
echo '<ul>';
echo '<li><h1>', $row['product'], '</h1></li>';
echo '<li><h2>', $row['description'], '</h2></li>';
echo '<li><h3>$', $row['price'], '</h3></li>';
echo '</ul>';
echo '</li>';
}
}
$result->free();
}
//Create Item List
echo '<ul class="item">';
//Create Filter
echo '<li id="filter">';
if ($result = $conn->query("SELECT DISTINCT type FROM products")){
echo 'Filter Results By: <form method="GET" action="', $_SERVER['PHP_SELF'], '">';
echo '<select>';
echo '<option>Show All</option>';
while ($type = $result->fetch_assoc()){
echo '<option name="type" value="', $type['type'], '">', $type['type'], 's</option>';
}
echo '</select>';
echo '<input type="submit" value="Go" />';
echo '</form>';
}
echo '</li>';
//Find if Filter Exists
if (isset($_GET['type']) && $_GET['type'] != "" ){
$gettype = $_GET['type'];
$filtertype = $conn->query("SELECT * FROM products WHERE type='$gettype'");
$count = $filtertype->num_rows;
if ($count <= 0){
populateItems($conn->query("SELECT * FROM products"));
}else{
populateItems($conn->query("SELECT * FROM products WHERE type='$gettype'"));
}
}else{
populateItems($conn->query("SELECT * FROM products"));
}
//End Item List
echo '</ul>';
?>
我已经搜遍了所有地方并且找不到任何可以回答我问题的内容...任何帮助都将不胜感激!
答案 0 :(得分:1)
更改
<form method="post" action="">
要
<form method="get" action="">
答案 1 :(得分:1)
您的<option name="type"
名称应为<select>
。
<option>
没有命名属性。
因此,您需要从name="type"
删除<option>
并将<select>
更改为<select name="type">
答案 2 :(得分:0)
如果要使用GET
,则必须更改方法!像这样:
...<form method="get" action="">...