繁体   English   中英

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

[英]PHP $_GET to same page from form submit

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

我到处搜索,没有找到任何能完全回答我的问题的...任何帮助将不胜感激!

更改

<form method="post" action="">

<form method="get" action="">

您应将<option name="type"命名为<select>

<option>没有命名属性。

因此,您需要从<option>删除name="type" ,并将<select>更改为<select name="type">

如果要使用GET则必须更改Method! 像这样:

...<form method="get" action="">...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM