您好我正在尝试解决问题。我研究并花时间但无法解决它抱歉。
我试图在html页面上的多个表中显示数据库表查询结果,并且每个表应该是一个范围,我在这里放置5行,所以如果我的查询包含29行,那么它将显示在6表和最后一个表中将包含4个结果如果第一个表第1行是01那么表的序列号将是正确的然后第2个表第1行将是06."查询结果不是常数但它将取决于数据库记录"
这是我的代码,它只显示了一个表,但没有显示其他表格的结果。
感谢您的时间。 :)
$students = DB::table('mark_prc')
->select('student_roll','mark')
->where('cen_code', $c_code)
->where('sub_code',$subject)
->get();
$k=0; //counter for serial no
$m=5; // no of row each table
$c = count($students); // now have data on array after query 29
$p = ceil($c/5); // the data should be show on 6 tables now
for($i=0;$i<$p;$i++){
echo "<table>
<tr>
<th>SL</th>
<th>Roll</th>
<th>Mark</th>
</tr>";
for($j=$k;$j<$m;$j++){
echo '<tr>
<td>'.($k+1).'</td>
<td>'.$students[$k]->student_roll.'</td>
<td>'.$students[$k]->mark.'</td>
<tr>';
$k++;
}
echo '</table>';
}
答案 0 :(得分:1)
不确定原因,但for($j=$k;
正在进行参考分配,因此$j=&$k
。
解决方法是 -
for($j=($i*$m);$j<min((($i*$m)+$m),$c);$j++){
($i*$m)
获取您的起始值,($i*$m)+$m)
添加“每个表的行数”
min((($i*$m)+$m),$c)
中的$j<min((($i*$m)+$m),$c)
是$c
的最大循环。
所以现在你的代码看起来像 -
$students = DB::table('mark_prc')
->select('student_roll','mark')
->where('cen_code', $c_code)
->where('sub_code',$subject)
->get();
$m=5; // no of row each table
$c = count($students); // now have data on array after query 29
$p = ceil($c/5); // the data should be show on 6 tables now
for($i=0;$i<$p;$i++){
echo "<table>
<tr>
<th>SL</th>
<th>Roll</th>
<th>Mark</th>
</tr>";
for($j=(($i*$m));$j<min((($i*$m)+$m),$c);$j++){
echo '<tr>
<td>'.($j+1).'</td>
<td>'.$students[$j]->student_roll.'</td>
<td>'.$students[$j]->mark.'</td>
<tr>';
}
echo '</table>';
}