2009-11-27 11 views
6

Es su forma en un bucle while para asignar una variable a una clase en un div, por cada tercer elemento en un bucle while. Estoy usando la estructura de blueprint y el tercer div está al final y necesito unir el "último" nombre de clase a cada tercer div así que 3 ° div 6 ° div 9 ° div y así sucesivamente.php while variable de bucle por cada tercer div

/* 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 */ 

Respuesta

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

.... 
} 

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

EDITAR: Lo siguiente es en respuesta a su 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 */ 
+0

Hola soy bastante nuevo en esto, ¿cómo lo implementaría arriba, agregué mi código anterior –

+0

Awesome Totally Worked –

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

    // whatever code here 

} 

No parece que MySQL es lo suficientemente inteligente como la realización de operaciones mientras que en comparación al valor verdadero debe especificar $sql, $result porque parece que es VERDADERO $row = mysql_fetch_array($results) por lo que se queda atascado en la verdadera carga de la primera fila de datos para siempre.

2

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) { /* style attributes will be applied to every 3rd div */ }

0

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

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

Por supuesto que puede hacerlo con cualquier número.

Cuestiones relacionadas