2016-11-11 114 views
0

我在if循環中創建if語句。如何在PHP MySQL的while循環中運行嵌套語句?

而且我有三排表數據像下面

row 1 : **timeout 0830 , timein 1030** 

row 2 : **timeout 1230 , timein 1300** 

row 3 : **timeout 1400 , timein 1730** 

的問題是,輸出顯示這樣

Time added ! Duplicate Time added 

而且數據在第1和第3行還補充道。我不知道爲什麼。

我想要的是顯示錯誤,如果任何一行是重複的,而不添加數據。

讓說我的第二排是1230和1300。我所要的輸出表現爲輸入數據:

重複

而且第一和第二排,因爲一個不添加任何數據行是重複的。

任何解決方案?

<?php 
    $connect  = mysqli_connect("localhost", "root", "", "movementandroid"); 
    global $connect; 

    if(isset($_POST['Submit'])){  

     $user_id  = $_POST['user_id']; 
     $timeout  = $_POST['timeout'];   
     $timein   = $_POST['timein']; 

     $sql  = "SELECT * FROM table WHERE user_id='$user_id'"; 
     $get  = mysqli_query($connect, $sql); 
     if($get && mysqli_num_rows($get) > 0){ 
      while($run2 = mysqli_fetch_assoc($get)){ 
       $timeout_new = $run2['timeout']; 
       $timein_new  = $run2['timein']; 
       if(($timeout >= $timeout_new) && ($timein <= $timein_new)){ 
        echo "Duplicate !"; 
       } 
       else{ 
        $add   = "INSERT INTO table (timeout,  timein) 
               VALUES ('$timeout',  '$timein')"; 
        $addDateTime = mysqli_query($connect,$add); 
        echo "Time added !"; 
       } 
      } 
      mysqli_free_result($get); 
     } 
    } 
?> 
<form action="dd.php" method="post">  
    <table> 
     <tr> 
      <td><i class="fa fa-unlock-alt"></i> </td> 
      <td>User ID : </td> 
      <td><input type ="text" name="user_id" size="30"></td> 
     </tr> 
     <tr> 
      <td><i class="fa fa-unlock-alt"></i> </td> 
      <td>Time out : </td> 
      <td><input type ="text" name="timeout" size="30"></td> 
     </tr> 
     <tr> 
      <td><i class="fa fa-unlock-alt"></i> </td> 
      <td>Time in : </td> 
      <td><input type ="text" name="timein" size="30"></td> 
     </tr> 
    </table>  

    <p><input class="btnSuccess" type ="submit" name="Submit" value="Submit"> </p>    
</form> 
+0

到底是什麼的「重複」的定義是什麼?你是否在說如果有_any_「重複」,你不想插入_any_記錄? –

+0

使用標誌變量。如果存在重複項,則將其切換並在循環遍歷行之後,檢查標誌變量並根據它將數據插入到數據庫中。 –

+0

是的。如果條件是「重複」,我不想添加任何數據。 。因爲輸入時間相同或在時間範圍內 – Jamilah

回答

0

嘗試做在數據庫級別,而不是PHP的timeouttimein比較。

更改您的代碼這樣的事情,看看它的工作原理:

<?php 
    $connect = mysqli_connect("localhost", "root", "", "movementandroid"); 
    global $connect; 

    if (isset($_POST['Submit'])) {  
     $user_id  = $_POST['user_id']; 
     $timeout  = $_POST['timeout'];   
     $timein   = $_POST['timein']; 

     $sql  = "SELECT * FROM table WHERE user_id='{$user_id}' AND timeout >= {$timeout} AND timein <= {$timein}"; 
     $get  = mysqli_query($connect, $sql); 
     if($get && mysqli_num_rows($get) > 0){ 
      echo "Duplicate !"; 
     } else { 
      $add   = "INSERT INTO table (timeout, timein) 
          VALUES ('{$timeout}', '{$timein}')"; 
      $addDateTime = mysqli_query($connect, $add); 
      echo "Time added !"; 
     } 
     mysqli_free_result($get); 
    } 
?> 
+0

謝謝。我會嘗試你的建議。我會讓你知道後來:)。 – Jamilah

+0

不客氣。我們可以讓它工作。當你嘗試這個時告訴我結果。 –

+0

謝謝!它的工作就像一個魅力 – Jamilah