如果未在 php 中设置表单值,则执行条件

Execute a condition if form values are not set in php

如果未设置表单值,我正在尝试执行一段代码,但它无法正常工作。

这是我的表格:

<form method="post" action="downloadreport.php">
    <div class="col-md-12" >
        <div class="form-group label-floating">
            <label class="control-label">From  Date</label>
            <input type="text" class="form-control" id="datepicker" name="datepicker" > 
        </div>
    </div>
    <div class="col-md-12">
        <div class="form-group label-floating">
            <label class="control-label">To Date</label>
            <input type="text" class="form-control" id="datepicker1" name="datepicker1" > 
        </div>
    </div>
    <div class="col-md-12">
        <div class="form-group label-floating">
            <label class="control-label">Select Usertype</label>
            <select name="trackforums" id="trackforumns" class="form-control" >     
                <option value="1">Active</option>
                <option value="0">Inactive</option>
                <option value="3">Active/Inactive</option>
            </select>
        </div>
    </div>
    <div class="col-md-12">
        <div class="form-group label-floating">
            <button type="submit" name="submit" value="submit" class="btn btn-info form-control">Download Report</button>
        </div>
    </div>
</form>

这是我的表单值

if (isset($_POST['submit'])) {
    $fromdate =$_POST['datepicker'];
    $todate =  $_POST['datepicker1'];
    $usertype= $_POST['trackforums'];

    if($todate >= $fromdate) {
        //execute report with dates
    } elseif(isset($_POST[fromdate]) && $_POST[todate] = "") {
        //execute full report
    } else {
        echo "Your To date should be greater than from date";
    }
 }

当我尝试这样做时,如果我没有在表单字段中输入任何日期,它不会进入 elseif 条件。

您的表单在缺少日期值时提供空字符串; empty() 可以检查一下。 empty() 提供检查丢失密钥的额外好处,因此您不会收到通知。

未测试的建议条件块:

if (!isset($_POST['submit'])) {
    echo "No submission";
} elseif (empty($_POST['datepicker']) || empty($_POST['datepicker1'])) {
    echo "at least one date picker is empty, treat as no dates picked";
} elseif ($_POST['datepicker1'] >= $_POST['datepicker']) {
    echo "invalid To date";
} else {
    echo "execute report within valid date range
}