【问题标题】:Php logic whether to use if else conditionals or polymorphismPHP逻辑是否使用if else条件或多态性
【发布时间】:2016-04-24 08:26:37
【问题描述】:

伙计们,我在这里尝试实现的是我假设有 5 个按钮(具有不同的选项,使用 jquery 一个接一个地显示,并使用 ajax 发送数据)。

<div id="div1">
<button value="1" class="div1button">1</button>
<button value="2" class="div1button">2</button>
<button value="3" class="div1button">3</button>
<button value="4" class="div1button">4</button>
</div>
<div id="div2">
<button value="a" class="div2button">a</button>
<button value="b" class="div2button">b</button>
<button value="c" class="div2button">c</button>
<button value="d" class="div2button">d</button>
</div>

现在,当用户单击 div1 上的任何一个按钮时,div 2 被隐藏...显示 div2,单击的按钮的值使用 jquery 传递,使用 ajax 执行 sql 查询。 现在执行查询的php包含

$_GET['valDiv1']
$_GET['valDiv2']

php 检查 val1 是否定义在哪里,反之亦然,在获得 div 2 的 val 后......问题就在这里......

我有大约 5 个 div,现在我需要检查所有 div 的值是否存在或只有 1 或 2 .. 等等.. 如何解决这个问题? 要检查这一点,我必须对许多人实施 喜欢 :: 如果定义了 div1 ... 执行此操作 如果 div1 和 div2 被定义……那么做 如果定义了 div1 和 div2 和 div3 ... 做某事 如果定义了 div2 和 div3 和 div5

所以这就是我卡住的地方。

我是初学者请帮忙,有没有更好的方法来实现我想要的?

已解决

感谢@Igor

$selected = array('val1' => null, 'val2' => null, ...);
$selected['val1'] = $_GET['valDiv1'];
$selected['val2'] = $_GET['valDiv2'];
foreach($elements as $val => $key) {
    if($val == 'val1' && $key == 'any') {
        $sql = "SELECT * FROM details";
    } else {
    if($key != null) {  
            if($key != 'any') {
                if($i>0) {
                $sql .= " AND $val='$key'";
                } else {
                $sql = "SELECT * FROM details WHERE $val='$key'";
                $i++;
                }
            }
        }
    }
}

【问题讨论】:

  • 如果您解释了您需要做什么而不是 div1 div2 button1 button2 将会有所帮助。如果效果差异很小,您可以简化一切,但如果每个按钮都有非常具体的结果,那么您将不得不使用 case 或大量嵌套的 if 语句。
  • 这里的多态性不是很清楚。这是一个简单的先决条件案例,其中必须先填充第 1 部分的有效值之一,然后才能接受第 2 部分?如果是这样,您可能需要对每个步骤进行查询,例如SELECT id FROM valid_values WHERE name IN (...),其中最后一部分是值列表。
  • @Chris 好的谢谢,如果我使用大量嵌套,如果我的意思是 15-20 左右会有问题吗?
  • @tadman 谢谢你的回答!会有很大帮助

标签: php jquery html mysql ajax


【解决方案1】:

我相信有很多方法可以优化它。其中之一可能是将所有选择不存储在单独的变量中,而是存储在数组中,例如:

$selected = array('val1' => null, 'val2' => null, ...);
$selected['val1'] = $_GET['valDiv1'];
$selected['val2'] = $_GET['valDiv2'];
...

在检查时你可以这样做

if (array_search(null, $selected) === false) {
   ...
}

【讨论】:

  • 这就是我一直在想的!还有一个问题,如果我使用了太多的嵌套,否则会有问题吗?
  • 感谢您的回答。这真的很有帮助!
猜你喜欢
  • 2015-10-12
  • 2011-03-13
  • 1970-01-01
  • 1970-01-01
  • 2014-06-01
  • 1970-01-01
  • 2019-11-21
  • 2022-08-15
  • 1970-01-01
相关资源
最近更新 更多