2016-03-03 92 views
0

我正在開發一個網站,學生可以訂閱他們必須參加的特定小時,並且每個小時都有一個唯一的ID(pitid),下面的代碼搜索用戶的小時數訂閱自己,我希望檢查複選框,如果pitid等於用下面的代碼檢索的值。但我無法弄清楚如何;也許把查詢結果中的數組,並檢查每個pitid如果它等於保存在陣列中的一個值...複選框,如果等於從數據庫檢索到的值

!(http://i63.tinypic.com/14uj77k.png

$user=$_SESSION['user']; 
$q=mysql_query("SELECT timetable.pitid FROM timetable,hours WHERE llnr='".$user."' AND timetable.pitid=hours.pitid AND hours.location='olc' "); 

for($i=0; $i<mysql_numrows($q);$i++){ 
    $check=mysql_result($q,$i,"pitid"); 
    echo"$check<br>"; 
} 

這是生成的代碼清單:

$user=$_SESSION['sess_user']; 
$olchours= mysql_query("SELECT pitid,pit,hour,location,seats FROM hours  WHERE `hours`.`location` = 'olc' ORDER BY pitid"); 
echo'<table> 
     <tr> 
      <td width="100px">Select</td> 
      <td width="100px">PIT.ID</td><td width="100px">Day</td> 
      <td width="100px">hour</td><td width="100px">taken seats</td> 
      <td width="300px">Available Seats</td> 
     </tr>'; 
for($i=0; $i<mysql_numrows($olchours); $i++){ 
    $olcpitid=mysql_result($olchours,$i,"pitid"); 
    $olcday=mysql_result($olchours,$i,"pit"); 
    $olchour=mysql_result($olchours,$i,"hour"); 
    $olcseats=mysql_result($olchours,$i,"seats");  
    $olcq=mysql_query("SELECT COUNT(*) FROM hours,timetable WHERE hours.pitid='".$olcpitid."' AND hours.pitid=timetable.pitid"); 
    $olcrow=mysql_fetch_assoc($olcq); 
    $olcmatches=$olcrow['COUNT(*)'];   
    $olcopen=$olcseats-$olcmatches; 
     if(($i%8)==0){ 
      echo'<tr><td>&nbsp;</td></tr><tr><td><form method="POST" action=""><input type="checkbox" name="hourolc[]" value="'.$olcpitid.'"> 
      <td>'.$olcpitid.' </td><td>'.$olcday.' </td><td>'.$olchour.'</td><td>'.$olcmatches.'</td><td>'.$olcopen.'</td></tr>'; 
     }    
      else{ 
       echo'<tr><td><form method="POST" action=""><input type="checkbox" name="hourolc[]" value="'.$olcpitid.'" > 
       <td>'.$olcpitid.' </td><td>'.$olcday.' </td><td>'.$olchour.'</td><td>'.$olcmatches.'</td><td>'.$olcopen.'</td></tr>'; 
      } 


} 
echo'</table><br>'; 

}

+0

請格式化您的代碼 –

+0

我試過了,但是因此弄糟了; p – JvK

+0

$ check應該是一個數組。如果您將$ check更改爲$ check [] = ....... ,則可以以陣列格式存儲值,然後檢查$ check array中的$ olcpitid ....希望您能明白 –

回答

0

編輯您的if else

<?php 
    if(($i%8)==0){ 
     echo'<tr><td>&nbsp;</td></tr><tr><td><form method="POST" action=""><input type="checkbox" name="hourolc[]" value="'.$olcpitid.'"';if($your_db_value == $to_be_matched){echo 'checked="checked"'}echo'> 
     <td>'.$olcpitid.' </td><td>'.$olcday.' </td><td>'.$olchour.'</td><td>'.$olcmatches.'</td><td>'.$olcopen.'</td></tr>'; 
    }    
     else{ 
      echo'<tr><td><form method="POST" action=""><input type="checkbox" name="hourolc[]" value="'.$olcpitid.'"';if($your_db_value == $to_be_matched){echo 'checked="checked"'} echo' > 
      <td>'.$olcpitid.' </td><td>'.$olcday.' </td><td>'.$olchour.'</td><td>'.$olcmatches.'</td><td>'.$olcopen.'</td></tr>'; 
     } 
    ?> 
+0

我得到了這個工作,但讓我們說我的匹配的ID是超過1(我將數據庫中的所有值存儲在一個數組中,查詢),如果這樣:$ your_db_value == $ to_be_matched是TRUE ($ p = 0; $ p '但是這不起作用... – JvK

+0

PS這是我如何檢索$ check: '$ q = mysql_query(「SELECT timetable.pitid FROM timetable,hours WHERE llnr ='」。$ user。「'AND timetable.pitid = hours.pitid AND hours。($ i = 0; $ i JvK

+0

您正在使用$ p比較$ olcpitid,$ p不是數組您需要將它與$檢查[$ p] '的($ p比較= 0; $ p

0

試試這個,閱讀說明的意見。

$queryResult = array('', '', ''); // list from db 
$to_be_matched_pitid = 3; // to be matched pitid 

if(in_array($to_be_matched_pitid, $queryResult)) { 
    echo 'array CONTAINS the pitid'; 
} else { 
    echo 'array does not CONTAIN the pitid'; 
} 
+0

好了,這有助於但是我現在面對的實際問題是,我不知道如何把結果從$ q = mysql_query(「SELECT timetable.pitid FROM timetable,hours WHERE llnr ='」。$ user。「'AND timetable.pitid = hours.pitid AND hours.location ='olc'「);在數組 – JvK

0

變化

$check=mysql_result($q,$i,"pitid"); 

$check[]=mysql_result($q,$i,"pitid"); 

到值存儲在陣列

+0

現在的作品,謝謝!但現在是最後一個問題:我用複選框回顯每一行(每一行都有其唯一的id-> pitid),並希望檢查該行的複選框,以檢查rowid(pitid)是否等於數組中的值。 This是響應行的代碼 echo'​​

​​'。$ olcpitid。'​​'。$ olcday。'​​'。$ olchour。'​​'。$ olcmatches''。​​'。$ olcopen。''; – JvK

相關問題