2010-05-20 37 views
1

我想在表格中显示我的来自Mysql的查询。然而,我的数据是这样的:在表格中显示PHP查询数组

Array([0]=>data1, [1]=>data2, [2]=>data3,[3]=>data4,[4]=>pic1,[5]=>pic2,[6]=>pic3,[7]=>pic4); 

我要显示我的表:

|data1 | data2 |data3 |data4 
|pic1 | pic2 |pic3 |pic4 

我知道如何显示像TD或者tr,但不知道在单玲数据如何在同一个循环中执行tr和td。任何帮助?提前致谢!

while($query=mysql_fetch_array($dataQuery)){ 
//not sure what to do here. 
} 
+0

你能解释更多关于如何知道如何将这个特定的例子分成两行吗?即为什么pic1和pic2在单独的行上?仅仅是你只需要每行两个元素,还是因为某些元素是“数据”而其他元素是“图片”? – 2010-05-20 14:11:36

+0

元素都是字符串。 Pic1只是一个例子。我想每行显示至少3个数据。总共2排。该表将像上面更新的版本...谢谢 – FlyingCat 2010-05-20 14:17:18

+0

PerroVerd的答案似乎是最好的情况。您可以简单地得到元素的总数,除以2,然后将$列设置为该数字,从而产生两行,无论结果的数量如何。 – 2010-05-20 14:32:43

回答

2

将两行组装成字符串,然后在表格行之间输出它们可能更容易。你知道你有多少物品(行数),所以把它除以二。然后从这个数字中减去一个(你可能想要检查它是否是你知道你没有犯过错误)来说明事实上数组是从零开始的。遍历整个数组。直到你到达中途点,你正在组装你的标题行。之后,你正在组装你的图片行。然后在表格行标签之间回显结果。这里有一个粗略的(未经测试的)代码拍摄:

$rows = mysql_fetch_array($dataQuery); 
$total_rows = mysql_num_rows($rows); 
// check total_rows is even here? 
$midpoint = $total_rows/2 - 1; 
$title_row = ''; 
$photo_row = ''; 
foreach($rows as $num => $row) 
{ 
    $new_row = sprintf("\n\t<td>%s</td>", $row[0]); 
    if ($num < $midpoint) 
    { 
     $title_row .= $new_row; 
    } 
    else 
    { 
     $photo_row .= $new_row; 
    } 
} 

echo sprintf("\n<tr>%s</tr>", $title_row); 
echo sprintf("\n<tr>%s</tr>", $photo_row); 
+0

+1:这是我将如何解决它。 – Josh 2010-05-20 14:37:36

+0

谢谢你的帮助。 – FlyingCat 2010-05-20 15:08:11

+0

没问题。我觉得我在其他例子中的代码中存在一处错误),但很高兴我能提供帮助。 – Tom 2010-05-20 16:25:55

2
<?php 
$rows = mysql_fetch_array($dataQuery); 
echo "<table><tr>"; 
foreach($rows as $num => $row){ 
    echo "<td>".$row[$num]."</td>"; // here we echo every object in array 
    if($num%2 == 0){ 
     echo "</tr><tr>"; // if we get to a number witch can be divided by 2 we add a new table row 
    } 
} 
echo "</tr></table>"; 
?>

我认为这应该为你工作。

+1

这不会产生'| data1 | data2'作为第一行和'| data3 | data4'作为第二个,'| pic1 |图片2“作为第三和”| pic3 |“ pic4'作为第四行? – Josh 2010-05-20 14:23:58

+1

乔希。我更新了我的问题以显示4列。原来的问题只有2列。 :D我正在研究他的解决方案。 – FlyingCat 2010-05-20 14:28:51

+0

它会正确地产生他第一次问他,现在他重拍了他的问题 – 2010-05-20 14:34:32

2

如果您有直线数据,但您知道应该使用计数器尝试的列数。

$columns = 2; 
$ct = 0; 
while($query=mysql_fetch_array($dataQuery)) { 

    if ($ct % $columns == 0) echo "<tr>"; 

    echo '<td>' . query_data_to_extract . '</td>'; 
    $ct++; 

    if ($ct % $columns == 0) echo "</tr>"; 

} 
+0

PerroVerd。我不知道我会有多少列。它基于我的Mysql数据。您的解决方案适用于已知列。不过谢谢。 – FlyingCat 2010-05-20 14:37:21

+0

什么是'query_data_to_extract'? – Josh 2010-05-20 14:45:53

+0

+1给你PerroVerd。谢谢。 – FlyingCat 2010-05-20 15:07:41