浮动所有其他项目回显php

时间:2011-04-23 06:36:01

标签: php css list css-float echo

我试图向左移动所有其他UL标签,我知道我应该把每件物品和其他物品都清楚地留下来:左,从我读过的,但事情是我不知道有多少UL或LI会因为我从数据库回应而出现。

这是CSS:

.clientes_provincia li{
    font-family:Verdana, Geneva, Tahoma, sans-serif;
    font-size:10px;
    font-weight:bold;
    text-decoration:none;   
    list-style-type:none;
    text-align:left;
    margin-top:0px;
    margin-left:10px;
}
.clientes_comuna li{
    font-family:Verdana, Geneva, Tahoma, sans-serif;
    font-weight:bold;
    font-size:10px;
    font-weight:bold;
    text-decoration:none;
    list-style-type:none;
    list-style-position:inside;
}
.clientes_giro li{  
    font-family:Verdana, Geneva, Tahoma, sans-serif;
    font-size:10px;
    font-weight:normal;
    text-decoration:none;
    list-style-type:disc;
}
.clientes_nombre li{
    font-family:Verdana, Geneva, Tahoma, sans-serif;
    font-size:10px;
    font-weight:normal;
    text-decoration:none;
    list-style-type:circle;
    margin-left:20px;
}

这是php代码,我回显列表:

<?php
        $nombreProvincia = "";
        $nombreComuna = "";
        $nombreGiro = "";
        $nombreNombre = array();

        while ($row = mysql_fetch_assoc($resultAraucania)) {
            if ($nombreProvincia == $row['nombreProvincia']) {
                if ($nombreComuna == $row['nombreComuna']) {
                    if ($nombreGiro == $row['nombreGiro']) {
                        $nombreNombre[] = $row['nombreNombre'];
                    }
                    else { //nombreGiro
                        echo '<li>' . implode('</li><li> ', $nombreNombre).'</li></ul></li></ul>';
                        $nombreGiro = $row['nombreGiro'];
                        echo '<ul class="clientes_giro"><li>'.$nombreGiro.'<ul class="clientes_nombre">';
                        $nombreNombre = array($row['nombreNombre']);
                    }
                }
                else { // nombreComuna
                    echo '<li>' . implode('</li><li> ', $nombreNombre).'</li></ul></li></ul></li></ul>';
                    $nombreComuna = $row['nombreComuna'];
                    echo '<ul class="clientes_comuna"><li>'.$nombreComuna;
                    $nombreGiro = $row['nombreGiro'];
                    echo '<ul class="clientes_giro"><li>'.$nombreGiro.'<ul class="clientes_nombre">';
                    $nombreNombre = array($row['nombreNombre']);
                }
            }
            else { // nombreProvincia
                if (!empty($nombreNombre)) {
                    echo '<li>' . implode('</li><li> ', $nombreNombre).'</li></ul></li></ul></li></ul></li></ul>';
                }
                $nombreProvincia = $row['nombreProvincia'];
                   // this is the UL i'd like float for every other one.
                echo '<ul class="clientes_provincia"><li>'.$nombreProvincia; 
                $nombreComuna = $row['nombreComuna'];
                echo '<ul class="clientes_comuna"><li>'.$nombreComuna;
                $nombreGiro = $row['nombreGiro'];
                echo '<ul class="clientes_giro"><li>'.$nombreGiro.'<ul class="clientes_nombre">';
                $nombreNombre = array($row['nombreNombre']);
            }
        }
        echo '<li>' . implode('</li><li> ', $nombreNombre).'</li></ul></li></ul></li></ul></li></ul>';  
?>

所以我想要做的是浮动'Provincia'回声的每个其他UL标签。 谢谢你的帮助!

此时此刻我得到了这样一个列表:

  • Provincia1  
       
    • Comuna1      
             
      • Giro1         
                  
        • Nombre1
        •         
        • Nombre2
        •         
             
      •      
        
    •   
  • Provincia2  
       
    • Comuna2      
             
      • Giro2         
                  
        • Nombre3
        •         
        • Nombre4
        •         
             
      •      
        
    •   

我希望省份2位于省份1的右侧,如果我有另一份清单 provincia 3我希望它在pronvincia 1之下,并且在provincia 3旁边的prinvia 4等等......这就是我所说的漂浮其他所有UL provincia,希望有帮助作为一个例子。

3 个答案:

答案 0 :(得分:2)

$i = 0;
while ($row = mysql_fetch_assoc($resultAraucania)) {
    $class = $i++ % 2 ? 'odd' : 'even';

    ...

    echo '<li class="' . $class . '">';

    ...
}

这使您可以轻松区分偶数列和奇数列,并将“每隔一列”浮动一列。

答案 1 :(得分:1)

如果您不太关心IE,可以使用

.clientes_provincia:nth-of-type(odd) { float: left }

答案 2 :(得分:1)

我认为你的标记和循环使这个问题比它应该更难。我实际上认为它可能只是一个循环。

这里的诀窍是在容器<div>和每个<ul>上使用宽度,它会自动强制浏览器浮动两个<ul>,然后放到下一行以获取以下内容<ul>。如果你不能使用这个静态宽度的想法,那么你已经有了2个非常好的其他解决方案。

这是我在http://writecodeonline.com/php/

测试的一个小例子
$dataRow = array();
$dataRow[0] = array('nombreProvincia' => 'A123', 'nombreComuna' => 'A456', 'nombreGiro' => 'A789', 'nombreNombre' => array(101, 102));
$dataRow[1] = array('nombreProvincia' => 'B123', 'nombreComuna' => 'B456', 'nombreGiro' => 'B789', 'nombreNombre' => array(201, 202));
$dataRow[2] = array('nombreProvincia' => 'C123', 'nombreComuna' => 'C456', 'nombreGiro' => 'C789', 'nombreNombre' => array(301, 302));

echo '<div style="width:600px">';

foreach ($dataRow as $key => $row) {
        $nombreProvincia = $row['nombreProvincia'];
        $nombreComuna = $row['nombreComuna'];
        $nombreGiro = $row['nombreGiro'];
        $nombreNombre = '<li>'.implode('</li><li>', $row['nombreNombre']).'</li>';

        echo $provincia = <<<HTML
<ul class="clientes_provincia" style="width:200px;float:left;">
    <li>$nombreProvincia
        <ul class="clientes_giro">
            <li>$nombreGiro
                <ul class="clientes_nombre">
                    $nombreNombre
                </ul>
            </li>
        </ul>
    </li>
</ul>
HTML;
}

echo '<br style="clear:both"></div>';

此外,如果您使用PHP&gt; = 4,则heredoc非常棒。