我想知道是否有人可以帮助我这个。我有一个php联系人表单与两个必填字段。用户需要填写文本字段,或者从下拉列表中选择一个选项。其中一个需要填写。以下是我的文件:
// previous requisition number
if(trim($_REQUEST['prevReqNum']) === '') {
$prevReqNumError = '<span class="error">Please enter your previous requisition number.</span>';
$hasError = true;
} else if (!preg_match("/^([1]-)?[a-z0-9]{6}$/i", trim($_REQUEST['prevReqNum']))) {
$prevReqNumError = '<span class="error">You entered an invalid requisition number.</span>';
$hasError = true;
// assigned engineer
} else if(empty($_POST['engineer'])) {
$engineerError = '<span class="error">Please select the engineer that you were working with.</span>';
$hasError = true; }
else{
$engineer = $_POST['engineer'];
}
,这里是HTML:
<p><label for="prevReqNum">*Previous Requisition Number: </label><input type="text" size="40" name="prevReqNum" id="prevReqNum" value="<?php if(isset($_POST['prevReqNum'])) echo $_POST['prevReqNum'];?>" placeholder=" eg. 000000" /> <?php if($prevReqNumError != '') { ?><span class="error"><?=$prevReqNumError;?></span><?php } ?>
or <label for="engineer">Assigned Engineer: </label><select name='engineer' id="engineer" size="1">
<option value="" selected="selected">Select</option>
<option <?php echo $engineer=='Dexter'?'selected':''; ?> >Dexter</option>
<option <?php echo $engineer=='Jake'?'selected':''; ?> >Jake</option>
<option <?php echo $engineer=='Mo'?'selected':''; ?> >Mo</option>
<option <?php echo $engineer=='Richard'?'selected':''; ?> >Richard</option>
</select> <?php if($engineerError != '') { ?><span class="error"><?=$engineerError;?></span><?php } ?></p>
所以用户要么填写申请号,要么选择和他们一起工作的工程师。我把申请号码文本框弄好了。当我留空时,我得到一条错误信息。但是当我不选中工程师下拉菜单时,我没有得到任何错误信息。请原谅我,我不是一个程序员,所以我不确定这里有什么问题。谢谢你!
您应该能够将其添加到PHP中。看起来你只需要检查一个工程师和一个prereqnum,如果它们都不存在,返回一个错误消息。这只是遵循其他验证。
if (empty($_POST['engineer']) && trim($_REQUEST['prevReqNum']) === '') {
$prevReqNumError = '<span class="error">Please choose an engineer or enter a requisition number.</span>';
$hasError = true;
}
下面将整理潜在的错误。
<?php
$reqNumber=trim($_POST['prevReqNum']);
$engineer=$_POST['engineer'];
if(empty($reqNumber) && empty($engineer)){
$prevReqNumError = '<span class="error">Please enter your previous requisition number or select an engineer.</span>';
$hasError = true;
}
else{
if(!empty($reqNumber)) {
if (!preg_match("/^([1]-)?[a-z0-9]{6}$/i", $reqNumber)) {
$prevReqNumError = '<span class="error">You entered an invalid requisition number.</span>';
$hasError = true;
}
else{
if(empty($_POST['engineer'])){
$engineerError = '<span class="error">Please select the engineer that you were working with.</span>';
$hasError = true;
}
}
}
}
?>
主要问题是逻辑的布局。仔细看,你有:
if
else if
else if
else
一旦PHP匹配了"if",其他测试将被跳过。
你想用if/else表示前一个请求号,另一个if/else表示指定的工程师,因为如果其中一个错误,你想抛出一个错误。
我想帮忙。这会有帮助的。
Add Form "action" and "onsubmit" in <form></form> tag.
<form method="POST" action="Give Here" onsubmit="return CheckValidation()">
<p>
<label for="prevReqNum">*Previous Requisition Number: </label>
<input type="text" size="40" name="prevReqNum" id="prevReqNum" value="<?php if(isset($_POST['prevReqNum'])) echo $_POST['prevReqNum'];?>" placeholder=" eg. 000000" />
<span class="error InvalidRegdNo" style="display:none;">You entered an invalid requisition number.</span>
<span class="error EmptyRegdNo" style="display:none;">Please enter your previous requisition number.</span>
OR <label for="engineer">Assigned Engineer: </label>
<select name='engineer' id="engineer" size="1">
<option value="" selected="selected">Select</option>
<option <?php echo $engineer=='Dexter'?'selected':''; ?> >Dexter</option>
<option <?php echo $engineer=='Jake'?'selected':''; ?> >Jake</option>
<option <?php echo $engineer=='Mo'?'selected':''; ?> >Mo</option>
<option <?php echo $engineer=='Richard'?'selected':''; ?> >Richard</option>
</select>
<span class="error SelectEngineer" style="display:none;">Please select the engineer that you were working with.</span>
<span class="error SelectAtleastOne" style="display:none;">Please select atleast engineer or type registration no.</span>
</p>
</form>
<script>
function CheckValidation()
{
var RegNo=$('#prevReqNum').val();
var Engineer=$('#engineer').val();
/*First Check Valid Registration Number*/
if (!preg_match("/^([1]-)?[a-z0-9]{6}$/i", trim(RegNo)))
{
$('.InvalidRegdNo').show();
return false;
}
if(RegNo=="" && Engineer=="")
{
$('.SelectAtleastOne').show();
return false;
}
}
</script>