2013-04-24 93 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,這將正確對齊所有圖像。