php whileループ変数を3番目のdivごとに実行する
-
05-07-2019 - |
質問
while ループ内の 3 番目の項目ごとに変数を div 内のクラスに割り当てる方法です。ブループリント構造を使用していて、3番目のdivが最後にあり、3番目の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 */
解決
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 */
他のヒント
これをクライアント側で実行したい場合は、CSS3 を使用して実行できます (古いブラウザーには JS を追加 [DOMAssistant + Selectivizr])。
CSS: div.imageBorder:nth-child(3n) { /* style attributes will be applied to every 3rd div */ }
$sql = "SELECT * FROM shoeData";
$results = mysql_query($sql);
while($row = mysql_fetch_array($results)) {
// whatever code here
}
MySQLは、真の値と比較しながら操作を実行するのに十分スマートではないようです
$ row = mysql_fetch_array($ results)
がTRUEのように見えるため、 $ sql
、 $ result
を指定する必要があります。データの最初の行を永久に。
すべてのXアイテムがモジュロを使用して何かを行うことを意図している場合。モジュロは除算の剰余であり、除算が整数である場合はゼロになります。
if(!($counter%3)) {
// this is 3 6 9 etc.
}
$counter++;
もちろん、任意の番号で実行できます。
所属していません StackOverflow