【问题标题】:$_POST didn't get values after form submit表单提交后 $_POST 没有得到值
【发布时间】:2018-08-15 08:52:23
【问题描述】:

我在同一页面中发布了一些变量,但 $_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')),我得到了

字符串(72) "productName=shoes&brandName=&category=&productName=&brandName=&category="


当我使用 var_dump($_POST) 时,我得到了

array(3) { ["productName"]=> string(0) "" ["brandName"]=> string(0) "" ["类别"]=> 字符串(0) "" }

我不知道 file_get_contents 是如何工作的,但似乎有一个值,但它没有填充 $_POST 变量。我希望 $_POST 有一个值以便进行搜索。

【问题讨论】:

  • 您使用的是 Ajax 还是表单发布?
  • 您是否使用Form 标签和submit 按钮发布数据?
  • 我忘记发布我的完整代码了。现在已经修复了
  • 我认为这段代码应该可以工作,相同的代码可以在我的系统上运行而无需任何更改
  • @Akhilendrayadav 是的!那应该可以工作。当我在本地主机中使用时,它可以工作。所以,我将该文件传输到服务器,然后 post_array 在提交后变为空。您可以在我的问题中看到我的 var_dump 结果。

标签: php http-post


【解决方案1】:

首先,您的 empty() 条件必须是 !empty() 因为您永远不会到达您的查询。当我输入“!”这意味着如果此值与空值不同,则执行查询。要完成,您需要放置操作方法,因为您从不调用它。 因此,您必须创建一个名为“action”的文件夹,并在此文件夹下生成文件并在表单 action="action/function" 中调用。 希望对你有帮助

【讨论】:

  • 我猜他的第一个if 条件是如果用户在没有任何输入值的情况下点击,如果用户输入任何值,例如产品、品牌,那么它将进入他编写实际搜索查询的其他条件。
  • @Akhilendrayadav 他说的正是我现在正在做的事情。如果没有 post 值,我会显示表中的所有数据,如果有 post 值,我会使用这些变量进行搜索查询。我在这两个条件下编写了 sql,并且表单操作 =“”代码让您将变量发布到同一页面。这就是我的想法,我已经尝试过
  • 无需在表单上设置action 属性。如果未提供,数据将被发送到包含表单的页面的 URL。你甚至可以省略完整的action="",只写&lt;form&gt;
【解决方案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" 
    }

【讨论】:

  • 我将数据发布在同一个 php 文件中。所以,我认为 action="" 就足够了。我已经尝试过“”。无论如何感谢您的建议
  • 是的,我已经检查了你的代码。我的代码假设在本地主机中工作。但是当我将该文件上传到服务器上时,代码开始显示错误,就像我上面提到的那样。提交后 post_array 为空。
  • 你能指导我怎么做吗?我写代码还是很天真。
猜你喜欢
  • 1970-01-01
  • 2018-04-13
  • 2013-10-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-25
相关资源
最近更新 更多