【问题标题】:PHP switch always chooses last optionPHP 开关总是选择最后一个选项
【发布时间】:2021-11-17 18:12:44
【问题描述】:

我的 PHP 开关总是选择最后一个选项。即使我选择第一个选项,我的代码也只会执行最后一个选项。我该如何管理它会选择我选择的选项?

网站:

代码:

<select name='auto-listings-package' id='auto-listings-package' class='auto-listings-package'>

                <?php foreach ( $packages as $package_id => $package ) : ?>

                    <option value="<?php echo esc_attr( $package_id ); ?>" data-price="<?php echo esc_attr( auto_listings_raw_price( $package['price'] ) ); ?>"><?php echo wp_kses_post( $package['label'] ) ?></option>

                    <?php
                        if(isset($_POST['auto-listings-purchase'])) {
                            
                            if($package_id == '2823') {
                                wp_redirect('https://www.google.com');
                            } elseif ($package_id == '2633') {
                                wp_redirect('https://www.helemaaldebom.nl');
                            } else {
                                echo 'Something went wrong. Please contact our staff.';
                            }

                        }
                    ?>

                <?php endforeach; ?>

            </select>

HTML

【问题讨论】:

  • 你为什么要在这些情况下检查if(isset($_POST['auto-listings-purchase']))?您不想根据用户通过该名称的选择字段提交的值来切换吗?
  • @CBroe 我正在检查是否仅在触发提交按钮时才执行那段代码。如您所见,该开关确实会查看用户提交的值。 2823 和 2633 是他们可以选择的包的 ID。提交按钮的 if 语句在 case 内部,不会切换。
  • 因此,除了检查一个值是否通过 POST 提交之外,您现在还没有使用您选择字段中的该值执行 任何操作。我以为您希望根据通过表单提交的值做出切换决定?
  • @CBroe 我以为我是通过在所选包的 ID 之间切换。它不起作用,所以我知道我做的不对,因此这篇文章。你能帮帮我吗?
  • 我不知道循环遍历$packages 的意义首先应该是在这里。您希望根据用户通过表单提交的值做出决定吗?那么打开that。如果此代码在您还不知道是否实际提交了值的情况下运行,则将 switch 语句包装到 if(isset($_POST['auto-listings-purchase'])),而不是相反。

标签: php web switch-statement


【解决方案1】:

将默认更改为以下

default:
                echo "-".$p.'- Something went wrong. Please contact our staff.';

并查看输出。

这将帮助您了解为什么它与条件不匹配(您可能会得到空格)。

【讨论】:

  • 这只是一个输出,但不能解决我的问题。
  • 这将帮助您了解为什么它不符合条件。
  • 嗯,问题是它会采用默认值之前的最后一个选项。所以开关没有达到“默认”。
  • 在 switch 语句之前回显所有值,看看你得到了什么。然后你可以找出问题所在。如果你没有得到你选择的值,这意味着你的 html 帖子有问题。
【解决方案2】:

解决了。我忘了用用户的输入填充 $package 变量。我已经把它放在 if 语句之前,现在它可以工作了。

$package_id = $_POST['auto-listings-package'];

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-06
    • 1970-01-01
    • 2020-05-22
    相关资源
    最近更新 更多