簡體   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