2011-08-07 7 views
2

나는 내 PHP 스크립트에 도움이 필요합니다. 나는 사용자가 수업 시간을 선택할 수 있도록하는 스크립트 작업을하고있다. 시간 목록은 24 시간 그리드에 잠겨 있습니다. 즉, 한 시간에 한 번만 수업을 진행할 수 있습니다.수업 예약 시스템 만들기 PHP

이 스크립트의 목표는 사용자에게 사용 가능한 시간이있는 간단한 양식을 보여주는 것입니다.

하루에 가능한 시간은 입니다. * 세 개의 방이 있습니다. *

내가 나중에 양식을 만드는 방법을 이해하고 있는데, 내가 얻지 못하는 것은 방이 세 개있는 경우 사용 가능한 시간을 표시하는 방법입니다.

<?php 
include 'db-connect.php'; 
if (isset($_GET['month']) && isset($_GET['day']) && isset($_GET['year'])) { 

    $month = $_GET['month']; 
    $day = $_GET['day']; 
    $year = $_GET['year']; 

    //string together date 
    $date = $month."/".$day."/".$year; 

    //return classes on this date 
    $sql = mysql_query("SELECT start_time, server FROM classes WHERE date = '$date'"); 

    if (mysql_num_rows($sql)<=0) { 

     echo "show all the times."; 

    }else { 

     $timelist = array(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24); 
     $servers = array(1,2,3); 

     while($query = mysql_fetch_array($sql)) { 

       unset($timelist[$query['start_time'] - 1]); 

     } 
    } 
} 
?> 

데이터베이스 예 :

이 대신 현재의 전략 그냥 배열마다의 수를 저장할 수의
+---------------------------------------------------------------------------------------+ 
| classID | trainerID | type | date  | start_time | duration | server | define  | 
+---------------------------------------------------------------------------------------+ 
| 1  | 1   | 12 | 08/7/2011 | 9   | 60  | 1  | dummy class | 
+---------------------------------------------------------------------------------------+ 
+0

나는이 질문에 너무 어리 석다고 생각합니다. 하지만 너를 조금 도와 줄 수있어 .. $ timelist = range (1, 24); 당신의 긴 배열을위한 더 좋은 방법. 그리고 db 테이블의 예제를 제공 할 수 있습니까? –

+0

잘 내 DB 테이블 이름이 클래스이며 내 열은 : classID (자동 증가), 날짜 (00/00/0000처럼 보임), start_time (1 - 24), 지속 시간 (15-60 분이 될 수 있음) 및 서버 1, 2 또는 3). –

+0

http://sql-info.de/mysql/examples/CREATE-TABLE-examples.html 그리고 질문에 이것을 추가하십시오. –

답변

1

가에서 발견처럼 여기

는 내가 지금까지 무엇을 가지고 있습니다 :

//define time list 
$timelist = array_fill(1, 24, 0); 

while($query1 = mysql_fetch_array($sql1)) { 

    $timelist[$query1['start_time']]++; 

} 

while($query2 = mysql_fetch_array($sql2)) { 

    $timelist[$query2['start_time']]++; 

} 

while($query3 = mysql_fetch_array($sql3)) { 

    $timelist[$query3['start_time']]++; 

} 

$timelist = array_keys(array_filter($timelist, 'equals3')); 

function equals3($x){ 
    return $x == 3; 
} 

이제 $ timelist는 세 쿼리 모두에서 발견 된 시간의 배열입니다. 적어도 하나의 쿼리에서 누락 된 시간 배열을 원할 경우 마지막 몇 줄 대신 다음을 사용하십시오.

$timelist = array_keys(array_filter($timelist, 'lessThan3')); 

function lessThan3($x){ 
    return $x < 3; 
}