2012-07-31 48 views
1

我正在制作一个php页面来从mysql数据库中绘制信息,并且在我陷入困境之前,我想我会看看是否有更简单的方法来做我正在做的事情。PHP MYSQL水平循环

我有一个MySql查询返回多行,通过它我可以很容易地使用while循环进行循环,并且它显然会循环通过有相对“匹配”数据的地方。

拉出的每一行可能有1列到16列的数据,每行的数据是不同的,我当前提取有效信息的方式是对每列的硬编码“if”命令,以便只有具有被输入被显示出来,如:

if($column1 != ""){ 
    $output .= "<div style='float: left;'>Column 1 Stuff</div>"; 
    } 
if($column2 != ""){ 
    $output .= "<div style='float: left;'>Column 2 Stuff</div>"; 
    } 

这工作得很好,但它是不是很动态的,需要的代码的更新,如果MySQL数据库表的扩大,它是。我真的希望能够做到这一点,它使用一段代码,就像一个while循环一样,它为每个有数据的列执行相同的过程,并忽略任何空白单元格。有没有一种有效实现这一点的好方法,任何人都知道?

此外,为了防止出现问题,我的“div”全部对齐左侧,以便当它们到达封闭div的末端时,它们会自动将自己包装到下一行,所以如果有9个结果将3行3“格”框。这是实现这种结果的有效方式吗?我正在研究如何使用“break”命令,并在本文中回答 - >How to do a Horizontal looping in PHP,但我在IE9标签之前遇到了很多兼容性问题,所以我尽可能避免使用更多的兼容性问题。

在此先感谢您的帮助,如果确实可以的话! 乔

+0

等等。如何为同一个查询中的每行数据提供不同数量的列?你可以有空列,但我不明白你会得到不同数量的列。 – Palladium 2012-07-31 14:47:48

+0

对不起,解释不好,我的意思是在16列内可能有1到16个所需数据单元,总是会有相同数量的列(现在,无论如何) – JoeP 2012-07-31 14:50:01

回答

8

喜欢的东西:

$result = mysql_query(...); 
while($row = mysql_fetch_assoc($result)) { 
    foreach ($row as $key => $val) { 
     if (!empty($val)) { 
      echo ... 
     } 
    } 
} 

将处理结果集中的任意数量的列。

+0

真的这么简单吗? !?我几乎不希望!我会马上回来:) – JoeP 2012-07-31 14:52:18

+0

好的,那是我寻找的那种东西,谢谢!它实际上是复制数据,但每个活动单元格都会输出两次,您可以想到的任何快速修复? – JoeP 2012-07-31 15:06:00

+0

我正在使用mysql_fetch_array而不是assoc,所以不要担心:) – JoeP 2012-07-31 15:08:44