【问题标题】:Regex Validate One Letter Multiple Choice正则表达式验证一个字母多项选择
【发布时间】:2015-03-27 01:47:11
【问题描述】:

这里的新人 - 我有三个选择,如果他们选择 A,我想让用户只传递到下一页“4.html”,否则将它们发送到 google.com。这是我到目前为止所得到的:(

if(empty($_POST['choice'])){
    echo "Please select at least one choice..!!";
    //this should send them to google.com if they select none or the wrong one
}
else{
     foreach($_POST['choice'] as $choice){
        header('Location: /4.html');
    }
}


<form action="multichoice.php" method="post">
    <input id="checkbox" type="checkbox" name="choice[]" value="A" />A&#x29;Choice A
    <input id="checkbox" type="checkbox" name="choice[]" value="B" />B&#x29;Choice B
    <input id="checkbox" type="checkbox" name="choice[]" value="c" />C&#x29;Choice C
<input id="input"onclick="return myFunction()"  type="submit" value="Submit"></input>
</form>

非常感谢你们的帮助!

【问题讨论】:

  • 如果您打算回显“请至少选择一个选项..!!”,则不能同时使用回显和标题。并重定向。您只能使用标题。如果您想同时执行这两项操作,则需要使用具有足够秒数的元刷新方法,这将使用户有足够的时间来阅读消息。加上这个foreach($_POST['choice'] as $choice){ header('Location: /4.html');我不知道你想在这里做什么。您还应该发布相关的 HTML 表单。
  • 如果是这种情况,我不需要回应“请至少选择一个选项”。如果他们选择了错误的或者没有选择,我只需要重定向,如果他们选择了正确的,我需要将它们发送到 url “4.html”
  • “我的表格如下:” - 将其放在您的问题中,而不是在 cmets 中。然后将其从 cmets 中删除。那是难以辨认的。
  • 知道了,很抱歉。
  • 如果您使用单选按钮,这会更容易/更简单,但并非不可能。您是使用复选框,还是可以使用单选按钮?另外,return myFunction() 函数在哪里?那是一个 JS 函数,它不在你的问题中。

标签: php regex validation choice


【解决方案1】:

旁注:不能同时使用 echo 和 header,否则会在 header 之前输出。

请参阅以下链接(脚注),该链接旨在在同一文件中运行:

复选框方法:(与下面的单选按钮不同)

<?php 

if(isset($_POST['submit'])){

if(isset($_POST['choice'])){

  foreach($_POST['choice'] as $choice){

    if($choice == "A"){
     echo "You chose A" . "\n";
   // header('Location: /4.html');
    // exit;

    }

    if($choice == "B"){
    echo "You chose B" . "\n";
    }

    if($choice == "C"){
    echo "You chose C" . "\n";
    }


    } // brace for foreach

} // brace for if(isset($_POST['choice']))

    // else for if(isset($_POST['choice']))
    else{
    echo "Please make a choice.";
    }

} // brace for if(isset($_POST['submit']))

?>

<form action="" method="post">
    <input id="checkbox" type="checkbox" name="choice[]" value="A" />A&#x29;Choice A
    <input id="checkbox" type="checkbox" name="choice[]" value="B" />B&#x29;Choice B
    <input id="checkbox" type="checkbox" name="choice[]" value="C" />C&#x29;Choice C
<input id="input" onclick="return myFunction()" name="submit"  type="submit" value="Submit">
</form>

单选按钮方法:(edited)并向提交按钮添加了名称属性。旁注:&lt;/input&gt; 不是有效标签;它已被删除。

<?php 

$choice = $_POST['choice'];

if(isset($_POST['submit'])){

    if($choice == "A"){
    // echo "You chose A" . "\n";
     header("Location: /4.html");
     exit; // stop further execution
    }

    if($choice == "B"){
    echo "You chose B" . "\n";
    }

    if($choice == "C"){
    echo "You chose C" . "\n";
    }

if(empty($_POST['choice'])){

     header("Location: http://www.google.com/");
     exit; // stop further execution
}

} // submit conditional

?>

<form action="" method="post">
    <input id="radio" type="radio" name="choice" value="A" />A&#x29;Choice A
    <input id="radio" type="radio" name="choice" value="B" />B&#x29;Choice B
    <input id="radio" type="radio" name="choice" value="C" />C&#x29;Choice C
<input id="input" onclick="return myFunction()" name="submit" type="submit" value="Submit">
</form>

脚注:

关于在标头前输出的主题见以下内容:

此外,您可以使用单选按钮进行单选,而无需数组。


如果您遇到错误/通知/警告,请在下面的某个地方:

error reporting 添加到文件顶部,这将有助于查找错误。

<?php 
error_reporting(E_ALL);
ini_set('display_errors', 1);

// rest of your code

旁注:错误报告只能在暂存阶段完成,而不能在生产阶段完成。

【讨论】:

  • 谢谢弗雷德!我没有看到它在哪里说“如果选择了 A,请转到 4.html”?
  • @JoshAguirre 不客气。好吧,你看到上面写着echo "You chose A" . "\n"; 了吗?您可以将其替换为 header('Location: /4.html');,但不能同时使用 echo。
  • @JoshAguirre 重新加载它,我已经进行了编辑以向您展示在哪里使用它。您也可以使用与我相同的方式为其他人做同样的事情。
  • 我已经得到它的工作除了重定向如果“A”。它也只是带我去谷歌。
  • @JoshAguirre 你使用的是我的哪个版本的代码,是复选框还是收音机?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多