2010-01-26 5 views
0

데이터베이스가 예약되어 있습니다. 모든 예약에는 ID, 상품 ID, personWhoBookedId, time_from (unixtime), time-to (unixtime)이 있습니다.캘린더의 mysql 데이터가 예약되어 있는지 확인하십시오.

저는 하루에 하루 시간을 schedual로 표시하고 항목이 예약 된 시간을 표시하고 해당 시간대에 personWhoBookedID를 표시하고 싶습니다.

좋아 : 예약이있는 경우

room1: 
5:00 - 6:00: free 
6:00 - 7:00: booked by[person] 
8:00 - 9:00:free 

내가 mysql을 가진 기존 항목을 반복 이때

room 2: 
5:00 - 6:00: free 
6:00 - 7:00: booked by[person] 
8:00 - 9:00: booked by[person] 

은 다음 MySQL과 기간에 따라 확인하는 시간대와 시간의 언급 된 시간대 사이에 itemID 및 시간이 동일 함

이것은 작동하지만 데이터베이스에 대해 많은 쿼리를 수행합니다.

내가 더 프리스트 모든 예약을받을 생각 성능을 향상시키고 다음과 같이 다중 차원 배열에 저장하려면

 $allreservationsperday = mysql_query("select id, personid, itemid, time_from, time_to FROM reservations where time_from >= '$unixfrom' and time_to < '$unixto'"); 

while($reservationarray = mysql_fetch_array($allreservationsperday)){ 
$res[$reservationarray ["id"]]["personid"] = $reserveringenarray["personid"]; 
$res[$reservationarray ["id"]]["itemid"] = $reserveringenarray["itemid"]; 
$res[$reservationarray ["id"]]["time_from"] = $reserveringenarray["time_from"]; 
$res[$reservationarray ["id"]]["time_to"] = $reserveringenarray["time_to"]; 
} 

를 다음의 시간을 통해 루프 루프에 대한로 타임 라인을 표시 하루 하지만 그냥 형성 배열에 예약이 있는지 시간 당 확인하는 방법을 알아낼 수 없습니다.

어떤 도움이 가장 환영합니다! 제로

+0

@Jeroen에 - 당신을위한 가능성과 관련된 '예약 시스템'게시물의 몇 : HTTP ://stackoverflow.com/questions/1692969/booking-system-dates-in-database/1693079#1693079 및 http://stackoverflow.com/questions/1687519/searching-for-availability-with-mysql-and-php/1691282 # 1691282 –

답변

0

그냥 루프를 돌리고 다음 값의 차이점을 확인하십시오.

foreach($res as $key=>$val){ 
    if($val['time_from'] == $res[$key+1]['time_from']) 
     //this is same hour. lets do something here? 
    else 
     //this is a new hour. 
} 

물론 $ res [$ key + 1]이 (가) 비교하기 전에 설정되어 있는지 확인해야합니다.

0

@jonaz : 나는 이것을 스크립트에 맞추는 방법을 알지 못합니다. 은 현재 내가 (보트 대여에 대한 개요)이 시도 : 아래 스크립트의 미리보기가 this test site

echo "<br>Overview for today:<br><table cellpadding=0 cellspacing=0 border=1 class='navbar' id='navbar' width='100%'>"; 
$boten = getBootIdType("2"); //Get all boats that can be rented 
foreach($boten as $boten=>$value){ //display a timeline per boat 
    echo "<tr>"; 
    echo "<td>Boat ".$value."</td>"; 

    $unix_from = strtotime(date("d-m-Y 7:00")); //bookings can be made from 7am to 9pm 
    $unix_to = strtotime(date("d-m-Y 21:00")); 

    while ($unix_from <= $unix_to) { 

    // HERE I WANT TO CHECK IF A BOOKING EXISTS IN THE ARRAY AND DISPLAY THE PERSON ID AS IDENTIFIER 
    // and set a different background is there is a booking on that time 

     echo "<td bgcolor='$bg'>".date("H:i", $unix_from)."</td>"; 
     $unix_from = $unix_from + 1800; 
    } 
    echo "</tr>\r\n"; 
} 
echo "</table>"; 
관련 문제