php自定义函数从mysql查询返回记录集 .
我需要填充一个具有相同数量或两者之间 balancer 的两列表 .
我知道我们可以按行数分割行计数然后使用循环来相应地填充每个td .
是否有任何建议或最实用的方法将记录集显示在根据其大小组织的表格上?
目前不使用模板 .
基本上需要控制TD标签是否有回声和填充 .
Sample Code:
$col_num = 2; //Number of colums to parse data onto.
$count_r = mysql_num_rows($result)/$col_num;
echo '<table style="width:400px;border:3px solid green;"><tr><td>';
$ui=1;
while($row = mysql_fetch_array($result))
{
if($ui<$count_r)
{
echo '<input disabled type="checkbox" value="$row[id]"'; $this->ischecked($uid,$row[id]); echo "/>".$row['name'].'<br>'."\r\n";
}
$ui++;
}
//FIRST COLUMN SET
echo '</td>';
echo '<td>';
//SECOND COLUMN SET
echo '</td></tr></table>';
2 回答
如果你没有在名为
$result
的数组中获得结果,请执行以下操作:我不是最好的方法,但是在你的情况下这样做.692161_d . 请记住,我是_692162 . 要检查是否设置了
$results
,您可以使用if
语句检查它的计数值 .注意对于传统格式的代码,将
for($i=0;$i<count($result);$i+=2):
替换为for($i=0;$i<count($result);$i+=2){
,将endfor;
替换为}
.我建议使用无序列表 -
<ul>
,并将CSSfloat
属性应用于其列表项(<li>
) . 这样,您就不必担心计算记录数 .只需输出
<li>
中的每条记录,并将它们全部设置为float: left;
.然后约束
<ul>
的高度,以便它足够短以迫使额外的<li>
浮动到新列 .正如@Steve指出的那样,您还需要将
<li>
宽度设置为常量,以使列保持一致 . 并使<ul>
的宽度超过<li>
宽度的两倍且不到三倍 .一种基本的方法是在查询中调用
mysql_num_rows()
. 将结果乘以每个<li>
的高度,然后除以2,这将是<ul>
的高度 . 这将使每列具有相同的高度 .您也可以使用
<div>
s(每个项目一个<div>
,全部包含在一个全局<div>
中) .但是使用列表是在HTML中显示信息列表的首选方式(除非信息本质上是表格式的,并且每个字段需要多个列,而不是您的字段) .
如果您需要更详细的帮助,那么就有great Opera Web Standards article .