$_POST не получил значения после отправки формы

Я публикую некоторые переменные на той же странице, но $_POST получит пустое значение.
Для HTML

<form action="" method="POST">
<table><tr>
    <td>Product Name :</td>
    <td><input type="text" class="searchname" name="productName" value=""/></td>
    <td class="pc">Brand Name :</td>
    <td><input type="text" class="searchname" name="brandName" value="" /></td>
<tr>
    <td>Category Name :</td>
    <td><input type="text" class="searchname"  name="category" value="" /></td>
</tr></table>

<input type="submit" class="fdasearch" value="Search" />
    </form>


Для PHP

if(empty($_POST['productName']) && empty($_POST['brandName']) && empty($_POST['category'])){
    $query = "SELECT * FROM tbl_product";
    $getAllProduct = $db->select($query);
}elseif(isset($_POST) || !empty($_POST)){
    Setting variables from $_POST and make a search
}

Я набираю "обувь" в productName, а затем я использовал var_dump(file_get_contents('php://input')), я получаю

string(72) "productName= обувь &brandName=& категория =&productName=&brandName=& категория ="


Когда я использовал var_dump($_POST), я получаю

array(3) { ["productName"]=> string(0) "" ["brandName"]=> string(0) "" ["category"]=> string(0) "" }

Я не знаю, как работает file_get_contents, но кажется, что есть значение, но оно не заполняет переменную $_POST. Я хочу, чтобы $_POST имел значение для поиска.

2 ответа

Вы должны установить действие в форме, вот так:

<form action="yourphpfile.php" method="POST">

Когда я устанавливаю действие, оно работает нормально.

Если вы находитесь в одном файле, этот код отлично работает:

<?php

    if(empty($_POST['productName']) && empty($_POST['brandName']) && empty($_POST['category'])){
        echo "we haven't post request";
    }elseif(isset($_POST) || !empty($_POST)){
        echo "we have post request";
        var_dump($_POST); exit;
    }

?>

<html>
    <body>
        <form action="" method="POST">
            <table><tr>
                <td>Product Name :</td>
                <td><input type="text" class="searchname" name="productName" value=""/></td>
                <td class="pc">Brand Name :</td>
                <td><input type="text" class="searchname" name="brandName" value="" /></td>
            <tr>
                <td>Category Name :</td>
                <td><input type="text" class="searchname"  name="category" value="" /></td>
            </tr></table>

            <input type="submit" class="fdasearch" value="Search" />
        </form>
    </body>
</html>

Возврат:

we have post request

    array(3) {
     ["productName"]=> string(4) "dsad" 
     ["brandName"]=> string(4) "dasd" 
     ["category"]=> string(5) "dsada" 
    }

Во -первых, ваше условие с empty() должно быть!empty(), потому что вы никогда не достигнете своего запроса. Когда я ставлю "!" это означало, что если это значение отличается от пустого, тогда выполните запрос. Чтобы закончить, вам нужно поместить метод действия, потому что вы никогда не вызываете его. Таким образом, вы должны создать папку с именем "action" и под этим сгенерировать файл и вызвать внутри формы action = "action / function". Надеюсь, это поможет вам

Другие вопросы по тегам