2011-03-07 17 views
0

我想以'Word-like'表格格式形成我的PHP/MySQL輸出:一行是背景顏色X,接下來是bg顏色Y,然後X再次,然後是Y等在PHP/SQL輸出中更改不同DIV的背景顏色

要做到這一點,我已經想出了一個解決方案,但我猜這不是真正的最好或最乾淨的方式來做到這一點。看看我的解決方案。我期待着您的想法/意見!

$selectdoc = "SELECT * FROM document WHERE docid = '" . $_GET['docid'] . "' LIMIT 10"; 
$queryselectdoc = mysql_query($selectdoc); 

$colorindicator = 1; 

while($dbdoc = mysql_fetch_object($queryselectdoc)) { 

    $title = "$dbdoc->title"; 

    $colorindicator = $colorindicator+1; 

    if ($i&1) 
     { 
     echo "<div id=\"even\">My BG color is the one based on EVEN!</div>"; 
     } 
    else 
     { 
     echo "<div id=\"odd\">My BG color is the one based on ODD!</div>"; 
     } 

} 
+2

您正在使用HTML標識來表示將會出現的事件,而不是其中的一種。這違背了HTML規範,他們聲明只能使用給定的ID一次。幸運的是,解決方案很簡單,只需使用class。您可能對http://dev.opera.com/articles/view/zebra-striping-tables-with-css3/感興趣,它描述瞭如何使用純CSS進行斑馬條紋處理。另外,你可以縮寫$ colorindicator = $ colorindicator + 1到$ colorindicator ++ – GordonM 2011-03-07 11:30:50

+0

記住,nth-child在IE8和更早的版本上不起作用。它只在IE9中引入,所以如果你想讓它在其他版本的IE中工作,你需要實現與上面類似的JavaScript。 – anothershrubery 2011-03-07 11:39:12

+0

只在Chrome/FF中嘗試過,但是這有點殺死了整個事情。謝謝@anothershrubery – 2011-03-07 11:45:03

回答

1

可以使用CSS僞類:nth-child使用列表或表或東西

嘗試使用像this :-)列表做

+0

真的很喜歡這個解決方案!簡單而簡單。當然,最好使用List而不是Div。豎起大拇指! – 2011-03-07 11:43:42

+0

謝謝:-)我自己最近發現了':nth-​​child()'類。我說的一個美妙的發現 - 節省必須在PHP或三元操作中執行愚蠢的if()。 – Bojangles 2011-03-07 13:02:10

0

這是更短:

echo ((++$colorindicator % 2)==1) ? "<div id=\"odd\">" : "<div id=\"even\">"; 
echo "contents</div>"; 
+1

不要對多個元素使用相同的'id'。使用'class'。 – 2011-03-07 13:00:15

+0

相當。另外,看看我的答案 - 使用CSS比三元運算符和不同的類更加乾淨---) – Bojangles 2011-03-07 13:02:49