2011-03-14 37 views
0

片表:PHP最小結果時隙

id Times 
------------ 
1 10:00 
2 10:30 
3 11:00 
4 11:30 
5 12:00 
6 12:30 
7 13:00 
8 13:30 
9 14:00 
10 14:30 

$q = $db->query("SELECT * FROM timeslot"); 
while($r = $q->fetch_array(MYSQLI_ASSOC)) : 
    echo '<tr>'; 
    echo '<td>'.$r['times'].'</td>'; 
    echo '</tr>'; 
endwhile; 

我怎麼只顯示10:00到12:00(編號:1-5)時隙。怎樣使用forloop?

while($r = $q->fetch_array(MYSQLI_ASSOC)) : 
    for($i; $i<=5; $i++) { 
    echo '<tr>'; 
    echo '<td>'.$r['times'].'</td>'; 
    echo '</tr>'; 
    } 
endwhile; 

它顯示五個時間段,但時間顯示不正確的時間(全部10:00)?請幫忙。其他解決方案?

結果

times: 
10:00 
10:00 
10:00 
10:00 
10:00 

回答

3

可能是最好的方法來打印僅5是的,同時只選擇5

$q = $db->query("SELECT * FROM timeslot ORDER BY times LIMIT 5"); 
while($r = $q->fetch_array(MYSQLI_ASSOC)) : 
    echo '<tr>'; 
    echo '<td>'.$r['times'].'</td>'; 
    echo '</tr>'; 
endwhile; 

問題/ FOR是while循環只得到一條記錄,那麼FOR在上運行5次相同的記錄。

while($r = $q->fetch_array(MYSQLI_ASSOC)) : 
    for($i; $i<=5; $i++) { // each one uses the same $r 

但是總的來說,僅在PHP中,你可以使用一個計數器變量退出while循環

$i = 0; 
while(($r = $q->fetch_array(MYSQLI_ASSOC)) && ($i < 5)) : 
    echo '<tr>'; 
    echo '<td>'.$r['times'].'</td>'; 
    echo '</tr>'; 
    $i++; 
endwhile; 
+0

感謝它現在的工作;) – tonoslfx 2011-03-14 12:20:01

0
$q = $db->query("SELECT * FROM timeslot WHERE id BETWEEN 1 AND 5");