【发布时间】: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