2 つのページで同じ while ループを使用していますが、唯一の違いは各ページで異なる SQL 呼び出しです。1 つ目は、クエリからコンテンツを取得してイメージ スライダーに表示することで、正常に機能します。
<?php
$qry = mysql_query(sprintf("SELECT * FROM manageme WHERE element IN ('%s')", $element));
$i = 0;
while (($t = mysql_fetch_array($qry)) != null && $i < 52) { $i++;?>
<li>
<a href="">
<img src="<?php print $t['fileLocation']; ?>";
title="<?php print $t['element_name']; ?>";
name="<?php print $t['clickLocation']; ?>";
alt="wat"
class="btnshow" />
</a>
</li>
<?php } ?>
これは、返されるエントリが 52 未満である限り、ループをステップ実行してクエリからコンテンツを取得し、各レコードが 1 回表示されると終了するため、機能します。
別の SQL 呼び出しで同じ while ループを実装すると、問題が発生します。
<?php
$qry = mysql_query(sprintf("SELECT u.username, us.user_id, us.service_id,
s.imageID, s.title, s.clickLocation, s.fileLocation, s.element_name
FROM user u, user_service us, manageme s
WHERE us.user_id = %s
AND s.imageID = us.service_id", $_COOKIE['user_id']));
$i = 0;
while (($t = mysql_fetch_array($qry)) != null && $i < 52) { $i++;?>
<li>
<a href="">
<img src="<?php print $t['fileLocation']; ?>";
title="<?php print $t['element_name']; ?>";
name="<?php print $t['clickLocation']; ?>";
alt="wat"
class="btnshow" />
</a>
</li>
<?php } ?>
コンテンツが 1 回表示されたときに配列から取得して while ループを終了する代わりに、52 個のエントリが表示されるまでイメージ スライダーのコンテンツをループし続けます。たとえば、SQL 呼び出しでイメージ スライダーに表示するレコードが 4 つしか見つからない場合、4 つのセットはループを終了する前に 13 回 (52/4) 表示されます。
データベースから各レコードを一度だけ表示した後、このループを終了する方法を誰かが理解するのを手伝ってくれますか? 前もって感謝します!