2016-11-11 2 views
0

У меня есть три строки данных mysql базы данных и создать столбец таймаут и timein. это УАКСНАК типаКак проверить каждую строку в PHP MySQL?

строка 1:

Тайм-аут: 0830, timein: 1030

строка 2:

Тайм-аут: 1230, timein: 1730

строки 3:

тайма-аут: 1800, timein: 1900

я хочу проверить код каждой строку в базе данных перед отображением ошибки «Дубликат» или добавление данных в таблицу

базы данных Но проблема в том, что только для чтения первого строка в запросе. второй ряд и третий ряд не работают

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

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

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

     $sql  = "SELECT * FROM table"; 
     $get  = mysqli_query($connect, $sql); 
     $run  = mysqli_fetch_array($get); 

      $timeout_new = $run['timeout']; 
      $timein_new  = $run['timein']; 

       if(($timeout >= $timeout_new) && ($timeout <= $timein_new)) 
       { 
        echo "Duplicate !"; 
       } 
       else 
       { 
        $add   = "INSERT INTO movement (timeout,  timein) 
               VALUES ('$timeout', '$timein')"; 
        $addDateTime = mysqli_query($connect,$add); 
        echo "Time added !"; 
       }  
    } 
?> 
<form action="dd.php" method="post">  
    <table> 
     <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

Вам нужно использовать 'foreach()' to looop через результаты из базы данных, поскольку он проходит через них, чтобы проверить, существуют ли они в массиве результатов. – Blinkydamo

+0

Можете ли вы показать мне, как? – Jamilah

+0

Возможный дубликат [MySQL значение времени в запросе 838: 59: 59?] (Http://stackoverflow.com/questions/40521703/mysql-time-value-in-query-8385959) – e4c5

ответ

0

Я думаю, что эта строка неверна, не так ли?

if(($timeout >= $timeout_new) && ($timeout <= $timein_new)) 

Если не было бы

if(($timeout >= $timeout_new) && ($timein <= $timein_new)) 
0

Вы можете сделать контроль в вопросе

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

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

$sql  = "SELECT * FROM table WHERE timeout >= '{$_POST['timeout']}' AND timeout <= '{$_POST['timein']}'"; 
$get  = mysqli_query($connect, $sql); 


if(mysql_num_rows($get)) 
{ 
    echo "Duplicate !"; 
} 
else 
{ 
    $add   = "INSERT INTO movement (timeout,  timein) 
           VALUES ('$timeout', '$timein')"; 
    $addDateTime = mysqli_query($connect,$add); 
    echo "Time added !"; 
}  
} 
0
foreach($run as $row) 
{ 
    $timeout_new = $row[ 'timeout' ]; 
    $timein_new = $row[ 'timein' ]; 

    if(($timeout >= $timeout_new) && ($timein <= $timein_new)) 
    { 
    echo "Duplicate !"; 
    } 
    else 
    { 
    $add = "INSERT INTO movement (timeout, timein) VALUES ('$timeout', '$timein')"; 
    $addDateTime = mysqli_query($connect,$add); 
    echo "Time added !"; 
    } 
} 

Это не проверено, поэтому я не могу сказать, что он будет работать в первый раз, но это даст вам представление о том, что вам нужно посмотреть. Вы в настоящий момент смотрите только на первый результат. Вам нужно просмотреть результаты и проверить их.

+0

как его выбрать? – Jamilah

+0

Как выбрать что? – Blinkydamo

+0

Я не знаю, как добавить цикл. Я попытался добавить цикл foreach. получается, что в базу данных добавлено несколько данных. – Jamilah

Смежные вопросы