2011-03-14 38 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");