  | 
              
	              
	                
  
    
	 
        พี่ๆช่วยด้วยค่ะงมแก้ไม่ได้ซะที ถามเรื่องการประเมินค่ะ ในฐานการประเมิน(assess)มี     | 
   
  
    |   | 
   
 
 
 
	
		
			  | 
	   | 
	    | 
		
			  | 
	 
	
		
			  | 
		 		   | 
	  	    
          
            
			
	
			
			 
                ถามเรื่องการประเมินค่ะ 
ในฐานการประเมิน(assess)มี  
ID_At  		รหัสการประเมิน 
ID_Sc  		โรงเรียนที่ถูกประเมิน 
ID_Tc  		อาจารย์ที่ถูกประเมิน 
Point  		คะแนนรวม 
Date_At 	วันที่ประเมิน 
ID_Assess 	ผู้ประเมิน 
 
ตัวอย่างข้อมูลassess 
ID_At	      | ID_Sc |     ID_Tc     | Point |       Date_At       |     ID_Assess | 
At_1254667118 |	NULL  |	Tc_1252748611 |	76    |	4/10/2552 21:38:38  | Sc_1252749187 | 
At_1254667118 |	NULL  |	Tc_1252748611 |	76    |	4/10/2553 22:38:38  | Sc_1252749187 | 
 
โรงเรียนประเมินอาจารย์ได้คะแนน76คะแนนและประเมินวันที่ 4/10/2552ที่นี้เมื่อประเมินอาจารย์คนนี้ไปแล้วชื่ออาจารย์คนนี้ต้องหายไปจากlist boxที่เลือกชื่ออาจารย์ที่จะประเมิน 
พอเปลี่ยนปีเป็นปี2553แล้วประเมินใหม่ชื่ออาจารย์ต้องกลับมาให้ประเมินใหม่แต่พอหนูประเมินของปี2553ไปแล้วชื่ออาจารย์ก็ไม่หายไปจากlistอะค่ะทั้งๆที่จิงๆมันต้องหายไปเพราะประเมินไปแล้ว 
พอไปดูcodeตรงนี้ 
 
Code (PHP) 
<? 
<!----------------------------------ส่วนนี้จะแสดงในlistเมื่ออาจารย์คนนั้นยังไม่เคยถูกประเมินเลย----------------------->
		   $list = mssql_query("select Promise.ID_Tc,First_Tc,Name_Tc,Sur_Tc from  Promise,Teacher where Promise.ID_Sc = '$_SESSION[ID_Sc]' and Promise.ID_Tc = Teacher.ID_Tc EXCEPT select Promise.ID_Tc,First_Tc,Name_Tc,Sur_Tc from  Promise,Assess,Teacher where Promise.ID_Sc = '$_SESSION[ID_Sc]' and Promise.ID_Tc = Teacher.ID_Tc and  Promise.ID_Tc = Assess.ID_Tc ");
		
		   ?>
		   <select name="teacher_lb" class="TextBox"  id="teacher_lb" style="width:250px;" >
		    <option value=''>---กรุณาเลือกอาจารย์ที่ท่านต้องการประเมิน----</option>
		   <?
		while($a = mssql_fetch_array($list)){
		?>		
    <option value='<? echo $a[0] ?>'><? echo $a[1]?>  <? echo $a[2]?>  <? echo $a[3]?></option>
                              <? } ?>
