2009-11-27 5 views
6

Est leur chemin dans une boucle while pour affecter une variable à une classe dans un div, pour chaque troisième élément dans une boucle while. J'utilise la structure blueprint et la troisième div est à la fin et j'ai besoin d'attacher un "dernier" nom de classe à chaque troisième div donc 3ème div 6 div 9ème div et ainsi de suite?php while boucle variable pour chaque div 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 */ 

Répondre

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

.... 
} 

La partie clé ici est la ($i % 3) == 0.

EDIT: Ce qui suit est en réponse à votre commentaire.

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

Hey Im assez nouveau à ceci, comment je l'implémenterais ci-dessus, j'ai ajouté mon code ci-dessus –

+0

Awesome Totalement travaillé –

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

    // whatever code here 

} 

Il ne semble pas que MySQL est intelligent opérations d'effectuer assez en comparant à la valeur réelle vous devez spécifier $sql, $result parce qu'il ressemble à $row = mysql_fetch_array($results) est vrai, alors il est bloqué sur le premier vrai chargement rangée de données pour toujours.

2

Si vous voulez faire cela du côté client, cela peut être fait avec CSS3 (ajoutez JS pour les anciens navigateurs [DOMAssistant + Selectivizr]).

CSS: div.imageBorder:nth-child(3n) { /* style attributes will be applied to every 3rd div */ }

0

Si l'intention est de faire quelque chose que chaque X élément utilisation modulo. modulo est le reste de la division et devient nul si la division est exacte en nombre entier.

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

Bien sûr, vous pouvez le faire avec n'importe quel nombre.

Questions connexes