PHP $ _GET到表单提交的同一页面

时间:2014-11-15 19:43:05

标签: php forms get

我正在尝试使用$ _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>';
?>

我已经搜遍了所有地方并且找不到任何可以回答我问题的内容...任何帮助都将不胜感激!

3 个答案:

答案 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="">...