草庐IT

PHP 表单限制选项

coder 2024-05-03 原文

我对 PHP 还是个新手,所以请多多包涵。我认为我走在正确的轨道上,但我就是不太明白。

目标是使用单选按钮和复选框制作一个简单的订单。他们虽然有限制。在这种情况下,巧克力冰淇淋上没有巧克力屑,花生酱冰淇淋上也没有核桃。我已经尝试了将近 4 个小时来弄清楚如何让它先检查一个,然后再检查另一个。

感谢任何帮助。

HTML代码:

    <DOCTYPE xhtml>
    <head>
    <title>Lab 4 - Ice Cream</title>
    <link rel="stylesheet" type="text/css" href="lab4.css">
    </head>
    <body>
    <div id="container">
    <h3>Ice Cream Order Form</h3>
    <hr>
    <form action="lab4.php" method="post">
    Please choose a flavor:
    <ul><li><input type="radio" name="flavor" value="Vanilla" checked="checked">Vanilla</li>
    <li><input type="radio" name="flavor" value="Chocolate">Chocolate</li>
    <li><input type="radio" name="flavor" value="Peanut Butter">Peanut Butter</li>
    </ul>

    Please choose your toppings:
    <ul>
    <li><input type="checkbox" name="toppings[0]" value="Cherries">Cherries</li>
    <li><input type="checkbox" name="toppings[1]" value="Chocolate Sprinkles" id="chocsprink">Chocolate Sprinkles</li>
    <li><input type="checkbox" name="toppings[2]" value="Pineapple">Pineapple</li>
    <li><input type="checkbox" name="toppings[3]" value="Walnuts">Walnuts</li>
    <li><br /></li>
    <li><input id="submit" type="Submit" name="Submit" value="Submit"><input id="reset" type="Reset" name="Reset" value="Reset"></li>

    <div id="note">
    <span>Please note: We are unable to put chocolate sprinkles on chocolate ice cream.        </span><br />
    <span>Please note: We are unable to put walnuts on peanut butter ice cream.</span>
    </div>
    </div>
    </form>


    </body>
    </html>

PHP代码:

    $toppings=$_POST['toppings'];
    $flavor=$_POST['flavor'];
    $break='<br>';

    if (isset($_POST['toppings[1]'])) { 
        $choc = True;}

    if (isset($_POST['flavor'])==Chocolate){
        $flav = True;}

    if($choc == True && $flav === True){
    echo 'We are sorry, but you can not put chocolate sprinkles on chocolate ice cream.';}

        else {
        echo 'Thank You. <br /><br ?>';
        echo 'Your order has been placed<br /><br />';
        echo '';
        echo "You have chosen the <u><b>$flavor</b></u> ice cream with the following toppings:<br />";
    }
    if (!empty($_POST['toppings'])) {
        foreach($_POST['toppings'] as $alltoppings) {
            echo $alltoppings . $break;}}

    ?>

最佳答案

这个:

