Две одинаковые функции цикла while, вторая не работает - PullRequest
0 голосов
/ 05 января 2012

У меня проблема с моим PHP-скриптом. Скрипт генерирует два <ul>, один с изображениями, другой с миниатюрами. Php отлично проходит первый цикл while, но мой <ul> для миниатюр всегда возвращается пустым. Я работал над этим безуспешно, и я не могу заставить скрипт печатать какие-либо ошибки. Помощь

include "../backend/connect.php";
$query = "select image_id from images where thumb != '';";
$result = mysql_query($query);
<div id="main">
    <div id="container">
        <ul>
            <?php
            while ($row = mysql_fetch_array($result)) {
                $img_id = $row['image_id'];
            ?>
            <li class="hidden" id="<?php print($img_id); ?>" style="background-image:url(/pull.php?id=<?php print($img_id);?>&thumb=false)"></li>
            <?php } ?>
            <li class="" id="focus"></li>
        </ul>
    </div>
</div>
<div id="side">
    <div id="photos"><ul>
    <?php
    while ($row = mysql_fetch_array($result)) {
        $img_id = $row['image_id'];
    ?>
        <div class="imgDiv" id="<?php print($img_id); ?>" >
            <li>
                <img src="pull.php?id=<?php print($img_id);?>&thumb=true" class="thumbnail"/>

            </li>
        </div>
    <?php
        }
    ?>
    </ul></div>
    </div>
</div>

Ответы [ 4 ]

5 голосов
/ 05 января 2012

вы используете цикл while для просмотра результатов, вы не можете сделать это дважды.

Вызовите mysql_data_seek($result, 0);, чтобы сбросить внутренний указатель на первую запись после того, как вы в первый раз просмотрели результаты для начала.

1 голос
/ 05 января 2012

Ваш первый while зацикливается, пока mysql_fetch_array($result) не станет ложным / пустым.Вы никогда не назначаете новое значение для $ result, поэтому, когда вы получаете второй while, он пропускает цикл.

Если вы хотите дважды просмотреть результаты, сбросьте их в массив и используйте foreach перебрать его.

1 голос
/ 05 января 2012

Звучит так, как будто вы прочитали все строки в первом цикле, и к тому времени, когда вы перейдете ко второму циклу, больше нечего читать:)

0 голосов
/ 05 января 2012

В первый раз, когда вы просматриваете результаты, вы на самом деле очищаете объект $ result.Возможно, вы могли бы выполнить цикл, выполнив что-то вроде:

$image_ids = array();
while ($row = mysql_fetch_array($result)) {
    array_push($img_ids, $row['image_id']);
}
?>

, а затем выполнить цикл по этому массиву при генерации кода.

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