【问题标题】:How to post a form to a switch statement to display a value in PHP如何将表单发布到 switch 语句以在 PHP 中显示值
【发布时间】:2013-12-14 13:36:17
【问题描述】:

我今天需要帮助的是“我如何提交表单,这样如果选择了某个值,它将显示回显” - 这是我目前所拥有的,但没有显示任何数据:

<form action="shop.php" method="post">
        <input type="radio" name="order" value="vip1">VIP Package 1<br />
        <input type="radio" name="order" value="vip2">VIP Package 2<br />
        <input type="radio" name="order" value="vip3">VIP Package 3<br />
        <!--<input type="hidden" name="order"/>-->
        <input type="submit" value="Submit">
        </form>

        <center><?php
        if(isset($_GET['order']))
            {
        switch($_GET['order']) {
        case NULL:
            echo'';
            //echo'<b>No payment was selected!</b>';
            break;

        case 'vip1':
            echo '12321';
            break;

        case 'vip2':
            echo 'You must be rich :D';
            break;

        case 'vip3':
            echo 'This is test 2!';
            break;

        case 'vip4':
            echo 'This is test 3!';
            break;
                } 
                    } else { echo '<b></b>'; }

现在,我浏览了 google 和 StackOverflow,但我似乎无法找到我正在寻找的确切内容。我尝试观看视频,但我不明白它是如何工作的,因为我使用单选按钮作为我的选项。非常感谢您的帮助。

【问题讨论】:

  • 忽略以前的消息 - 有什么办法可以修复/清理这段代码吗?

标签: php html forms switch-statement


【解决方案1】:

因此,当用户选择一个选项并点击提交按钮时,流程页面将处理他/她选择的内容并重定向回索引,并显示用户选择的消息并显示用户选择的内容已选择。这很简单。

你的 index.php:

if(isset($_GET['item']) && strlen($_GET['item'])>0) {
if($_GET['item'] == 1) {
echo "You have chosen VIP Package 1!";
}
if($_GET['item'] == 2) {
echo "You have chosen VIP Package 2!";
}
if($_GET['item'] == 3) {
echo "You have chosen VIP Package 3!";
}
if($_GET['item'] == "none") {
echo "You have not chosen anything!";
}
}

<form action="shop.php" method="post" name="submit">
        <input type="radio" name="order1" value="vip1">VIP Package 1<br />
        <input type="radio" name="order2" value="vip2">VIP Package 2<br />
        <input type="radio" name="order3" value="vip3">VIP Package 3<br />

        <input type="submit" name="submit" value="Submit">
</form>

你的shop.php:

<?php
if(isset($_POST['submit'])) {
$order1 = $_POST['order1'];
$order2 = $_POST['order2'];
$order3 = $_POST['order3'];
if(empty($order1) && empty(order2) && empty (order3)) {
header("Location: index.php?item=none");
}
if($order1 == 1) {
header("Location: index.php?item=1");
}
else {
}
if($order2 == 1) {
header("Location: index.php?item=2");
}
else {
}
if($order3 == 1) {
header("Location: index.php?item=3");
}
else {
}
}
?>

【讨论】:

    【解决方案2】:

    您的 &lt;form&gt; 方法是 post ,但您正在使用 $_GET 进行访问。将其更改为 $_POST

    看这里

     if(isset($_GET['order'])) // Must be $_POST
    

    将所有这些事件从 $_GET 更改为 $_POST

    【讨论】:

    • 工作,干杯。非常感激。因此,澄清一下,如果通过 POST 发送某些内容,它必须将其作为 POST 抓取吗?没有得到?
    • 忽略以前的消息 - 有什么办法可以修复/清理这段代码吗?
    • form 代码移到isset() 的else 语句中的顶部
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-17
    • 1970-01-01
    相关资源
    最近更新 更多