【问题标题】:(isset $_POST['submit']) condition is always false(isset $_POST['submit']) 条件始终为假
【发布时间】:2015-04-23 16:38:16
【问题描述】:

我在名为 addSection.php 的页面中编写了以下代码

<from class="mainSettingsForm add" action="" method="post">
    <h1>Add new section</h1>
    <p>
        <label>new section</label>
        <input type="text" name="section_name" placeholder="section title">
        <label>section status</label>
        <select name="sectionStatus">
            <option value="active">active</option>
            <option value="disActive">disActive</option>
        </select>
    </p>
    <p>
        <label>section location</label>
        <select name="sectionLocation">
            <option value="Side">Side</option>
            <option value="Body">Body</option>
        </select>
    </p>
    <label>section description</label>
    <textarea name="sectionDesc" placeholder="Section description"></textarea>
    <input class="btn-primary" type="submit" name="submit" value="Add">


</from>

和以下代码在一个名为:Sections.php的页面中

<h2><a href="?page=sections&action=add">Add new section</a></h2>
<?php

if ($_POST OR @$_GET['action'])
{
    if (isset($_GET['action']) AND $_GET['action']=="add")
    {
        include 'views/addSection.php';
        if (isset($_POST['submit'])&&$_POST['submit']=="Add")
            echo 'ok';

    }

}
else
{
   include 'views/sections.php';
}

?>

此声明 if (isset($_POST['submit'])&&$_POST['submit']=="Add") 回声“好”; 永远不会被执行,因为它总是给出假值,如何让 isset($POST['submit']) 语句给出真值来执行条件?

【问题讨论】:

  • 您的标签有误。这是&lt;form&gt;...&lt;/form&gt;(不是&lt;from&gt;)

标签: php html post


【解决方案1】:

请试试我的代码。这将帮助您了解您正在传递什么。我还修复了表单标签 - 正如@Hobo Sapiens 所建议的那样。

<?php print_r($_REQUEST);?>
<form class="mainSettingsForm add" action="" method="post">
    <h1>Add new section</h1>
    <p>
        <label>new section</label>
        <input type="text" name="section_name" placeholder="section title">
        <label>section status</label>
        <select name="sectionStatus">
            <option value="active">active</option>
            <option value="disActive">disActive</option>
        </select>
    </p>
    <p>
        <label>section location</label>
        <select name="sectionLocation">
            <option value="Side">Side</option>
            <option value="Body">Body</option>
        </select>
    </p>
    <label>section description</label>
    <textarea name="sectionDesc" placeholder="Section description"></textarea>
    <input class="btn-primary" type="submit" name="submit" value="Add">


</form>

【讨论】:

  • 例子中的PHP也是无效的。
  • 同意。我不只是给他一条鱼,我正在教他如何钓鱼(故障排除/调试)。 :)
  • 欢迎您@WessamAlkumait。另外,我建议您使用 xdebug 和断点 :)
【解决方案2】:

您的陈述永远不会是真的,因为第二个 IF 陈述仅适用于 $_GET 变量,然后您尝试访问其中的 $_POST。您不能同时拥有 GET 和 POST。

您还有一些拼写错误 - $_GET['action'] 将是“添加”而不是“添加”,并且您的 HTML 中有 &lt;from&gt; 而不是 &lt;form&gt;。

if ( isset( $_POST['submit'] ) && $_POST['submit'] == "Add" ){
    echo "this is a POST and submit is add";
} elseif ( isset( $_GET['action']) && $_GET['action'] == "Add" ){
    echo "this is a GET and submit is add";
} else {
    include 'views/sections.php';
}

【讨论】:

  • 我在 Get 的 IF 语句之外使用了 IF 语句,但得到了相同的结果
  • 非常感谢,我刚刚编辑了表格,它工作了,非常感谢先生
猜你喜欢
  • 2017-05-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-04
  • 2015-03-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多