переменная цикла php while для каждого третьего div - PullRequest
8 голосов
/ 27 ноября 2009

Это способ в цикле while назначать переменную классу в div для каждого третьего элемента цикла while. Я использую структуру проекта, и третий div находится в конце, и мне нужно прикрепить «последнее» имя класса к каждому третьему div, так что 3-й div 6-й div 9-й 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 */

Ответы [ 4 ]

29 голосов
/ 27 ноября 2009
for ($i = 0; $i < $numRecords; $i++)
{
 $className = "";
 if (($i % 3) == 0)
 {
  $className = "last"
 }

 ....
}

Ключевой частью здесь является ($i % 3) == 0.

РЕДАКТИРОВАТЬ: Ниже в ответ на ваш комментарий.

/* 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 */
2 голосов
/ 10 мая 2012

Если вы хотите сделать это на стороне клиента, это можно сделать с помощью CSS3 (добавьте JS для старых браузеров [DOMAssistant + Selectivizr]).

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

1 голос
/ 26 февраля 2011
$sql = "SELECT * FROM shoeData";
$results = mysql_query($sql);
while($row = mysql_fetch_array($results)) {

    // whatever code here 

}

Не похоже, что MySQL достаточно умен для выполнения операций по сравнению с истинным значением. Вы должны указать $sql, $result, потому что похоже, что $row = mysql_fetch_array($results) - ИСТИНА, поэтому он застревает при истинной загрузке первой строки данных навсегда.

0 голосов
/ 09 мая 2017

Если намерение состоит в том, чтобы что-то сделать для каждого элемента X, используйте модуль. по модулю остаток от деления и становится равным нулю, если деление является целым числом.

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

Конечно, вы можете сделать это с любым номером.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...