2016-06-12 3 views
0

Я работаю над проектом, который позволяет пользователям назначать бронирование на такси, но значение должно появляться только в том случае, если ожидаемое время ожидается как минимум на 2 часа.Проверка PHP базы данных MySQL DateTime

здесь хранится php/sql.

<?php 

$query = "INSERT INTO Taxi(fname, lname, number, unit, snumber, sname, suburb, dsuburb, dt, status) VALUES('{$fname}','{$lname}','{$contact}','{$unit}','{$snumber}','{$sname}','{$suburb}','{$dsuburb}','{$dt}','{$status}')"; 
if (mysqli_query($conn, $query)) { 


    $date = date_create($dt); 
    $dateFormatted = date_format($date, 'g:ia \o\n d/m/y'); 
    echo "Thank you! Your booking reference number is " . mysqli_insert_id($conn) . " you will be picked up in front of your provided address at " . date_format($date, 'g:ia \o\n l jS F Y') . "."; 

} else if (!mysqli_query($conn, $query)) { 
    echo mysqli_error($conn); 
} 
mysqli_close($conn); 


?> 

Вот PHP используется для назначения такси, теперь, чтобы показать в таблице он должен показывать только значение в таблице неназначенной, когда время будет 2 часа или более в будущее. Как я могу проводить сравнения времени?

<?php 

       require_once ("settings.php"); 
       $conn = @mysqli_connect($host, $user, $pswd) 
       or die('Failed to connect to server'); 

       @mysqli_select_db($conn, $dbnm) 
       or die('Database not available'); 

       $query = "SELECT id, fname, lname, number, unit, snumber, sname, suburb, dsuburb, dt, status FROM taxi WHERE status = 'unassigned'"; 

       $results = mysqli_query($conn, $query); 

       echo "<table width='100%' border ='1'>"; 
       echo "<tr><th>Booking Id</th><th>First<br>Name</th><th>Last<br>Name</th><th>Contact</th><th>Unit<br>Number</th><th>Street<br>Number</th><th>Street<br>Name</th><th>Suburb</th><th>Destination<br>Suburb</th><th>Date/Time</th><th>Status</th></tr>"; 

       while($row = mysqli_fetch_assoc($results)) { 
        echo "<tr>"; 
        echo "<td> {$row['id']}</td>"; 
        echo "<td> {$row['fname']}</td>"; 
        echo "<td> {$row['lname']}</td>"; 
        echo "<td> {$row['number']}</td>"; 
        echo "<td> {$row['unit']}</td>"; 
        echo "<td> {$row['sname']}</td>"; 
        echo "<td> {$row['snumber']}</td>"; 
        echo "<td> {$row['suburb']}</td>"; 
        echo "<td> {$row['dsuburb']}</td>"; 
        echo "<td> {$row['dt']}</td>"; 
        echo "<td> {$row['status']}</td>"; 
        echo "</tr>"; 
       } 

       $query = "SELECT id, fname, lname, number, unit, snumber, sname, suburb, dsuburb, dt, status FROM taxi WHERE status = 'assigned'"; 

       $results = mysqli_query($conn, $query); 

       echo "<table width='100%' border ='1'>"; 
       echo "<tr><th>Booking Id</th><th>First<br>Name</th><th>Last<br>Name</th><th>Contact</th><th>Unit<br>Number</th><th>Street<br>Number</th><th>Street<br>Name</th><th>Suburb</th><th>Destination<br>Suburb</th><th>Date/Time</th><th>Status</th></tr>"; 

       while($row = mysqli_fetch_assoc($results)) { 
        echo "<tr>"; 
        echo "<td> {$row['id']}</td>"; 
        echo "<td> {$row['fname']}</td>"; 
        echo "<td> {$row['lname']}</td>"; 
        echo "<td> {$row['number']}</td>"; 
        echo "<td> {$row['unit']}</td>"; 
        echo "<td> {$row['sname']}</td>"; 
        echo "<td> {$row['snumber']}</td>"; 
        echo "<td> {$row['suburb']}</td>"; 
        echo "<td> {$row['dsuburb']}</td>"; 
        echo "<td> {$row['dt']}</td>"; 
        echo "<td> {$row['status']}</td>"; 
        echo "</tr>"; 
       } 
       echo "<br>"; 
       mysqli_free_result($results); 
       mysqli_close($conn); 
      ?> 
+0

Я предлагаю, а затем сбрасывать весь код, Вы должны предоставить конкретный фрагмент кода, связанный с этой проблемой. –

+0

Вы можете использовать http://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_datediff. Вы открыты для SQL-инъекций с помощью этого кода. Кроме того, использование '@' - это плохая практика, вы должны решить проблему, вызывающую ошибку. Также странно, что вы тестируете 'isset', но затем вставляете вне зависимости от результатов – chris85

ответ

0

что-то вроде ...

$requestedDateTime = $_POST["datetime"]; 
$interval = 2; 
$endDateTime = date("$requestedDateTime", strtotime("+{$interval} hours")); 

if($endDateTime >= $requestedDateTime) { 
    //your code here to accept the booking 
} 
else { 
    //error msg time is too short 
} 
Смежные вопросы