2012-02-03 4 views
0

현재 학교 등록을위한 간단한 학생 스케줄링 응용 프로그램을 개발 중입니다. 나는 학생을위한 과목 일정 및 예비 과목을위한 두 개의 테이블을 만들었습니다. Pk sched_id 및 예약 주제 코드 FK subid, Day, labday, lecturetime, labtime에 대한 주제 코드. 사용자가 일정에서 주제를 선택하면 해당 항목이 reservsub에 삽입됩니다. 내가 선택한 모든 주제에 대해 하루/labday 시간/labtime 충돌을 확인하는 기능이 필요합니다. 예를 들어 :시간/날짜 확인 PHP

가 어떻게 스크립트를 구축 할 오후 12시 반을 하루 lectime - - 목요일 오전 11:00 하루 lectime 에 그리고 그것은이 reservetable 10시 30 분 오전

사용자는 TTh 오전 9시와 주제 선택 및/또는 PHP에서 시간 충돌이 있음을 사용자에게 경고하는 함수?

미리 감사드립니다. 여기

는 대상 데이터가 이미 저장되어있는 경우 tblreserv가 확인합니다 선택하면 일정과는

$sql = mysql_query("SELECT * FROM tblsubjecschedule where Sem='".$_SESSION['sem']."' and Schoolyear='".$_SESSION['Sy']."' order by Subject")or die(mysql_error()); 

     $i=0; 
     $b =1; 
    while($row=mysql_fetch_assoc($sql)){ 
         echo "<tr ><td align=' '><input id='send' name='reserv[$i]' type='image' src='images/Select.gif' onclick='addRow('myTable')' /> </td> 
         <td align=' '>".$row['Subject']."<input type='hidden' name='subj[$i]' value=".$row['Subject']."><input type='hidden' name='control[$i]' value=".$row['sched_id']."></td> 
          <td align=' '>".$row['section']." </td> 
         <td align=' '>".$row['Lec']."-".$row['Lab']." </td> 

         <td align=' '>".$row['Descriptive']." </td> 
         <td align=' '>".$row['Day']."<br/>".$row['Labday']." </td> 

         <td align=' '>".$row['LecTime']."<br/>".$row['LabTime']." </td> 

         <td align=' '>".$row['Room']."<br/>".$row['Labroom']." </td> 
         <td align=' '>".$row['capacity']." </td> 
         <td >".$row['Slot']." </td> 

         </tr>"; 

     $i++; 


         } 


    if (isset($_POST['reserv'])){ 
      if(!empty($_POST['reserv'])){ 
       $a = current(array_keys($_POST['reserv'])); 
           $control=$_POST['control'][$a]; 



             } 

         } 
$sql = mysql_query("SELECT * FROM tblsubjecschedule where sched_id='".$control."' and Sem='".$_SESSION['sem']."' and Schoolyear='".$_SESSION['Sy']."'"); 
              while($row=mysql_fetch_assoc($sql)){ 
                $cont=$row['sched_id']; 
                $sub=$row['Subject']; 
                $sec=$row['section']; 
                $lecture=$row['Lec']; 
                $laboratory=$row['Lab']; 
                $day=$row['Day']; 
                $daylab=$row['Labday']; 
                $lectime=$row['LecTime']; 
                $ltime=$row['LabTime']; 
                $room=$row['Room']; 
                $roomlab=$row['Labroom']; 
                $slot=$row['Slot']; 
                $caps=$row['capacity']; 
              } 

을 선택 표시 코드의 또는 한 번 충돌이

$verify2=mysql_query("Select * from tblsubjectreserv where stud_id='".$maxid."' and subject='".$sub."'")or die(mysql_error());     
         $ver=mysql_num_rows($verify2); 
          if($ver!=0){ 
          echo '<script language="javascript">alert("This Subject already exists.");</script>'; 
          } 
           else{ 


     $insert2=mysql_query("insert into tblsubjectreserv (sublink,stud_id,subject,section,Unitlec,Unitlab,timelec,timelab,daylec,Daylab,roomlec,roomlab,Sem,schoolyear)values('".$control."','".$maxid."','".$sub."','".$sec."','".$lecture."','".$laboratory."','".$lectime."','".$ltime."','".$day."','".$daylab."','".$room."','".$roomlab."','".$sem."','".$_SESSION['Sy']."')")or die(mysql_error()); 



} 

하지만 난 낮과 시간 충돌을 확인하는 방법을 모른다. 메신저 그냥 초보자 도와주세요.

사전

답변

0

이에 대한 구체적인 대답은 정말 당신이 사용하고있는 데이터베이스의 종류에 따라 달라집니다 당신이 PHP 또는 데이터베이스에서이 유효성 검사를 수행 할 여부에 감사합니다. 나는 당신이 삽입하거나 이러한 레코드 (예 : 프론트 엔드 애플 리케이션과 웹 서비스)를 업데이 트하는 데 하나 이상의 인터페이스를 가지고 결국 어떤 삽입에 겹치는 시간을 확인하기 위해 데이터베이스에서 트리거를 사용하는쪽으로 기울어 져, 이런 식으로, 논리를 다시 쓰지 않아도되고 데이터베이스에서 무결성을 유지 관리 할 수 ​​있습니다. 그런 다음 PHP는 트리거가 예외를 throw 할 때 이러한 특정 삽입/업데이트 (PDO를 사용하고 있습니까?)에서 발생하는 예외를 catch 할 수 있습니다.

사용중인 데이터베이스에 대한 정보와 테이블 구조 (영향을받는 테이블과 해당 데이터 형식의 모든 필드 등)에 대한 정보를 추가 할 수 있으면 트리거에 대한 자세한 답변을 얻을 수 있습니다 볼 필요가있다.

나는 약간의 시간이 지난이 질문에 대해 훌륭한 대답 (https://stackoverflow.com/a/8182800/1053722)을 받았습니다. 이것은 postgresql을 사용하는 경우에 적용됩니다.

+0

PDO는 모험적인 길일 것이고 개척자는 항상 코드 효율성에서 보폭을위한 기회를 창출하는 가장 좋은 방법이라고 생각합니다! –

+0

메신저 wamp5 mysql 데이터베이스를 사용하여 내 정보 부족에 대한 미안 해요. 그리고 네, 사용자가 스케줄 테이블에서 데이터를 선택할 때 시간 충돌을 확인하기 위해 데이터베이스를 사용합니다. – nobito

+0

답장을 보내 주셔서 감사합니다 죄송합니다. PDO가 의미하는 바를 이해할 수 있기를 바랍니다. – nobito