2010-07-23 224 views
0

我正在做一个数据库选择,有些时候它返回10条记录,有时1000条,这取决于搜索条件。我想要的是一个下降,每30个记录后就会中断。像这样的东西PHP下拉菜单

<select id="dd" > 
    <option value="0">1-30</option> 
    <option value="30">31-60</option> 
    <option value="60">61-90</option> 
    <option value="91">91-120</option> 
</select> 

我该如何在PHP中动态地执行该操作?

+0

那么,你想允许用户从查询中选择一系列记录来返回?如果将范围分成30个小组,您打算如何处理1000个记录?那会导致长时间的下降。 – 2010-07-23 19:04:48

回答

1

这是我对此采取:

echo '<select id="dd">'; 
$j = 0; 
for($i=0;$i<$numResults;$i++) 
{ 
    if($i%30==0) 
     echo '<option value="'.$j.'">'.($j+1).'-'.($j+=30).'</option>';  
} 
echo '</select>'; 

为$ numResults == 130输出会:

<select id="dd"> 
    <option value="0">1-30</option> 
    <option value="30">31-60</option> 
    <option value="60">61-90</option> 
    <option value="90">91-120</option> 
    <option value="120">121-150</option> 
</select> 
1

或许真的沿着此线:

<select id="dd" > 
    <?php 
    $rows = mysql_num_rows($result); 
    for($count=0;$count<$rows;$count++) 
    { 
     if($count % 30 == 0) 
     { 
      $end = $count+30; 
      if($end > $rows) 
       $end = $rows; 
      echo '<option value="'.$count.'">'.$count.'-'.$end.'</option>'; 
     } 
    } 
    ?> 
</select> 

这是未经测试。

+0

'$ count + 30'应该在括号之间... – Marcx 2010-07-23 20:15:48

+0

@Marcx请参阅更新。 – 2010-07-23 20:43:17

2

试试这个:)

<select id="dd" > 
<?php 
     $start = 0; 
     $end = mysql_num_rows($resultquery); 
    while (($start+30) < $end || ($end-$start)>0) 
     echo "<option value=\"". $start . "\">". $start ."-" . ($start+=30) . "</option>";   
?> 
</select> 

如果$end = 95;输出将是:

<select id="dd" > 
<option value="0">0-30</option> 
<option value="30">30-60</option> 
<option value="60">60-90</option> 
<option value="90">90-120</option> 
</select>