2016-03-03 50 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

相关问题