Pregunta

Es su forma en un bucle while para asignar una variable a una clase en un div, para cada tercer elemento en un bucle while. Estoy usando la estructura de planos y el tercer div está al final y necesito adjuntar un " último " nombre de la clase a cada tercer div, por lo tanto 3er div 6to div 9no div y así sucesivamente?

/* LOOP THROUGH SHOEDATA TABLE */

$results = mysql_query("SELECT * FROM shoeData");


while($row = mysql_fetch_array($results)){

$name = $row['name'];
$about = $row['about'];
$company = $row['company'];
$buy = $row['buy'];
$tags = $row['tags'];
$id = $row['id'];
$image = $row['image'];


/* ECHO THE SHOEDATA RESULTS */     

    echo "<div class='imageBorder span-8 column'>";
        echo "<div id='imageHeight'>";
        echo "<img  src='thumbs/$image'>";
        echo "</div>";

        echo "<ul>";

            echo "<li>$name</l1>";
            echo "<li>$about</l1>";
            echo "<li>$company</l1>";
            echo "<li><a href='$buy'>BUY</a></l1>";
            echo "<li>$tags</l1>";
        echo "</ul>";
    echo "</div>";


}/*SHOEDATA WHILE LOOP ENDS */
¿Fue útil?

Solución

for ($i = 0; $i < $numRecords; $i++)
{
 $className = "";
 if (($i % 3) == 0)
 {
  $className = "last"
 }

 ....
}

La parte clave aquí es el ($ i% 3) == 0 .

EDITAR: Lo siguiente es en respuesta a tu comentario.

/* LOOP THROUGH SHOEDATA TABLE */

$results = mysql_query("SELECT * FROM shoeData");

$i = 0;
while($row = mysql_fetch_array($results)){
$i++;
$name = $row['name'];
$about = $row['about'];
$company = $row['company'];
$buy = $row['buy'];
$tags = $row['tags'];
$id = $row['id'];
$image = $row['image'];


/* ECHO THE SHOEDATA RESULTS */         
    $additionalClass = ($i % 3) == 0 ? " last" : "";
    echo "<div class='imageBorder span-8 column" . $additionalClass . "'>";
        echo "<div id='imageHeight'>";
        echo "<img  src='thumbs/$image'>";
        echo "</div>";

        echo "<ul>";

                echo "<li>$name</l1>";
                echo "<li>$about</l1>";
                echo "<li>$company</l1>";
                echo "<li><a href='$buy'>BUY</a></l1>";
                echo "<li>$tags</l1>";
        echo "</ul>";
    echo "</div>";


}/*SHOEDATA WHILE LOOP ENDS */

Otros consejos

Si desea hacer esto en el lado del cliente, puede hacerlo con CSS3 (agregue JS para los navegadores más antiguos [DOMAssistant + Selectivizr]).

CSS: div.imageBorder: nth-child (3n) {/ * los atributos de estilo se aplicarán a cada tercer div * /}

$sql = "SELECT * FROM shoeData";
$results = mysql_query($sql);
while($row = mysql_fetch_array($results)) {

    // whatever code here 

}

No parece que MySQL sea lo suficientemente inteligente como para realizar operaciones mientras se compara con el valor real debe especificar $ sql , $ result porque parece que $ row = mysql_fetch_array ($ results) es VERDADERO por lo que se atasca en la carga real la primera fila de datos para siempre.

Si la intención es hacer algo, cada elemento X usa módulo. módulo es el resto de la división y se convierte en cero si la división es exactamente un entero.

if(!($counter%3)) {
    // this is 3 6 9 etc.
}
$counter++;

Por supuesto que puedes hacerlo con cualquier número.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top