php自定义函数从mysql查询中返回记录集。
我需要填充一个数量相等或两者之间平衡的两列表。
我知道我们可以按行数分割行数,然后使用循环来相应地填充每个td。
将记录集显示在根据其大小组织的表格上的任何建议或最实用的方法吗?
目前不使用模板。
基本上需要控制TD标签是否为回声并填充。
示例代码:
$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>';
答案 0 :(得分:1)
如果您不介意记录的顺序,您可以简单地做(假设您的结果名为$result
)以下内容:
...
echo "<table>";
for($i=0;$i<count($result);$i+=2):
echo "<tr>";
echo "<td>{$result[$i]['field']}</td>";
echo "<td>{$result[$i+1]['field']}</td>";
echo "</tr>";
endfor;
echo "</table>";
我不知道这是否是最好的方式,但这是我在你的情况下做的方式。请记住,我没有检查是否有任何实际结果,我们假设情况确实如此。要检查是否设置了$results
,您可以使用if
语句检查其计数。例如。
注意的
将for($i=0;$i<count($result);$i+=2):
替换为for($i=0;$i<count($result);$i+=2){
,将endfor;
替换为}
,以获取传统格式的代码。
答案 1 :(得分:1)
我建议使用无序列表 - <ul>
,并将CSS float
属性应用于其列表项(<li>
)。这样,您就不必担心计算记录数量了。
只需输出<li>
中的每条记录,然后将其全部设置为float: left;
。
然后约束<ul>
的高度,以便它足够短以迫使额外的<li>
浮动到新列。
正如@Steve指出的那样,您还需要将<li>
宽度设置为常量,以使列保持一致。并使<ul>
的宽度超过<li>
宽度的两倍且不到三倍。
执行此操作的基本方法是在查询中调用mysql_num_rows()
。将结果乘以每个<li>
的高度,然后除以2,这将是<ul>
的高度。这将使每列具有相同的高度。
你 也可以<{1}} s(每个项目一个<div>
,全部包含在一个全局<div>
中)。
但是使用列表是在HTML中显示信息列表的首选方式(除非信息本质上是表格式的,并且每个字段需要多个列,而不是您的字段。)
如果您需要更详细的帮助,可以使用great Opera Web Standards article。