Php 如何将$typ=$POST['type']与所选休假类型进行比较?
我无法找到将所选休假类型$typ==2与病假id进行比较的方法 $typ=$\u POST['typ']存储从数据库获得的假期类型,例如年假和病假。如果我从表格中选择了休假类型,并且是病假,那么我只需要在休假表中插入休假日期和恢复日期,否则如果选择的休假类型是年假,那么我需要在休假表中插入休假日期、恢复日期,并更新休假权利表,以减少休假权利余额 这是我表格的摘录Php 如何将$typ=$POST['type']与所选休假类型进行比较?,php,mysql,sql,Php,Mysql,Sql,我无法找到将所选休假类型$typ==2与病假id进行比较的方法 $typ=$\u POST['typ']存储从数据库获得的假期类型,例如年假和病假。如果我从表格中选择了休假类型,并且是病假,那么我只需要在休假表中插入休假日期和恢复日期,否则如果选择的休假类型是年假,那么我需要在休假表中插入休假日期、恢复日期,并更新休假权利表,以减少休假权利余额 这是我表格的摘录 <form method="post" action="<?php echo $_SERVER['PHP_SELF'];
<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>" >
<div class="row form-group">
<div class="col-lg-12">
<label>Leave Type</label>
<select size="1" name="typ">
<?php
$typs = mysqli_query($dbconn,"select * from type") or die('Query
failed: ' . mysqli_error());
while ($line = mysqli_fetch_array($typs))
{
echo "<option value='" . $line['typ_id'] . "'>";
echo $line['typ_name'] . "</option>";
}
?>
</select>
</div>
</div>
</form>
这是我的意见
if(isset($_POST['submit']))
{
$empnum = $_POST['empnum'];
// echo $empnum;
$leave_date = $_POST['leave_date'];
$resume_date = $_POST['resume_date'];
$typ = $_POST['typ'];//leave type e.g Annual Leave, Sick Leave
// this is a function to get the number of leave days from a form
Function GetNoOfDays($leave_date,$resume_date){
$leave_dater = $leave_date;
$resume_dater = $resume_date;
$datediff = $resume_date - $leave_date;
return round($datediff / (60 * 60 * 24));
}
echo $leavetaken = GetNoOfDays(strtotime($leave_date),strtotime($resume_date));
//if a leave type is annual leave, $qry1 is excuted in the if body otherwise
//if a leave type is sick leave $qry1 and qry2 in the else are excuted
if($typ === 2) // 2 is a sick leave id if leave type is equal to 2 (sick leave)
{
$qry1 = "INSERT INTO eleave VALUES(''," .
"'$empnum','$leave_date','$resume_date'," .
"'$typ')";
}else{
$qry1 = "INSERT INTO eleave VALUES(''," .
"'$empnum','$leave_date','$resume_date'," .
"'$typ')";
$qry2 = "UPDATE eleave_entitlement SET annual_entitlement = annual_entitlement-$leavetaken WHERE emp_num = $empnum";
}
// execute query
$added = mysqli_query($dbconn,$qry1).mysqli_query($dbconn,$qry2);
// report results
if(($added) != "")
echo "Record added successfully." . "<br>";
else
{
echo "ERROR: Record could not be added<br>" .
mysqli_error($dbconn);
}
// close connection
mysqli_close($dbconn);
}
?>
问题是,当我在if语句的form my else部分选择年假或病假时,总是执行。这意味着即使在我选择病假时,休假权利余额也总是会减少您使用comparator==来比较值和数据类型。$typ的数据类型是String,因此2==2将返回false。如果您想使用===可以使用int$typ将$typ强制转换为整数,或者只需将===更改为==。我已更改为$typ=int$\u POST['typ']但是===但仍然求值为false,即使我使用if$typ==2,仍然求值为false,还有一个额外的错误未定义变量:qry2请帮助未定义变量$qry2,因为您尚未在条件的if部分定义$qry2。您只在else中声明$qry2,因此当您在查询中使用它时,它将导致错误{$qry1=插入eleave值、'$empnum'、'$leave_date'、'$resume_date'、'$typ'$qry2=更新eleave_权利集年度权利=年度权利-$leavetake,其中emp_num=$empnum;$add1=mysqli_查询$dbconn,$qry2;}else{$qry1=插入eleave值,'$empnum','$leave_date','$resume_date','$typ';$added=mysqli_query$dbconn,$qry1;未定义的变量消失了,if和else工作正常。我现在可以根据假期类型选择进行插入。leave是一年一次的。如果选择了病假,则休假福利余额不会减少。如果您正在学习PHP,我建议您查看准备好的语句以获得更安全的查询,并尽可能选择一个框架。对于初学者,Laravel将是一个不错的选择。