<!-------------------------------------ส่วนด้านล่างจะแสดงเมื่ออาจารย์คนนั้นเคยถูกประเมินไปแล้ว------------------------------------------------------------------------------------------->
		 <? 
		   $ans1 = mssql_query("select  Assess.ID_Tc,Date_At from Assess,Period where Assess.ID_Assess = '$_SESSION[ID_Sc]' and	Assess.ID_Period = Period.ID_Period 
");
$num2 = mssql_num_rows($ans1);
if($num2 != ""){
	while($ans2 = mssql_fetch_array($ans1)){
			$Y =  explode (" ",$ans2['Date_At']);
			
			//if($Y[2] == $start[2]) คือ ถ้าปีที่ประเมินไปแล้วเท่ากับปีนี้ไม่ต้องแสดงชื่อคนนั้น ($start[2]คือปีปัจจุบัน)
				
			if($Y[2] ==  $start[2]  ){ }else{ //แต่ถ้าไม่เท่ากับก็ให้แสดงรายชื่ออาจารย์คนนั้น
								$list2 = mssql_query("select  Promise.ID_Tc,First_Tc,Name_Tc,Sur_Tc from Promise,Teacher where Promise.ID_Sc = '$_SESSION[ID_Sc]' and Promise.ID_Tc = Teacher.ID_Tc and  Promise.ID_Tc = '$ans2[ID_Tc]' ");
					while($a2 = mssql_fetch_array($list2)){  ?>
						 <option value='<? echo $a2[0] ?>'><? echo $a2[1]?>  <? echo $a2[2]?>  <? echo $a2[3]?></option>		
			<? }
								
			 }  
	}
	
}
			?>
	
		     </select>	
<!------------------------------------------------------------------------------------------------------------------------------------------------------------>
 
 
หนูรู้ว่าที่ปี53ประเมินไปแล้วยางออกชื่ออาจารย์คนนั้นอยู่เพราะตอนวนwhile($ans2 = mssql_fetch_array($ans1)){ มันวนข้อมูลแรกก่อนคือปี52ทำให้แสดงชื่ออาจารย์คนนั้นออกมาเพราะข้อมูลนั้น$Y[2] != $start[2]กว่ามันจามาวนปี53ที่เราประเมินไปแล้วมันก็แสดงข้อมูลของปี52ออกมาแล้ว 
หนูไม่รู้จาแก้ยังไงพี่ๆคนไหนช่วยได้ช่วยด้วยนะค่ะ
 
 
  Tag : - - - -              
                        | 
           
          
            | 
			
                             | 
           
          
            
              
                   | 
                   | 
                   | 
               
              
                   | 
                
                    
                      | Date :
                          2009-10-05 11:43:24 | 
                      By :
                          LuckyStar | 
                      View :
                          1111 | 
                      Reply :
                          21 | 
                     
                  | 
                   | 
               
              
                   | 
                   | 
                   | 
               
              | 
           
          
            | 
			 | 
           
         
	    
		             | 
		
			  | 
	 
	
		
			  | 
		  | 
		
			  | 
		
			  | 
	 
 
              
  
          
		
     
		
	  
        
             | 
            | 
            | 
             | 
         
        
             | 
                       | 
          
            
               
                 ดูโค้ดแค่นี้ไม่รู้จะช่วยไงครับ มองไม่ออกครับ   
 
ไม่เข้าใจหลายๆจุดเลย แต่ก่อนอื่นขอดูว่าตารางแต่ละตารางใช้ทำอะไร เพราะเห็นเรียกหลายตาราง มึนเหมือนกันน่ะครับ                        
               
               | 
             
            
              
			                                
              
                
                     | 
                     | 
                     | 
                 
                
                     | 
                  
                      
                        | Date :
                            2009-10-05 14:40:02 | 
                        By :
                            xbeginner01 | 
                         
                    | 
                     | 
                 
                
                     | 
                     | 
                     | 
                 
                | 
             
           
			         | 
             | 
         
        
             | 
            | 
             | 
             | 
         
          
	    
     
               
		
     
		
	  
        
             | 
            | 
            | 
             | 
         
        
             | 
                       | 
          
            
               
                 อึมพอจะเข้าใจครับ แต่ดูจากข้อมูลแล้วหน้าจะเพิ่ม field ขึ้นมาอีกหนึ่ง field นะครับ ให้ชื่อว่า success ครับ  
สาเหตุที่เพิ่มก็คือให้เราสามารถตรวจสอบการประเมินได้ครับ คือถ้าค่าใน field success = 1 ก็ให้ประเมินเรียบร้อย เวลาดึงข้อมูลก็ดึงเฉพาะ field success = 0 คือ ในส่วนอาจารย์ที่ยังไม่ได้ประเมินนะครับ แต่ให้เรากำหนดเงื่อนไขในการแสดงผล แค่นั้นก็หน้าจะเรียบร้อยครับ                        
               
               | 
             
            
              
			                                
              
                
                     | 
                     | 
                     | 
                 
                
                     | 
                  
                      
                        | Date :
                            2009-10-05 15:29:05 | 
                        By :
                            cshunter | 
                         
                    | 
                     | 
                 
                
                     | 
                     | 
                     | 
                 
                | 
             
           
			         | 
             | 
         
        
             | 
            | 
             | 
             | 
         
          
	    
     
               
		
     
		
	  
        
             | 
            | 
            | 
             | 
         
        
             | 
                       | 
          
            
               
                 ไม่ได้อ่าพี่ถ้าอาจารย์ที่ประเมินไปแล้วเป็นsuccess=1แต่ถ้าปีต่อมาจะประเมินอาจารย์คนเดิมชื่อก้อไม่ขึ้นซิค่ะเพราะข้อมูลเดิมปีที่แล้วมานเป็นsuccess=1ไปแล้วอ่าพี่                        
               
               | 
             
            
              
			                                
              
                
                     | 
                     | 
                     | 
                 
                
                     | 
                  
                      
                        | Date :
                            2009-10-05 15:49:05 | 
                        By :
                            LuckyStar | 
                         
                    | 
                     | 
                 
                
                     | 
                     | 
                     | 
                 
                | 
             
           
			         | 
             | 
         
        
             | 
            | 
             | 
             | 
         
          
	    
     
               
		
     
		
	  
        
             | 
            | 
            | 
             | 
         
        
             | 
                       | 
          
            
               
                 ตอบพี่ xbeginner01 
 
$list = mssql_query("select Promise.ID_Tc,First_Tc,Name_Tc,Sur_Tc from  Promise,Teacher where Promise.ID_Sc = '$_SESSION[ID_Sc]' and Promise.ID_Tc = Teacher.ID_Tc EXCEPT select Promise.ID_Tc,First_Tc,Name_Tc,Sur_Tc from  Promise,Assess,Teacher where Promise.ID_Sc = '$_SESSION[ID_Sc]' and Promise.ID_Tc = Teacher.ID_Tc and  Promise.ID_Tc = Assess.ID_Tc ");  
 
ตัวcodeนี้เป็นการselectแต่อาจารย์ที่สังกัดโรงเรียนหนูเลยให้ Promise.ID_Tc = Teacher.ID_Tc  และ Promise.ID_Sc = '$_SESSION[ID_Sc]'ว่าให้คัดจากอาจารย์ที่สังกัดโรงเรียนตัวเองเท่านั้นที่โชว์ในlist  และ หนูก็เอามา EXCEPT กับ Promise.ID_Tc = Assess.ID_Tc เพื่อให้แสดงว่าอาจารย์คนนี้ยังไม่ถูกประเมินในปีนี้อ่าค่ะ 
 
ช่วยด้วยนะค่ะ                        
               
               | 
             
            
              
			                                
              
                
                     | 
                     | 
                     | 
                 
                
                     | 
                  
                      
                        | Date :
                            2009-10-05 15:56:42 | 
                        By :
                            LuckyStar | 
                         
                    | 
                     | 
                 
                
                     | 
                     | 
                     | 
                 
                | 
             
           
			         | 
             | 
         
        
             | 
            | 
             | 
             | 
         
          
	    
     
               
		
     
		
	  
        
             | 
            | 
            | 
             | 
         
        
             | 
                       | 
          
            
               
                 capture หน้าตารางแต่ละตารางมาดูหน่อยครับ 
 
เอาให้เห็นทุกฟิล์ เผื่อจะมีประโยชน์กับผู้ที่จะเข้ามาช่วยเหลือหน่อยน่ะครับ                        
               
               | 
             
            
              
			                                
              
                
                     | 
                     | 
                     | 
                 
                
                     | 
                  
                      
                        | Date :
                            2009-10-05 16:03:21 | 
                        By :
                            pokultra | 
                         
                    | 
                     | 
                 
                
                     | 
                     | 
                     | 
                 
                | 
             
           
			         | 
             | 
         
        
             | 
            | 
             | 
             | 
         
          
	    
     
               
		
     
		
	  
        
             | 
            | 
            | 
             | 
         
        
             | 
                       | 
          
            
               
                 ปัญหาอยู่ที่ $Y[2] และ $start[2]  ไม่เท่ากันหรือเปล่าครับ 
ลองทดสอบก่อนน่ะครับ 
Code (PHP) 
if($Y[2] ==  $start[2]  ){ }else{ //แต่ถ้าไม่เท่ากับก็ให้แสดงรายชื่ออาจารย์คนนั้น
								$list2 = mssql_query("select  Promise.ID_Tc,First_Tc,Name_Tc,Sur_Tc from Promise,Teacher where Promise.ID_Sc = '$_SESSION[ID_Sc]' and Promise.ID_Tc = Teacher.ID_Tc and  Promise.ID_Tc = '$ans2[ID_Tc]' ");
					while($a2 = mssql_fetch_array($list2)){  ?>
                            <!--<option value='<? echo $a2[0] ?>'><? echo $a2[1]?>  <? echo $a2[2]?>  <? echo $a2[3]?></option>-->
						 <option value='<? echo $a2[0] ?>'><? echo $a2[1]?>  <? echo $Y[2]?> เท่ากับ  <? echo $start[2]?></option>		
			<? }
 
 
ผมเริ่มเดาไปเรื่อยเลยน่ะครับ                          
               
               | 
             
            
              
			                                
              
                
                     | 
                     | 
                     | 
                 
                
                     | 
                  
                      
                        | Date :
                            2009-10-05 16:17:39 | 
                        By :
                            xbeginner01 | 
                         
                    | 
                     | 
                 
                
                     | 
                     | 
                     | 
                 
                | 
             
           
			         | 
             | 
         
        
             | 
            | 
             | 
             | 
         
          
	    
     
               
		
     
		
	  
        
             | 
            | 
            | 
             | 
         
        
             | 
                       | 
          
            
               
                 รูปตารางฐานนะค่ะ 
 
สัญญา(Promise) 
 
  
 
ตารางประเมิน(Assess) 
 
                         
               
               | 
             
            
              
			                                
              
                
                     | 
                     | 
                     | 
                 
                
                     | 
                  
                      
                        | Date :
                            2009-10-05 18:45:43 | 
                        By :
                            LuckyStar | 
                         
                    | 
                     | 
                 
                
                     | 
                     | 
                     | 
                 
                | 
             
           
			         | 
             | 
         
        
             | 
            | 
             | 
             | 
         
          
	    
     
               
		
     
		
	  
        
             | 
            | 
            | 
             | 
         
        
             | 
                       | 
          
            
               
                 (>.< '' ) 
 
ถ้ายังไงช่วยส่งโค้ดทั้งหมดมาให้ดูดีกว่า  
แล้วเดียวช่วยหาที่จะแก้ให้                        
               
               | 
             
            
              
			                                
              
                
                     | 
                     | 
                     | 
                 
                
                     | 
                  
                      
                        | Date :
                            2009-10-05 19:18:22 | 
                        By :
                            xbeginner01 | 
                         
                    | 
                     | 
                 
                
                     | 
                     | 
                     | 
                 
                | 
             
           
			         | 
             | 
         
        
             | 
            | 
             | 
             | 
         
          
	    
     
               
		
     
		
	  
        
             | 
            | 
            | 
             | 
         
        
             | 
                       | 
          
            
               
                 Code (PHP) 
<?
		$day = date("d");
					$month = date("m");
					$year = date("Y");
					$sql = mssql_query("select  ID_Period,Date_start,Date_finish  from Period   ");
		?>
	  <div class="main">
	  
	  <table width="903" >
	    <? 
				 while($result  = mssql_fetch_array($sql)){
				 		
				 			//$start =  explode ("/", date("d/m/Y",$result['Date_start']));
							//$finish =  explode ("/", date("d/m/Y",$result['Date_finish']));
							
							$start =  explode (" ",$result['Date_start']);
							$finish =  explode (" ", $result['Date_finish']);
						
									if($start[2] == $year){//เลือกช่วงการประเมินปีนี้
											//echo  $start[0].$start[1].$start[2];
												$_SESSION[ID_Period] = $result['ID_Period'];
												$day_start =  $start[1];
												$day_finish = $finish[1];
												
												/*------------------------------แปลงค่าเดือนที่เริ่ม-----------------------------*/   
												if($start[0] == 'Jun'){
														$month_start = '01';
												}else if($start[0] == 'Feb'){
																$month_start = '02';
												}else  if($start[0] == 'Mar'){
																$month_start = '03';
												}else  if($start[0] == 'Apr'){
																$month_start = '04';
												}else  if($start[0] == 'May'){
																$month_start = '05';
												}else  if($start[0] == 'Jun'){
																$month_start = '06';
												}else  if($start[0] == 'Jul'){
																$month_start = '07';
												}else if($start[0] == 'Aug'){
																$month_start = '08';
												}else  if($start[0] == 'Sep'){
																$month_start = '09';
												}else  if($start[0] == 'Oct'){
																$month_start = '10';
												}else  if($start[0] == 'Nov'){
																$month_start = '11';
												}else  if($start[0] == 'Dec'){
																$month_start = '12';
												}
												/*---------------------------------------แปลงค่าเดือนที่สิ้นสุด-------------------------*/
												if($finish[0] == 'Jun'){
														$month_finish = '01';
												}else if($finish[0] == 'Feb'){
																$month_finish = '02';
												}else  if($finish[0] == 'Mar'){
																$month_finish = '03';
												}else  if($finish[0] == 'Apr'){
																$month_finish = '04';
												}else  if($finish[0] == 'May'){
																$month_finish = '05';
												}else  if($finish[0] == 'Jun'){
																$month_finish = '06';
												}else  if($finish[0] == 'Jul'){
																$month_finish = '07';
												}else if($finish[0] == 'Aug'){
																$month_finish = '08';
												}else  if($finish[0] == 'Sep'){
																$month_finish = '09';
												}else  if($finish[0] == 'Oct'){
																$month_finish = '10';
												}else  if($finish[0] == 'Nov'){
																$month_finish = '11';
												}else  if($finish[0] == 'Dec'){
																$month_finish = '12';
												}
												//echo $_SESSION[ID_Period];
												//echo $day_start.'/'.$month_start."-".$day_finish.'/'.$month_finish.'/'.$finish[2];
								
							if($day >= $day_start && $month >= $month_start &&  $day <= $day_finish  && $month <= $month_finish&& $year <= $finish[2]  ){
				?>       
                          <tr>
                            <td height="20" colspan="2" align="left"><table width="375" border="0" cellspacing="0" cellpadding="0">
                                <tr>
                                  <td width="375" height="20" align="center" bgcolor="#0066CC" class="TopicSection"><div class="style3" id="result_box" dir="ltr">  รายชื่ออาจารย์ประจำโรงเรียน  <? echo $_SESSION[Name_Sc];?></div></td>
                                </tr>
                            </table></td>
                          </tr>
                 
        <tr>
          <td ><div align="left">กรุณาเลือกชื่ออาจารย์ผู้สอนที่ต้องการประเมิน</div></td>
		   <td height="20" align="left">
		   
		   <? 
		   $list = mssql_query("select Promise.ID_Tc,First_Tc,Name_Tc,Sur_Tc from  Promise,Teacher where Promise.ID_Sc = '$_SESSION[ID_Sc]' and Promise.ID_Tc = Teacher.ID_Tc EXCEPT select Promise.ID_Tc,First_Tc,Name_Tc,Sur_Tc from  Promise,Assess,Teacher where Promise.ID_Sc = '$_SESSION[ID_Sc]' and Promise.ID_Tc = Teacher.ID_Tc and  Promise.ID_Tc = Assess.ID_Tc ");
		
		   ?>
		   <select name="teacher_lb" class="TextBox"  id="teacher_lb" style="width:250px;" >
		    <option value=''>---กรุณาเลือกอาจารย์ที่ท่านต้องการประเมิน----</option>
		   <?
		while($a = mssql_fetch_array($list)){
		?>		
    <option value='<? echo $a[0] ?>'><? echo $a[1]?>  <? echo $a[2]?>  <? echo $a[3]?></option>
                              <? } ?>
		<!------------------------------------------------------------------------------------------------------------------------------------------------------------->
		 <? 
		   $ans1 = mssql_query("select  Assess.ID_Tc,Date_At from Assess,Period where Assess.ID_Assess = '$_SESSION[ID_Sc]' and	Assess.ID_Period = Period.ID_Period 
");
$num2 = mssql_num_rows($ans1);
if($num2 != ""){
	while($ans2 = mssql_fetch_array($ans1)){
								$Y =  explode (" ",$ans2['Date_At']);
				
			if($Y[2] ==  $start[2]  ){ }else{
								$list2 = mssql_query("select  Promise.ID_Tc,First_Tc,Name_Tc,Sur_Tc from Promise,Teacher where Promise.ID_Sc = '$_SESSION[ID_Sc]' and Promise.ID_Tc = Teacher.ID_Tc and  Promise.ID_Tc = '$ans2[ID_Tc]' ");
					while($a2 = mssql_fetch_array($list2)){  ?>
						 <option value='<? echo $a2[0] ?>'><? echo $a2[1]?>  <? echo $a2[2]?>  <? echo $a2[3]?></option>		
			<? }
								
			 }  
	}
	
}
			?>
	<!------------------------------------------------------------------------------------------------------------------------------------------------------------>
		     </select>		   </td>
			  <td height="20"><div align="center">
                              <input type="submit" name="Submit" value="ประเมิน" />
                            </div></td>
        </tr>
		<? }else{echo "<span class='style4'>ยังไม่อยู่ในช่วงเวลาการประเมิน  กรุณาประเมินในช่วงวันที่ ".$day_start." ".$month_start." ".$start[2]." ถึง".$day_finish." ".$month_finish." ".$finish[2]."</span> ";
		
		
		}
		
			}else{	echo "<center><span class='style4'>ยังไม่อยู่ในช่วงการประเมินของปี".$year."<center><span class='style2'>";  
			}
				 			}
		?>
      </table>
	  </div>
 
 
codeทั้งหมดคะพี่(อิอิพี่ดูรู้เรื่องป่าว)                        
               
               | 
             
            
              
			                                
              
                
                     | 
                     | 
                     | 
                 
                
                     | 
                  
                      
                        | Date :
                            2009-10-05 22:43:21 | 
                        By :
                            LuckyStar | 
                         
                    | 
                     | 
                 
                
                     | 
                     | 
                     | 
                 
                | 
             
           
			         | 
             | 
         
        
             | 
            | 
             | 
             | 
         
          
	    
     
               
		
     
		
	  
        
             | 
            | 
            | 
             | 
         
        
             | 
                       | 
          
            
               
                   เดียวตอนเช้าค่อยมาดูให้น่าครับ  
แต่ถ้ายังไงก็ช่วยตั้งคำถามใหม่หน่อยครับ คือผมยังมึน ๆ กับคำถามอยู่นิดหน่อย                          
               
               | 
             
            
              
			                                
              
                
                     | 
                     | 
                     | 
                 
                
                     | 
                  
                      
                        | Date :
                            2009-10-06 04:07:00 | 
                        By :
                            xbeginner01 | 
                         
                    | 
                     | 
                 
                
                     | 
                     | 
                     | 
                 
                | 
             
           
			         | 
             | 
         
        
             | 
            | 
             | 
             | 
         
          
	    
     
               
		
     
		
	  
        
             | 
            | 
            | 
             | 
         
        
             | 
                       | 
          
            
               
                 ระบบประเมินอ่าพี่โรงเรียนจาประเมินได้ต้องอยู่ในช่วงเวลาที่adminกำหนดช่ายปะหนูเลยselectช่วงเวลาประเมินแบบนี้ 
$sql = mssql_query("select  ID_Period,Date_start,Date_finish  from Period   ");  
 
แล้วเปรียบเทียบกะวันที่ปัจจุบันถ้าอยู่ในช่วงก้อให้selectอาจารย์ที่มีสัญญากับโรงเรียนออกมาในlistแบบนี้ 
 
Code (PHP) 
<tr> 
 <td ><div align="left">กรุณาเลือกชื่ออาจารย์ผู้สอนที่ต้องการประเมิน</div></td> 
          
<td height="20" align="left"> 
         
<?  
         
$list = mssql_query("select Promise.ID_Tc,First_Tc,Name_Tc,Sur_Tc from  Promise,Teacher where Promise.ID_Sc = '$_SESSION[ID_Sc]' and Promise.ID_Tc = Teacher.ID_Tc EXCEPT select Promise.ID_Tc,First_Tc,Name_Tc,Sur_Tc from  Promise,Assess,Teacher where Promise.ID_Sc = '$_SESSION[ID_Sc]' and Promise.ID_Tc = Teacher.ID_Tc and  Promise.ID_Tc = Assess.ID_Tc "); 
           
?>           
<select name="teacher_lb" class="TextBox"  id="teacher_lb" style="width:250px;" >            
<option value=''>---กรุณาเลือกอาจารย์ที่ท่านต้องการประเมิน----</option> 
          
<?        
while($a = mssql_fetch_array($list)){        
?>        
   
<option value='<? echo $a[0] ?>'><? echo $a[1]?>  <? echo $a[2]?>  <? echo $a[3]?></option> 
                          
<? } ?> 
    
<!------------------------------------------------------------------------------------------------------------------------------------>
 
 
แล้วที่นี้เมื่อประเมินอาจารย์คนไหนไปแล้วกลับมาที่listจะต้องไม่มีชื่อาจาย์คนนั้นที่ประเมินแล้วในlistแต่ถ้าถัดไปปีต่อไปชื่ออาจารย์คนนั้นต้องกลับมาใหม่เพราะคนละปีหนูเลยเขียนแบบนี้ 
 
Code (PHP) 
<?  
        
$ans1 = mssql_query("select  Assess.ID_Tc,Date_At from Assess,Period where Assess.ID_Assess = '$_SESSION[ID_Sc]' and Assess.ID_Period = Period.ID_Period  
"); 
$num2 = mssql_num_rows($ans1); 
if($num2 != ""){ 
   
while($ans2 = mssql_fetch_array($ans1)){ 
                              
$Y =  explode (" ",$ans2['Date_At']); 
           
if($Y[2] ==  $start[2]  ){ }else{ 
                             
$list2 = mssql_query("select  Promise.ID_Tc,First_Tc,Name_Tc,Sur_Tc from Promise,Teacher where Promise.ID_Sc = '$_SESSION[ID_Sc]' and Promise.ID_Tc = Teacher.ID_Tc and  Promise.ID_Tc = '$ans2[ID_Tc]' "); 
                   
while($a2 = mssql_fetch_array($list2)){  ?> 
                      
<option value='<? echo $a2[0] ?>'><? echo $a2[1]?>  <? echo $a2[2]?>  <? echo $a2[3]?></option>         
           
<? }             
}   
   
} 
 
 
เพราะจะเอามาcheckว่าปีทีประเมินไปแล้วของอาจารย์คนนั้นเท่ากับปีนี้หรือป่าวถ้าไม่แสดงว่าปีนี้ยังไม่ประเมินอาจารย์คนนั้นให้แสดงชื่ออาจารย์ในlistได้ 
 
ปัญหาคือว่า 
พอมีข้อมูลประเมินปีก่อนคือ51พอมาปี52ปีนี้ชื่ออาจารย์ที่เคยประเมินไปปีที่แล้วก็กลับมาอยู่ในlist 
พอประเมินปี52เสร็จแต่ปรากฏว่าในlistชื่ออาจารย์คนนั้นยังไม่หายไปทั้งๆที่ต้องหายไปเพราะเราประเมินไปแล้วงี้อ่าพี่(จาเข้าใจหนูไหมเนี่ยฮ่าๆๆๆ) 
 
ไงช่วยด้วยนะค่ะ                        
               
               | 
             
            
              
			                                
              
                
                     | 
                     | 
                     | 
                 
                
                     | 
                  
                      
                        | Date :
                            2009-10-06 09:42:52 | 
                        By :
                            LuckyStar | 
                         
                    | 
                     | 
                 
                
                     | 
                     | 
                     | 
                 
                | 
             
           
			         | 
             | 
         
        
             | 
            | 
             | 
             | 
         
          
	    
     
               
		
     
		
	  
        
             | 
            | 
            | 
             | 
         
        
             | 
                       | 
          
            
               
                 Code (PHP) 
if($day >= $day_start && $month >= $month_start &&  $day <= $day_finish  && $month <= $month_finish&& $year <= $finish[2]  ){
 
เปลี่ยนเป็ฯ 
Code (PHP) 
	if($day >= $day_start && $month >= $month_start &&  
								(($day <= $day_finish  && $month == $month_finish&& $year == $finish[2])||
								($month < $month_finish&& $year == $finish[2])|| 
								($year<$finish[2])) 
								){
 
 
เอาแค่นี้ก่อน กำลังตรวจสอบให้อยู่ 
แล้วส่งตาราง Period มาให้ดูหน่อยครับ 
 
อ่อนึกออกอีกอย่างแล้วตอนแทรกข้อมูลหลังการประเมิน  ทำถูกต้องเปล่าครับข้อมูลถูกแทรกในฐานข้อมูลจริงเปล่า ค่าที่แทรกแต่ละฟิลด์ถูกต้องตามที่ต้องการเปล่า เช็คตรงนี้ให้ด้วยครับ เพราะไม่ได้โชว์ส่วนนี้ให้ไว้ด้วย                        
               
               | 
             
            
              
			                                
              
                
                     | 
                     | 
                     | 
                 
                
                     | 
                  
                      
                        | Date :
                            2009-10-06 16:36:22 | 
                        By :
                            xbeginner01 | 
                         
                    | 
                     | 
                 
                
                     | 
                     | 
                     | 
                 
                | 
             
           
			         | 
             | 
         
        
             | 
            | 
             | 
             | 
         
          
	    
     
               
		
     
		
	  
        
             | 
            | 
            | 
             | 
         
        
             | 
                       | 
          
            
               
                 โทษพี่หนูหายไปนานเลยชีวิตวุ่นวายอยู่ 
 
นี่ภาพของPeriodนะ 
 
  
 
แทรกที่พี่หมายถึงคือข้อมลปี52ช่ายป่าวถ้าช่ายมันก้อลงฐานนะพี่                        
               
               | 
             
            
              
			                                
              
                
                     | 
                     | 
                     | 
                 
                
                     | 
                  
                      
                        | Date :
                            2009-10-10 18:40:05 | 
                        By :
                            LuckyStar | 
                         
                    | 
                     | 
                 
                
                     | 
                     | 
                     | 
                 
                | 
             
           
			         | 
             | 
         
        
             | 
            | 
             | 
             | 
         
          
	    
     
               
		
     
		
	  
        
             | 
            | 
            | 
             | 
         
        
             | 
                       | 
          
            
               
                    
 
ลืมไปแล้วน่ะเนี่ย 55+ 
นึกว่าได้ไปแล้ว งั้นขออีกสักพักครับ ตอนนี้ดูหนังอยู่ เดียวดูจบแล้วมาช่วย หรือรอพี่ๆใจดีคนอื่นมาดูต่อให้ได้น่ะ 
สองอันเนี่ยผิดแน่ๆแหล่ะ 
$start =  explode (" ",$result['Date_start']); 
$finish =  explode (" ", $result['Date_finish']);                        
               
               | 
             
            
              
			                                
              
                
                     | 
                     | 
                     | 
                 
                
                     | 
                  
                      
                        | Date :
                            2009-10-10 18:49:33 | 
                        By :
                            xbeginner01 | 
                         
                    | 
                     | 
                 
                
                     | 
                     | 
                     | 
                 
                | 
             
           
			         | 
             | 
         
        
             | 
            | 
             | 
             | 
         
          
	    
     
               
		
     
		
	  
        
             | 
            | 
            | 
             | 
         
        
             | 
                       | 
          
            
               
                 Code (PHP) 
$day = date("d");
					$month = date("m");
					$year = date("Y");
					$sql = mssql_query("select  ID_Period,Date_start,Date_finish  from Period   ");
		?>
	  <div class="main">
	  
	  <table width="903" >
	    <? 
				 while($result  = mssql_fetch_array($sql)){
				 		
				 			//$start =  explode ("/", date("d/m/Y",$result['Date_start']));
							//$finish =  explode ("/", date("d/m/Y",$result['Date_finish']));
							
							$start =  explode (" ",$result['Date_start']);
							$finish =  explode (" ", $result['Date_finish']);
						
									if($start[2] == $year){//เลือกช่วงการประเมินปีนี้
											//echo  $start[0].$start[1].$start[2];
												$_SESSION[ID_Period] = $result['ID_Period'];
												$day_start =  $start[1];
												$day_finish = $finish[1];
												
												/*------------------------------แปลงค่าเดือนที่เริ่ม-----------------------------*/   
												if($start[0] == 'Jun'){
														$month_start = '01';
												}else if($start[0] == 'Feb'){
																$month_start = '02';
												}else  if($start[0] == 'Mar'){
																$month_start = '03';
												}else  if($start[0] == 'Apr'){
																$month_start = '04';
												}else  if($start[0] == 'May'){
																$month_start = '05';
												}else  if($start[0] == 'Jun'){
																$month_start = '06';
												}else  if($start[0] == 'Jul'){
																$month_start = '07';
												}else if($start[0] == 'Aug'){
																$month_start = '08';
												}else  if($start[0] == 'Sep'){
																$month_start = '09';
												}else  if($start[0] == 'Oct'){
																$month_start = '10';
												}else  if($start[0] == 'Nov'){
																$month_start = '11';
												}else  if($start[0] == 'Dec'){
																$month_start = '12';
												}
												/*---------------------------------------แปลงค่าเดือนที่สิ้นสุด-------------------------*/
												if($finish[0] == 'Jun'){
														$month_finish = '01';
												}else if($finish[0] == 'Feb'){
																$month_finish = '02';
												}else  if($finish[0] == 'Mar'){
																$month_finish = '03';
												}else  if($finish[0] == 'Apr'){
																$month_finish = '04';
												}else  if($finish[0] == 'May'){
																$month_finish = '05';
												}else  if($finish[0] == 'Jun'){
																$month_finish = '06';
												}else  if($finish[0] == 'Jul'){
																$month_finish = '07';
												}else if($finish[0] == 'Aug'){
																$month_finish = '08';
												}else  if($finish[0] == 'Sep'){
																$month_finish = '09';
												}else  if($finish[0] == 'Oct'){
																$month_finish = '10';
												}else  if($finish[0] == 'Nov'){
																$month_finish = '11';
												}else  if($finish[0] == 'Dec'){
																$month_finish = '12';
												}
												//echo $_SESSION[ID_Period];
												//echo $day_start.'/'.$month_start."-".$day_finish.'/'.$month_finish.'/'.$finish[2];
								
							if($day >= $day_start && $month >= $month_start &&  $day <= $day_finish  && $month <= $month_finish&& $year <= $finish[2]  ){
				?>    
 
 
เปลี่ยนเป็น  
Code (PHP) 
<?php
session_start();
$day = date("d");
$month = date("m");
$year = date("Y")+543; // +543 เพื่อให้เป็นปี พ.ศ.  <--จำเป็นต้องให้เป็น พ.ศ.
$sql = mssql_query("select  ID_Period,Date_start,Date_finish  from Period   ");
?>
<div class="main">
<table width="903" >
<? php
 while($result  = mssql_fetch_array($sql)){
	list($day_start,$month_start,$year_start)= split('[/[:space:]]',$result['Date_start']);
	list($day_finish,$month_finish,$year_finish)= split('[/[:space:]]',$result['Date_finish']);
if($year_start ==$year){
	$_SESSION[ID_Period] = $result['ID_Period'];
	if($day >= $day_start && $month >= $month_start &&  
		(($day <= $day_finish  && $month == $month_finish&& $year == $year_finish)||
		($month < $month_finish&& $year == $year_finish)|| 
		($year<$year_finish)) ){
 ?>
 
 
Code (PHP) 
if($Y[2] ==  $start[2]  )
เปลี่ยนเป็น
if($Y[2] ==  $year_start  )
  
Code (PHP) 
echo "<span class='style4'>ยังไม่อยู่ในช่วงเวลาการประเมิน  กรุณาประเมินในช่วงวันที่ ".$day_start." ".$month_start." ".$start[2]." ถึง".$day_finish." ".$month_finish." ".$finish[2]."</span> "
เปลี่ยนเป็น 
echo "<span class='style4'>ยังไม่อยู่ในช่วงเวลาการประเมิน  กรุณาประเมินในช่วงวันที่ ".$day_start." ".$month_start." ".$year_start." ถึง".$day_finish." ".$month_finish." ".$year_finish."</span> "
  
 
อันนี้แก้ให้ กรณีที่แน่ใจว่าโค้ดตัวเอง echo มาถูกน่ะไม่ต้องแก้ก็ได้  
แต่ตรง $year เช็คหน่อยครับเป็นปี พ.ศ เปล่าถ้าไม่ใช้ก็ +543 ไป จำเป็นมากน่ะครับต้องให้เป็น พ.ศ เพราะในฐานข้อมูลเป็น พ.ศ หมด 
อีกอย่างอย่าลืม session_start() ไว้บนสุดด้วย 
 
ต่อไปเดียวมาดูใน query มาเห็นแว๊บๆแหล่ะว่ามีที่ผิด...                        
               
               | 
             
            
              
			                                
              
                
                     | 
                     | 
                     | 
                 
                
                     | 
                  
                      
                        | Date :
                            2009-10-10 22:06:00 | 
                        By :
                            xbeginner01 | 
                         
                    | 
                     | 
                 
                
                     | 
                     | 
                     | 
                 
                | 
             
           
			         | 
             | 
         
        
             | 
            | 
             | 
             | 
         
          
	    
     
               
		
     
		
	  
        
             | 
            | 
            | 
             | 
         
        
             | 
                       | 
          
            
               
                 เย้ๆขอบคุนนะค่ะ พี่สู้ๆๆ ดูให้ด้วยนะค่ะ                        
               
               | 
             
            
              
			                                
              
                
                     | 
                     | 
                     | 
                 
                
                     | 
                  
                      
                        | Date :
                            2009-10-11 08:11:23 | 
                        By :
                            LuckyStar | 
                         
                    | 
                     | 
                 
                
                     | 
                     | 
                     | 
                 
                | 
             
           
			         | 
             | 
         
        
             | 
            | 
             | 
             | 
         
          
	    
     
               
		
     
		
	  
        
             | 
            | 
            | 
             | 
         
        
             | 
                       | 
          
            
               
                 ง่า สรุปยังแก้ไม่ได้อีกหรอ   
ลองเช็ค $_SESSION[ID_Sc] มีค่าเปล่า  
 
แล้วที่ถามคือตอนเลือกชื่ออาจารย์ผู้สอนที่ต้องการประเมิน มันแสดงผิดใช่ป่ะ ??? 
 
ลองเช็คคำสั่งข้างล่างดูใหม่ ลองเรียบเรียงความคิดใหม่ พอดีพี่ใช้ except ไม่ได้ก็เลยจะทดสอบผลไม่ได้ไปด้วย +ขี้เกียจอ่านนิดหน่อย 555+ 
$list = mssql_query("select Promise.ID_Tc,First_Tc,Name_Tc,Sur_Tc from  Promise,Teacher where Promise.ID_Sc = '$_SESSION[ID_Sc]' and Promise.ID_Tc = Teacher.ID_Tc EXCEPT select Promise.ID_Tc,First_Tc,Name_Tc,Sur_Tc from  Promise,Assess,Teacher where Promise.ID_Sc = '$_SESSION[ID_Sc]' and Promise.ID_Tc = Teacher.ID_Tc and  Promise.ID_Tc = Assess.ID_Tc ");  
 
ทางที่ดีน้องต้องพีเซนความสัมพันธ์ของสี่ตาราง assess promise period teacher ให้พี่ฟังหน่อยหรือจะแสดงเป็น ERD ให้พี่ดูก็ยังดี 
 
เรื่องนี้สงสัยจะยาว บอกตามตรงเลยพี่ยังไม่มองไม่ออก      
น้องต้องพยายามแก้ไปเรื่อยๆน่ะ อย่าหวังไรมากเอิ้กๆ                        
               
               | 
             
            
              
			                                
              
                
                     | 
                     | 
                     | 
                 
                
                     | 
                  
                      
                        | Date :
                            2009-10-11 12:46:53 | 
                        By :
                            xbeginner01 | 
                         
                    | 
                     | 
                 
                
                     | 
                     | 
                     | 
                 
                | 
             
           
			         | 
             | 
         
        
             | 
            | 
             | 
             | 
         
          
	    
     
               
		
     
		
	  
        
             | 
            | 
            | 
             | 
         
        
             | 
                       | 
          
            
               
                 พี่ค่ะ $result['Date_start'] มานแสดงเปง Oct 11 2009 12:00 AM ถ้าจะให้เป็นเป็นdd/mm/YYYYยังไงค่ะเพราะเป็นงี้เลยใช้codeพี่ไม่ได้อ่า                        
               
               | 
             
            
              
			                                
              
                
                     | 
                     | 
                     | 
                 
                
                     | 
                  
                      
                        | Date :
                            2009-10-11 12:48:53 | 
                        By :
                            LuckyStar | 
                         
                    | 
                     | 
                 
                
                     | 
                     | 
                     | 
                 
                | 
             
           
			         | 
             | 
         
        
             | 
            | 
             | 
             | 
         
          
	    
     
               
		
     
		
	  
        
             | 
            | 
            | 
             | 
         
        
             | 
                       | 
          
            
               
                 กำ แล้วไมน้องให้ตารางพี่เป็น 1/10/2552 0:00:00 มาละ ทำให้เข้าใจผิดไปใหญ่เลยเหอะๆ งั้นกลับไปใช้อันเก่าเลยครับ 
แล้วฟิลด์อืนๆ แสดง Oct 11 2009 12:00 AM เรียงกันแบบนี้เหมือนกันเปล่าครับ                        
               
               | 
             
            
              
			                                
              
                
                     | 
                     | 
                     | 
                 
                
                     | 
                  
                      
                        | Date :
                            2009-10-11 12:55:08 | 
                        By :
                            xbeginner01 | 
                         
                    | 
                     | 
                 
                
                     | 
                     | 
                     | 
                 
                | 
             
           
			         | 
             | 
         
        
             | 
            | 
             | 
             | 
         
          
	    
     
               
		
     
		
	  
        
             | 
            | 
            | 
             | 
         
        
             | 
                       | 
          
            
               
                 ในตารางมันเป็น 1/10/2552 0:00:00 อ่าพี่แต่เวลาechoแสดงออกมาอยู่ดีมานเป็น Oct 11 2009 12:00 AM อ่าค่ะหนูก้อไม่รู้ว่าทามไม                        
               
               | 
             
            
              
			                                
              
                
                     | 
                     | 
                     | 
                 
                
                     | 
                  
                      
                        | Date :
                            2009-10-12 00:25:29 | 
                        By :
                            LuckyStar | 
                         
                    | 
                     | 
                 
                
                     | 
                     | 
                     | 
                 
                | 
             
           
			         | 
             | 
         
        
             | 
            | 
             | 
             | 
         
          
	    
     
               
		
     
		
	  
        
             | 
            | 
            | 
             | 
         
        
             | 
                       | 
          
            
               
                 เป็นเพราะ mssql หรือเปล่าน่ะ หุหุ อันนี้ไม่ทราบแหล่ะ งั้นยึดผลการ echo ละกันน่ะครับ ใช้โค้ดของน้องแต่แรกเลยครับ มาเริ่มดูส่วนอื่นดีกว่า  
 
-เช็ค $_SESSION[ID_Sc] มีค่าเปล่า  echo มาทีครับ ถ้าไม่มีค่าก็ผิดตรงนี้ 
-ทางที่ดีช่วยแสดง ERD ให้พี่ดูหน่อยได้เปล่าครับ    
- ไม่งั้นลองมาเขียนคำสั่ง query กันใหม่ไม เพราะพี่ไม่ค่อยเข้าใจ except เท่าไร (พูดอีกอย่าง mysql ไม่มี except :p ) 
 
แต่แรกน้องยึด $_SESSION[ID_Sc] เป็นหลัก แล้วลองค้นหาข้อมูลจากตาราง Promise 
select * from Promise where Promise.ID_Sc=$_SESSION[ID_Sc] 
 
จากนั้น  ก็ดูที่ตาราง Assess ดูว่า ID_Sc นี้ประเมินอาจารย์คนไหนไปแล้วบ้าง 
select * from Assess where Assess.ID_Assess=$_SESSION[ID_Sc] 
 
ถ้า ID_Sc คนนี้ มี id_tc หรือไอดีของจารย์ใน assess หรือมีการประเมินไปแล้ว ก็ไม่ให้แสดงข้อมูล 
select Promise.ID_Sc,Promise.ID_Tc from Promise,Assess where Promise.ID_Sc=$_SESSION[ID_Sc] and Assess.ID_Assess=$_SESSION[ID_Sc] and Promise.ID_Tc!=Assess.ID_Tc 
 
เนื่องจากว่าบางทีมีการแสดงข้อมูลซ้ำ เราจึงต้อง group by ID_Tc 
select Promise.ID_Sc,Promise.ID_Tc from Promise,Assess where Promise.ID_Sc=$_SESSION[ID_Sc] and Assess.ID_Assess=$_SESSION[ID_Sc] and Promise.ID_Tc!=Assess.ID_Tc  group by Promise.ID_Tc 
 
จากนั้นอยากแสดงแค่ข้อมูลอาจารย์คนนี้ด้วยชื่อนามสกุลก็แทรกตาราง Teacher เข้าไป 
select Promise.ID_Tc,First_Tc,Name_Tc,Sur_Tc from Promise,Assess,Teacher where Promise.ID_Sc=$_SESSION[ID_Sc] and Assess.ID_Assess=$_SESSION[ID_Sc] and Promise.ID_Tc!=Assess.ID_Tc group by Promise.ID_Tc 
 
 
แต่ว่าถ้าใน Assess มีข้อมูลการประเมินปีที่แล้ว และไม่ใช่ปีนี้ ก็ต้องทำให้มันแสดงข้อมูลออกมาโดยเทียบปีที่จะประเมินกับ Date_at เช่นประเมินปี 1980 
select Promise.ID_Tc,First_Tc,Name_Tc,Sur_Tc  from Promise,Assess,Teacher where Promise.ID_Sc=$_SESSION[ID_Sc] and Assess.ID_Assess=$_SESSION[ID_Sc] and ( Promise.ID_Tc!=Assess.ID_Tc or year(Assess.Date_At)=1980) 
 
 
Date_At พี่มอง type เป็น datetime พี่ก็เลยใช้ year(Assess.Date_At) แสดงปีออกมาได้ แต่กรณีที่ไม่ใช่ type datetime อาจเป็น varchar หรือ int ต้องใช้วิธีอื่น ตอนนี้พี่นึกไม่ออกแหล่ะ    
 
concept การสร้างquery ของพี่ก็ประมาณนี้แหล่ะ  ตรงนี้อาจเป็นแนวทางให้น้องคิดออกได้บ้างว่าควรแก้ตรงไหน                            
               
               | 
             
            
              
			                                
              
                
                     | 
                     | 
                     | 
                 
                
                     | 
                  
                      
                        | Date :
                            2009-10-12 02:48:15 | 
                        By :
                            xbeginner01 | 
                         
                    | 
                     | 
                 
                
                     | 
                     | 
                     | 
                 
                | 
             
           
			         | 
             | 
         
        
             | 
            | 
             | 
             | 
         
          
	    
     
      		  
	
     | 
   
 
                 |