簡體   English   中英

PHP if-else條件不起作用

[英]PHP if-else condition not working

嘗試從if-else條件中檢索值時遇到問題。 我的查詢粘貼在下面:

    <?php
session_start();

if(!$_SESSION['login'] && !isset($_POST['submit'])) {
header("Location:LoginPage.php");
}

function filterTable($query) 
{

$db_name = "id555865_sales_db";
$mysql_username = "id555865_sales_db";
$mysql_password = "password";
$server_name = "localhost"; 
$conn = mysqli_connect($server_name, $mysql_username,$mysql_password,$db_name);
$filter_result = mysqli_query($conn,$query);
return $filter_result;
}


if(isset($_POST['submit']) && isset($_POST['fromDate']) && isset($_POST['toDate']) && isset($_POST['userName']) )
{
$from_date = $_POST['fromDate'];
$to_date = $_POST['toDate'];
$name = $_POST['userName'];

  if(isset($from_date) && isset($to_date) && isset($name)) {
    $query = "SELECT name,date,enquiry,retail,collection,booking,evaluation,test_drive,home_visit FROM employee_details WHERE date BETWEEN '$from_date' AND '$to_date' AND name LIKE'$name';";
$search_result = filterTable($query);
       } 
  }

elseif(empty($_POST['userName']) && !empty($_POST['fromDate']) && !empty($_POST['toDate'])) {
$from_date = $_POST['fromDate'];
$to_date = $_POST['toDate'];  
$query = "SELECT name,date,enquiry,retail,collection,booking,evaluation,test_drive,home_visit FROM employee_details WHERE date BETWEEN '$from_date' AND '$to_date';";
$search_result = filterTable($query);
}

elseif(!empty($_POST['userName'])  && empty($_POST['fromDate']) && empty($_POST['toDate'])) {
$name = $_POST['userName'];  
$query = "SELECT name,date,enquiry,retail,collection,booking,evaluation,test_drive,home_visit FROM employee_details WHERE name LIKE'$name';";
$search_result = filterTable($query);
}

else 
{
$query = "SELECT name,date,enquiry,retail,collection,booking,evaluation,test_drive,home_visit FROM employee_details;";
    $search_result = filterTable($query);

}

$now = time();
if (($now - $_SESSION['start'] > 600) && (isset($_POST['submit']))){
session_destroy();
echo "Session expired.Please Login again.";
header("Location:LoginPage.php");
}

?>

<!DOCTYPE html>
<html>
    <head>
        <style>
              input,input[type='text']
       {
           border:1px solid black;
           padding:5px 5px;
       border-radius:4px;
           font-size:12px;

       }
            table {
                  font-family: 'Roboto', sans-serif;
          font-weight:400;
          font-size:16px;
                  border-collapse: collapse;
                  width: 80%;
          text-align:center;
          margin:auto;
                   }

                  td, th {
                  font-family: 'Roboto', sans-serif;
                  font-weight:400;
                  font-size:12px;
                  border: 1px solid #dddddd;
                  text-align:center;
                  padding: 5px;
                  }

                 tr:nth-child(even) {
                 background-color: #dddddd;
                 }
                 .headingstyle
                 {
                 font-family: 'Roboto', sans-serif;
                 font-weight:400;
                 font-size:14px;
                 text-align:center;
                 }
       </style>
    </head>
<body>

<div class="container;">
<h2 class="headingstyle">Sales App Data</h2>
<form action="https://pranami.000webhostapp.com/salesApp.php" method="post">


    <div class="headingstyle">

     <label class="headingstyle">From Date:</label>
    <input type="text" name="fromDate" placeholder="YYYY-MM-DD" id="datepicker">


    <label class="headingstyle" style="margin-left:20px;">To Date:</label>
    <input type="text" name="toDate" placeholder="YYYY-MM-DD" id="datepicker">


        <label class="headingstyle" style="margin-left:20px;">Name:</label>       
        <input type="text" name="userName">



    <input style="margin-left:20px; background-color:#16367F; font-family:'Roboto', sans-serif;font-weight:400;font-size:14px;color:#ffffff; padding:5px 8px; " type="submit" name="submit" value="Submit">
</div><br/><br/>
    <table>
        <tr>
            <th>Name</th>
                        <th>Date</th>
                        <th>Enquiry</th>
                        <th>Retail</th>
                        <th>Collection</th>
                        <th>Booking</th>
                        <th>Evaluation</th>
                        <th>Test Drive</th>
                        <th>Home Visit</th>
        </tr>
            <?php while($row = mysqli_fetch_array($search_result)):?>
            <tr>
                <td><?php echo $row['name'];?> </td>
                                <td><?php echo $row['date'];?> </td>
                                <td><?php echo $row['enquiry'];?> </td>
                                <td><?php echo $row['retail'];?> </td>
                                <td><?php echo $row['collection'];?> </td>
                                <td><?php echo $row['booking'];?> </td>
                                <td><?php echo $row['evaluation'];?> </td>
                                <td><?php echo $row['test_drive'];?></td>
                                <td><?php echo $row['home_visit'];?></td>
            </tr>
            <?php endwhile;?>
    </table>
    </form>
</body>
</html>

問題出在if-else部分。 我有一個具有3個輸入字段的HTML表單,當用戶在輸入字段中輸入值時,單擊“提交”按鈕后,將從MySQL數據庫中檢索數據並顯示在表格中。 如果用戶在所有3個字段中輸入數據,然后單擊“提交”按鈕,則可以從數據庫中正確檢索數據。 但是我想要的是,如果用戶未為“名稱”字段提供任何值,則應根據給定的數據值檢索所有數據。 或者,如果用戶僅為“名稱”字段提供值,則應僅針對給定的名稱檢索數據。我在PHP腳本的elseif部分中提到了這些條件,但是elseif部分從未執行。它不會返回任何值。在這種情況下,該表為空。

誰能幫我解決這個問題?

isset只是檢查該字段是否存在。 它不會檢查該字段是否為空。 您可以使用empty()檢查用戶是否在字段中輸入了內容

此外,文本框,文本區域等在您提交表單時會設置一個空值

如果設置了一個值,但是當您嘗試檢查它是否為true時它的值為'0',那么您應該使用empty()函數進行檢查,但是最好對'if結構'進行優化

if (empty($name))

如果名稱為空,則將返回true

無需在此處檢查isset()。 因為每次您提交頁面時,代碼中的所有三個字段都會發布值。 為此,只有條件時才首先執行代碼。 因此,將isset()代碼更改為empty()代碼。

你的代碼就像


if(isset($_POST['submit']) && isset($_POST['fromDate']) && isset($_POST['toDate']) && isset($_POST['userName']))
{
......
}
elseif(empty($_POST['userName']) && !empty($_POST['fromDate']) && !empty($_POST['toDate']))
{
......
}
elseif(!empty($_POST['userName'])  && empty($_POST['fromDate']) && empty($_POST['toDate']))
{
......
}
else
{
......
}

將您的代碼更改為如下所示


if(!empty($_POST['submit']) && !empty($_POST['fromDate']) && !empty($_POST['toDate']) && !empty($_POST['userName']))
{
......
}
elseif(empty($_POST['userName']) && !empty($_POST['fromDate']) && !empty($_POST['toDate']))
{
......
}
elseif(!empty($_POST['userName'])  && empty($_POST['fromDate']) && empty($_POST['toDate']))
{
......
}
else 
{
......
}

它將起作用。 希望這段代碼對您有所幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM