我对 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/
我得到了一个包含嵌套链接的表单。编辑时链接字段为空的问题。这是我的表格: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
这是在Ruby中设置默认值的常用方法:classQuietByDefaultdefinitialize(opts={})@verbose=opts[:verbose]endend这是一个容易落入的陷阱:classVerboseNoMatterWhatdefinitialize(opts={})@verbose=opts[:verbose]||trueendend正确的做法是:classVerboseByDefaultdefinitialize(opts={})@verbose=opts.include?(:verbose)?opts[:verbose]:trueendend编写Verb
我有一个服务模型/表及其注册表。在表单中,我几乎拥有服务的所有字段,但我想在验证服务对象之前自动设置其中一些值。示例:--服务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
我一直致力于让我们的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
我正在使用Rails3.2.3和Ruby1.9.3p0。我发现我经常需要确定某个字符串是否出现在选项列表中。看来我可以使用Ruby数组.includemethod:或正则表达式equals-tildematchshorthand用竖线分隔选项:就性能而言,一个比另一个好吗?还有更好的方法吗? 最佳答案 总结:Array#include?包含String元素,在接受和拒绝输入时均胜出,对于您的示例只有三个可接受的值。对于要检查的更大的集合,看起来Set#include?和String元素可能会获胜。如何测试我们应该根据经验对此进行测试
我在事件管理员编辑页面中有嵌套资源,但我只想允许管理员编辑现有资源的内容,而不是添加新的嵌套资源。我的代码看起来像这样: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
我们想使用Rubocop来验证我们的ruby在语法上是否正确并遵循基本代码指南。除此之外我们有这个规则:我们使用制表符缩进以允许任何人决定他们希望如何呈现它们(将它们显示为2或4个空格)问题是rubocop似乎设计为完全拒绝缩进标签。我们怎样才能超越所有这些规则成为太空合规者?编辑:我正在考虑覆盖这个模块https://github.com/bbatsov/rubocop/blob/master/lib/rubocop/source_parser.rb将我文件中的所有制表符替换为2个空格,以创建gem的幻觉... 最佳答案 添加
我正在尝试在Ruby中创建一个菜单,以便根据用户输入的内容,取决于调用的类。然后在这种情况下它将返回到“Main”或类“Options”。我希望有人能帮助我。这是我的代码。modulePhysicsG=21C=20000Pi=3.14D=100endclassOptionsputs"Pleaseselect1forAccelerationand2forEnergy."option=gets()ifoption==1thenputs"AccelCalc"#ThisisthebitthatneedstodirecttheusertotheclassAccelCalcelseputs"Ene
我目前正在尝试将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=>{:
因此,在使用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个结果所需的页