2013-04-24 94 views
1

我有一个循环(PHP)内的循环是这样的:保证金DIV嵌套while循环

while(mysql...) { 
echo $row1->name.'<img src="info.png" />'; 
while(another_mysql...) { 
    echo $row2->name.'<img src="image.png" />'; 
} 
} 

现在这会导致这样的事情:

head_1 [info.png] 
value_a1 [image.png] 
value_a2 [image.png] 
value_a3 [image.png] 
head_2 [info.png] 
value_b1 [image.png] 
value_b2 [image.png] 

,你可以看到,图像不在一条直线上,因为这些值可能会不同,从而导致图像被进一步向右推。

当使用str_pad();转换值时,它确实有效但不稳定,并且有一点bug。 我不知道如何把图像放在div旁边的div值中,因为循环不会喜欢它。

我能做些什么把它输出类似:

head1  [info.png] 
value_a1 [image.png] 
value_a2 [image.png] 
value_a3 [image.png] 
head2  [info.png] 
value_b1 [image.png] 
value_b2 [image.png] 
+1

为什么不使用CSS? – jbrtrnd 2013-04-24 12:45:21

+0

您必须首先知道名称的最大长度,以便在echo'ing时将名称填充到该长度+ 3。这意味着,除非您知道最大宽度,否则您必须首先在echo'ing之前遍历所有名称。 – sroes 2013-04-24 12:50:25

+0

@ Mr.Alien您正在谈论编码标准和代码可读性,我完全同意这些原则,但MrMadMan想要格式化/样式的输出。所以MrMadMan使用CSS来看看Gaurav Vashishtha的答案。 – jbrtrnd 2013-04-24 12:56:50

回答

0

使用下面的代码,使其正确对齐:

echo "<div style='width:310px'>"; 
while(mysql...) { 
echo '<div style="width:50px;float:left">'.$row1->name.'</div><div style="width:250px;float:right"><img src="info.png" /></div>'; 
while(another_mysql...) { 
    echo '<div style="width:50px;float:left">'.$row2->name.'</div><div style="width:250px;float:right"><img src="image.png" /></div>'; 
} 
} 
echo "</div>"; 

用它在你的while循环。希望这会对你有所帮助。

+1

style =“50px”。你忘了选择器。 – jah 2013-04-24 12:53:39

+0

@JensAhlstenHerlevsen感谢提醒。我已更新它。 – 2013-04-24 12:55:05

+0

这个确实做到了! – Laurent 2013-04-24 12:56:20

0

有很多方法可以做到这一点。一个直接的解决方案是使用表格。例如:

echo '<table>' 
while(mysql...) { 
echo '<tr><td>'.$row1->name.'</td><td><img src="info.png" /></td></tr>'; 
while(another_mysql...) { 
    echo '<tr><td>'.$row2->name.'</td><td><img src="image.png" /></td></tr>'; 
} 
} 
echo '</table>' 

这让浏览器负责确定正确的宽度。其他方式使用div s。可以给它们固定的宽度 - 模拟一个表格 - 或者你可以使用position: absolute; right: 0;(加上一些更多的CSS)对齐包含图像的右侧div,这将正确对齐所有图像。