if (isset($_POST['flavor'])==Chocolate){

错了。 isset检查该值是否已设置,并返回一个 bool 值。这也会导致警告 Chocolate 是一个未定义的常量,它将使用该值作为字符串。

如果你想检查存在和它的值,像这样:

if (isset($_POST['flavor']) && $_POST['flavor']=="Chocolate"){

除此之外(正如其他人所指出的),您应该以不同的方式引用您的浇头:

if (isset($_POST['toppings'][1])) { 

忠告,启用错误报告并显示所有错误。它将帮助您制作更健壮的脚本。

关于PHP 表单限制选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19289108/

有关PHP 表单限制选项的更多相关文章

  1. ruby-on-rails - Rails 编辑表单不显示嵌套项 - 2

    我得到了一个包含嵌套链接的表单。编辑时链接字段为空的问题。这是我的表格:Editingkategori{:action=>'update',:id=>@konkurrancer.id})do|f|%>'Trackingurl',:style=>'width:500;'%>'Editkonkurrence'%>|我的konkurrencer模型:has_one:link我的链接模型:classLink我的konkurrancer编辑操作:defedit@konkurrancer=Konkurrancer.find(params[:id])@konkurrancer.link_attrib

  2. ruby - 默认情况下使选项为 false - 2

    这是在Ruby中设置默认值的常用方法:classQuietByDefaultdefinitialize(opts={})@verbose=opts[:verbose]endend这是一个容易落入的陷阱:classVerboseNoMatterWhatdefinitialize(opts={})@verbose=opts[:verbose]||trueendend正确的做法是:classVerboseByDefaultdefinitialize(opts={})@verbose=opts.include?(:verbose)?opts[:verbose]:trueendend编写Verb

  3. ruby - 如何在 Rails 4 中使用表单对象之前的验证回调? - 2

    我有一个服务模型/表及其注册表。在表单中,我几乎拥有服务的所有字段,但我想在验证服务对象之前自动设置其中一些值。示例:--服务Controller#创建Action:defcreate@service=Service.new@service_form=ServiceFormObject.new(@service)@service_form.validate(params[:service_form_object])and@service_form.saverespond_with(@service_form,location:admin_services_path)end在验证@ser

  4. ruby-on-rails - 使用 config.threadsafe 时从 lib/加载模块/类的正确方法是什么!选项? - 2

    我一直致力于让我们的Rails2.3.8应用程序在JRuby下正确运行。一切正常,直到我启用config.threadsafe!以实现JRuby提供的并发性。这导致lib/中的模块和类不再自动加载。使用config.threadsafe!启用:$rubyscript/runner-eproduction'pSim::Sim200Provisioner'/Users/amchale/.rvm/gems/jruby-1.5.1@web-services/gems/activesupport-2.3.8/lib/active_support/dependencies.rb:105:in`co

  5. Ruby on Rails regexp equals-tilde 与 array include 用于检查选项列表 - 2

    我正在使用Rails3.2.3和Ruby1.9.3p0。我发现我经常需要确定某个字符串是否出现在选项列表中。看来我可以使用Ruby数组.includemethod:或正则表达式equals-tildematchshorthand用竖线分隔选项:就性能而言,一个比另一个好吗?还有更好的方法吗? 最佳答案 总结:Array#include?包含String元素,在接受和拒绝输入时均胜出,对于您的示例只有三个可接受的值。对于要检查的更大的集合,看起来Set#include?和String元素可能会获胜。如何测试我们应该根据经验对此进行测试

  6. ruby-on-rails - 从 ActiveAdmin has_many 表单助手中删除 "Add new"按钮 - 2

    我在事件管理员编辑页面中有嵌套资源,但我只想允许管理员编辑现有资源的内容,而不是添加新的嵌套资源。我的代码看起来像这样:formdo|f|f.inputsdof.input:authorf.input:contentf.has_many:commentsdo|comment_form|comment_form.input:contentcomment_form.input:_destroy,as::boolean,required:false,label:'Remove'endendf.actionsend但它在输入下添加了“添加新评论”按钮。我怎样才能禁用它,并只为主窗体保留f.ac

  7. ruby - 选项卡的 Rubocop - 2

    我们想使用Rubocop来验证我们的ruby​​在语法上是否正确并遵循基本代码指南。除此之外我们有这个规则:我们使用制表符缩进以允许任何人决定他们希望如何呈现它们(将它们显示为2或4个空格)问题是rubocop似乎设计为完全拒绝缩进标签。我们怎样才能超越所有这些规则成为太空合规者?编辑:我正在考虑覆盖这个模块https://github.com/bbatsov/rubocop/blob/master/lib/rubocop/source_parser.rb将我文件中的所有制表符替换为2个空格,以创建gem的幻觉... 最佳答案 添加

  8. ruby - Ruby 中的选项菜单 - 2

    我正在尝试在Ruby中创建一个菜单,以便根据用户输入的内容,取决于调用的类。然后在这种情况下它将返回到“Main”或类“Options”。我希望有人能帮助我。这是我的代码。modulePhysicsG=21C=20000Pi=3.14D=100endclassOptionsputs"Pleaseselect1forAccelerationand2forEnergy."option=gets()ifoption==1thenputs"AccelCalc"#ThisisthebitthatneedstodirecttheusertotheclassAccelCalcelseputs"Ene

  9. ruby-on-rails - 用于 Rails 的 HAML 表单 - 2

    我目前正在尝试将ERB布局转换为HAML。这是我不断收到的错误:index.html.haml:18:syntaxerror,unexpected')'));}\n#{_hamlout.format_...这是HAML页面:.row-fluid.span6%h2TodoList.span6%h2{:style=>"text-align:right;"}document.write(today)%hr.divider.row-fluid.span6%h2.small_headNewTask=render:partial=>'layouts/form_errors',:locals=>{:

  10. ruby-on-rails - 限制 will_paginate 中的页数 - 2

    因此,在使用Sphinx时,搜索限制为1000个结果。但是,如果will_paginate生成的结果分页链接超过1000个,请不要考虑这一点,并提供指向超过1000/per_page的页面的链接。设置最大页数或类似内容的明显方法是什么?干杯。 最佳答案 我认为最好将参数:total_entries提交给方法paginate:@posts=Post.paginate(:page=>params[:page],:per_page=>30,:total_entries=>1000)will_paginate将仅为显示1000个结果所需的页

随机推荐