【问题标题】:Unset php var when statement = "all"当语句 =“全部”时取消设置 php var
【发布时间】:2017-05-28 06:17:35
【问题描述】:

当在选择的单选框中输入不是“全部”时,我尝试取消设置我的变量。 if 语句可以正常工作并且可以完美地完成工作,但是 else 不起作用。有什么想法吗?

$profile = $_POST["profile"];

if ($profile != 'all') { 
    $conditions["profile"] = $profile; 
} else { 
    unset($conditions["profile"]);
}

【问题讨论】:

  • 你怎么知道它不起作用。您有错误信息想与我们分享吗?
  • 在您尝试取消设置之前,$conditions["profile"] 是否真的存在
  • unset($profile) 也许? unset($_POST["profile"])?正如@RiggsFolly 所说;在尝试取消设置之前确保它存在。 unset(whatever_exists).
  • 好吧,您可以使用不同的单选按钮指定您的个人资料。因此,如果 profile = "all" 它必须显示数据库中与您的个人资料匹配的每个个人资料。例如,如果他们检查单选按钮“棕色头发”,它显示的结果会更少(实时更新,没有刷新)。但是,当您重新打开单选按钮“全部”而不是“棕色头发”时,它仍然只会给出结果,就像您选中了“棕色头发”一样。这是因为在第一次加载页面时,我会从数据库中获取所有内容,但从表单发生更改的那一刻起,我会进行搜索查询。

标签: php arrays unset


【解决方案1】:

我认为您的 $_POST 变量可能未设置。试试这样的:

要么:

$profile = isset($_POST["profile"]) ? $_POST["profile"] : 'all';

或在 else 块内:

} else { 

    if(isset($conditions["profile"])) unset($conditions["profile"]);
}

【讨论】:

  • 不起作用,我很确定它已设置。因为起初我在我的表格上做一个得到所有的东西,而不是它显示所有的结果。从我使用搜索 API 的表单发生变化的那一刻起。因此,首先检查“全部”。 getAll 给出所有结果。然后,当您将“全部”更改为“棕色头发”时(例如)。它工作正常,它提供了与配置文件“棕色头发”匹配的所有配置文件。但是当我想再次检查“全部”时,它仍然给出的结果就像检查了“棕色头发”一样。这就是我遇到的问题
  • 看来您在覆盖表单重新提交事件中的 $_POST["profile"] 值时遇到了问题。没有看到它在黑暗中拍摄的代码,但是您是否尝试过一些调试以查看为什么重新提交后旧值在 POST 变量中挥之不去?你能发布更多代码吗?
猜你喜欢
  • 2013-06-18
  • 2019-08-03
  • 2013-01-17
  • 2013-08-10
  • 2021-05-12
  • 2015-08-18
  • 2014-05-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多