我试图弄清楚,如果用户在两个字段中都选择了“0”,则会弹出错误消息并说明至少其中一个字段必须填写数量。
正如您在下面看到的:表单字段有一个与之关联的错误,即 $maleErr 或 $femaleErr ...
我是这样写的:
if (($_POST["male"] === "") && ($_POST["female"] === "")) {
$quantityErr = "Please fill at least one of the fields, either male or female."
然后将 $quantityErr 添加到表单字段中,如下所示:(它的值(value)不起作用。页面只是空白。
<div class="field">
<label>* Number of People</label>
<select class="ui dropdown" name="female">
<option value="">Gender Female</option>
<option <?php if ($female === 0 ) echo 'selected' ; ?> value="0">0</option>
<option <?php if ($female == 1 ) echo 'selected' ; ?> value="1">1</option>
<option <?php if ($female == 2 ) echo 'selected' ; ?> value="2">2</option>
<option <?php if ($female == 3 ) echo 'selected' ; ?> value="3">3</option>
<option <?php if ($female == 4 ) echo 'selected' ; ?> value="4">4</option>
<option <?php if ($female == 5 ) echo 'selected' ; ?> value="5">5</option>
<option <?php if ($female == 6 ) echo 'selected' ; ?> value="6">6</option>
<option <?php if ($female == 7 ) echo 'selected' ; ?> value="7">7</option>
<option <?php if ($female == 8 ) echo 'selected' ; ?> value="8">8</option>
<option <?php if ($female == 9 ) echo 'selected' ; ?> value="9">9</option>
<option <?php if ($female == 10 ) echo 'selected' ; ?> value="10">10</option>
</select>
<?php if(isset($femaleErr)) print ('<span class="error">* ' . $femaleErr || $quantityErr . '</span>'); ?>
</div>
没有如上所述修改的当前表单字段
<div class="field">
<label>* Number of People</label>
<select class="ui dropdown" name="male">
<option value="">Gender Male</option>
<option <?php if ($male === 0 ) echo 'selected' ; ?> value="0">0</option>
<option <?php if ($male == 1 ) echo 'selected' ; ?> value="1">1</option>
<option <?php if ($male == 2 ) echo 'selected' ; ?> value="2">2</option>
<option <?php if ($male == 3 ) echo 'selected' ; ?> value="3">3</option>
<option <?php if ($male == 4 ) echo 'selected' ; ?> value="4">4</option>
<option <?php if ($male == 5 ) echo 'selected' ; ?> value="5">5</option>
<option <?php if ($male == 6 ) echo 'selected' ; ?> value="6">6</option>
<option <?php if ($male == 7 ) echo 'selected' ; ?> value="7">7</option>
<option <?php if ($male == 8 ) echo 'selected' ; ?> value="8">8</option>
<option <?php if ($male == 9 ) echo 'selected' ; ?> value="9">9</option>
<option <?php if ($male == 10 ) echo 'selected' ; ?> value="10">10</option>
</select>
<?php if(isset($maleErr)) print ('<span class="error">* ' . $maleErr . '</span>'); ?>
</div>
<div class="field">
<label>* Number of People</label>
<select class="ui dropdown" name="female">
<option value="">Gender Female</option>
<option <?php if ($female === 0 ) echo 'selected' ; ?> value="0">0</option>
<option <?php if ($female == 1 ) echo 'selected' ; ?> value="1">1</option>
<option <?php if ($female == 2 ) echo 'selected' ; ?> value="2">2</option>
<option <?php if ($female == 3 ) echo 'selected' ; ?> value="3">3</option>
<option <?php if ($female == 4 ) echo 'selected' ; ?> value="4">4</option>
<option <?php if ($female == 5 ) echo 'selected' ; ?> value="5">5</option>
<option <?php if ($female == 6 ) echo 'selected' ; ?> value="6">6</option>
<option <?php if ($female == 7 ) echo 'selected' ; ?> value="7">7</option>
<option <?php if ($female == 8 ) echo 'selected' ; ?> value="8">8</option>
<option <?php if ($female == 9 ) echo 'selected' ; ?> value="9">9</option>
<option <?php if ($female == 10 ) echo 'selected' ; ?> value="10">10</option>
</select>
<?php if(isset($femaleErr)) print ('<span class="error">* ' . $femaleErr . '</span>'); ?>
</div>
当前错误检查没有修改如上所述
if ($_POST["male"] === "") {
$maleErr = "# of people (gender male) required";
} else {
$male = test_input($_POST["male"]);
}
if ($_POST["female"] === "") {
$femaleErr = "# of people (gender female) required";
} else {
$female = test_input($_POST["female"]);
}
额外编辑
可以改用它吗?因为每次我尝试提交表单时,不幸的是它提交了而不是弹出错误。
if (($_POST["male"] == 0) && ($_POST["female"] == 0)) {
$quantityErr = "Please fill at least one of the fields, either male or female.";
}
这就是字段的内容:(女性和男性都相同)
<?php if(isset($femaleErr)) print ('<span class="error">* ' . $femaleErr . '</span>'); ?>
<?php if(isset($quantityErr)) print ('<span class="error">* ' . $quantityErr . '</span>'); ?>
最佳答案
首先,您应该打开错误报告或调查您的错误日志文件(如果已打开)。我这样说是因为您描述的白页是解析错误的结果。您忘记在此处的 isset 上将 $femaleErr 更改为 $quantityErr:
<?php if(isset($femaleErr)) print ('<span class="error">* ' . $femaleErr || $quantityErr . '</span>'); ?>
如果 $femaleErr 未定义,则此代码将永远不会运行,因为它未设置。 (我看不到它在您的示例中设置的位置)。
但您遇到问题的原因很可能是 ||。 print() 需要一个字符串。您的逻辑运算无效,如果正确完成,它将输出 1 或 0(真或假)而不是设置的变量:print('stuff'. ($varone || $vartwo) .'otherstuff')//打印 stuff1otherstuff。
所以改为尝试:
$msg = array();
if( isset($femaleErr) )
$msg[] = $femaleErr;
if( isset($quantityErr ) )
$msg[] = $quantityErr ;
foreach($msg as $msg)
{
echo '<span class="error">* '.$msg.'</span>';
}
这将检查每个变量,查看它们是否已设置,如果已设置,它将把它添加到消息数组中。然后 foreach 将遍历数组并打印出相应的消息。如果数组为空,则什么都不做。空数组是 foreach 的有效输入(只需要是一个数组)。
关于php - 如何在两个字段答案上都显示错误 '0',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33290680/
出于纯粹的兴趣,我很好奇如何按顺序创建PI,而不是在过程结果之后生成数字,而是让数字在过程本身生成时显示。如果是这种情况,那么数字可以自行产生,我可以对以前看到的数字实现垃圾收集,从而创建一个无限系列。结果只是在Pi系列之后每秒生成一个数字。这是我通过互联网筛选的结果:这是流行的计算机友好算法,类机器算法:defarccot(x,unity)xpow=unity/xn=1sign=1sum=0loopdoterm=xpow/nbreakifterm==0sum+=sign*(xpow/n)xpow/=x*xn+=2sign=-signendsumenddefcalc_pi(digits
我正在尝试测试是否存在表单。我是Rails新手。我的new.html.erb_spec.rb文件的内容是:require'spec_helper'describe"messages/new.html.erb"doit"shouldrendertheform"dorender'/messages/new.html.erb'reponse.shouldhave_form_putting_to(@message)with_submit_buttonendendView本身,new.html.erb,有代码:当我运行rspec时,它失败了:1)messages/new.html.erbshou
我在我的项目目录中完成了compasscreate.和compassinitrails。几个问题:我已将我的.sass文件放在public/stylesheets中。这是放置它们的正确位置吗?当我运行compasswatch时,它不会自动编译这些.sass文件。我必须手动指定文件:compasswatchpublic/stylesheets/myfile.sass等。如何让它自动运行?文件ie.css、print.css和screen.css已放在stylesheets/compiled。如何在编译后不让它们重新出现的情况下删除它们?我自己编译的.sass文件编译成compiled/t
我得到了一个包含嵌套链接的表单。编辑时链接字段为空的问题。这是我的表格: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
大约一年前,我决定确保每个包含非唯一文本的Flash通知都将从模块中的方法中获取文本。我这样做的最初原因是为了避免一遍又一遍地输入相同的字符串。如果我想更改措辞,我可以在一个地方轻松完成,而且一遍又一遍地重复同一件事而出现拼写错误的可能性也会降低。我最终得到的是这样的:moduleMessagesdefformat_error_messages(errors)errors.map{|attribute,message|"Error:#{attribute.to_s.titleize}#{message}."}enddeferror_message_could_not_find(obje
如何在buildr项目中使用Ruby?我在很多不同的项目中使用过Ruby、JRuby、Java和Clojure。我目前正在使用我的标准Ruby开发一个模拟应用程序,我想尝试使用Clojure后端(我确实喜欢功能代码)以及JRubygui和测试套件。我还可以看到在未来的不同项目中使用Scala作为后端。我想我要为我的项目尝试一下buildr(http://buildr.apache.org/),但我注意到buildr似乎没有设置为在项目中使用JRuby代码本身!这看起来有点傻,因为该工具旨在统一通用的JVM语言并且是在ruby中构建的。除了将输出的jar包含在一个独特的、仅限ruby
我正在使用的第三方API的文档状态:"[O]urAPIonlyacceptspaddedBase64encodedstrings."什么是“填充的Base64编码字符串”以及如何在Ruby中生成它们。下面的代码是我第一次尝试创建转换为Base64的JSON格式数据。xa=Base64.encode64(a.to_json) 最佳答案 他们说的padding其实就是Base64本身的一部分。它是末尾的“=”和“==”。Base64将3个字节的数据包编码为4个编码字符。所以如果你的输入数据有长度n和n%3=1=>"=="末尾用于填充n%
我主要使用Ruby来执行此操作,但到目前为止我的攻击计划如下:使用gemsrdf、rdf-rdfa和rdf-microdata或mida来解析给定任何URI的数据。我认为最好映射到像schema.org这样的统一模式,例如使用这个yaml文件,它试图描述数据词汇表和opengraph到schema.org之间的转换:#SchemaXtoschema.orgconversion#data-vocabularyDV:name:namestreet-address:streetAddressregion:addressRegionlocality:addressLocalityphoto:i
我在我的项目中添加了一个系统来重置用户密码并通过电子邮件将密码发送给他,以防他忘记密码。昨天它运行良好(当我实现它时)。当我今天尝试启动服务器时,出现以下错误。=>BootingWEBrick=>Rails3.2.1applicationstartingindevelopmentonhttp://0.0.0.0:3000=>Callwith-dtodetach=>Ctrl-CtoshutdownserverExiting/Users/vinayshenoy/.rvm/gems/ruby-1.9.3-p0/gems/actionmailer-3.2.1/lib/action_mailer
exe应该在我打开页面时运行。异步进程需要运行。有什么方法可以在ruby中使用两个参数异步运行exe吗?我已经尝试过ruby命令-system()、exec()但它正在等待过程完成。我需要用参数启动exe,无需等待进程完成是否有任何rubygems会支持我的问题? 最佳答案 您可以使用Process.spawn和Process.wait2:pid=Process.spawn'your.exe','--option'#Later...pid,status=Process.wait2pid您的程序将作为解释器的子进程执行。除