php while variable de boucle pour chaque troisième div
-
05-07-2019 - |
Question
Est-ce une façon dans une boucle while d'affecter une variable à une classe dans un div, pour chaque troisième élément d'une boucle while. J'utilise la structure du plan directeur et la troisième division est à la fin et je dois joindre un "dernier" nom de classe à chaque troisième div, donc 3ème div 6ème div 9ème div et ainsi de suite?
/* 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 */
La solution
for ($i = 0; $i < $numRecords; $i++)
{
$className = "";
if (($i % 3) == 0)
{
$className = "last"
}
....
}
La partie clé ici est le ($ i% 3) == 0
.
MODIFIER: Ce qui suit est une 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 */
Autres conseils
Si vous souhaitez le faire côté client, vous pouvez le faire avec CSS3 (ajoutez JS pour les anciens navigateurs [DOMAssistant + Selectivizr]).
CSS: div.imageBorder: nth-child (3n) {/ * attributs de style seront appliqués à chaque 3ème div * /}
$sql = "SELECT * FROM shoeData";
$results = mysql_query($sql);
while($row = mysql_fetch_array($results)) {
// whatever code here
}
Il ne semble pas que MySQL soit assez intelligent pour effectuer des opérations tout en se comparant à la valeur réelle
vous devez spécifier $ sql
, $ result
car il ressemble à $ row = mysql_fetch_array ($ results)
est TRUE et reste bloqué lors du chargement. la première ligne de données pour toujours.
Si l’intention est de faire quelque chose que chaque élément X utilise modulo. modulo est le reste de la division et devient zéro si la division est un entier exact.
if(!($counter%3)) {
// this is 3 6 9 etc.
}
$counter++;
Bien sûr, vous pouvez le faire avec n’importe quel nombre.