php - 如何将 $typ = $POST['type'] 与选择的休假类型进行比较?
问题描述
请假输入表我无法找到将所选休假类型 $typ === 2 与病假 ID 进行比较的方法。
$typ = $_POST['typ'] 存储从数据库中获取的休假类型,例如年假和病假。如果我从表格中选择休假类型并且它是病假,那么我只需要在休假表中插入 leave_date 和 resume_date 否则如果选择的休假类型是年度,那么我需要在休假表中插入 leave_date、resume_date 作为很好地更新 leave_entitlement 表只是为了减少 leave_entitlement 余额
这是我的表格的摘录
<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 语句的 else 部分总是执行。这意味着即使我选择病假,leave_entitlement 余额总是会减少
解决方案
您使用比较器===
来比较值和数据类型。$typ 的数据类型是 String,所以"2" === 2
会返回 false。如果你想使用===
,你可以通过使用将 $typ 转换为整数,(int) $typ
或者只是更改===
为==
.
推荐阅读
- css - 如何根据 woocommerce 父产品类别更改页面的 css?
- pandas - 有没有办法在 Pandas 中合并 2 个数据框,以保持 df1 的值不变
- python-2.x - 有没有办法在 Python 2.x 中使用 csv.reader() 模块读取固定长度的文件
- google-sheets - 为什么我不能制作使用 importrange 的 Google 表格项目的精确副本?
- c# - 在某个目录中检查哪些文件具有某个名称前缀并删除相同的前缀
- bash - 为什么此命令“google-auth”在终端中有效,但在 bash 脚本中无效?
- tabulator - 在制表器中显示/隐藏或切换嵌套表子项
- instagram-api - Instagram Graph API:将 ig_id 转换为 id - 从 Instagram API 迁移 => Graph API
- python - 阅读腌制字典 Python
- keras - Keras - 如何获取 GRU 单元状态?