Php / Mysql while loop - Div НЕ повторяется для каждого возможного результата. Только последний результат показан? (есть код) - PullRequest
1 голос
/ 04 ноября 2011

У меня проблемы с циклом while, который рисует данные из базы данных mysql. По сути, пользователь ищет строку, затем строка сравнивается с возможными именами в БД. Если строка соответствует результату из БД, то возвращается строка и информация, относящаяся к результату, выводится в своем собственном div.

Вот несколько некорректный код, относящийся к циклу while:

    (LOTS OF CODE RELATING TO EVERYTHING ELSE BEFORE THIS)
    $tempVar = 0;
while ($data = mysql_fetch_array($data)) {
    $lstId = $data['id'];
    $lstName = $data['name'];
    $lstDesc = $data['description'];
    $lstAddress = $data['address'];
    $lstArea = $data['area'];
    $lstProvince = $data['province'];
    $lstPostcode = $data['postcode'];
    $lstTel = $data['tel'];
    $lstCell = $data['cell'];
    $lstFax = $data['fax'];
    $lstEmail = $data['email'];

if ($tempVar == 0) {
    $pageContent .= '
        <div class="searchResultS">
    ';
    }
    $pageContent .= '
    <div class="searchResult">
    <h2>'.$lstName.'</h2>
        <div class="bizDesc">
            <p>Description: '.$lstDesc.'</p>
        </div>
        <div class="bizAddr">
            <p>Street: '.$lstAddress.'</p>
            <p>Town: '.$lstArea.'</p>
            <p>Province: '.$lstProvince.'</p>
            <p>Post Code: '.$lstPostcode.'</p>
        </div>
        <div class="bizCont">
            <p>Tel: '.$lstTel.'</p>
            <p>Cell: '.$lstCell.'</p>
            <p>Fax: '.$lstFax.'</p>
            <p>eMail: '.$lstEmail.'</p>
        </div>
    </div>
';
  $tempVar ++;
 }

if ($anymatches > 0 and count($tempVar) == count($anymatches)) {
        $pageContent .= '
    <!-- end .searchResultS --></div>
';
}

Проблема, с которой я столкнулся, заключается в том, что когда пользователь ищет строку с двумя или более возможными результатами. Кажется, будто отображается только последний результат. И не все возможные результаты, каждый по-своему содержащий div. Я точно знаю, что есть больше результатов, так как есть сгенерированная строка, которая отображает количество возвращенных строк mysql.

Будет ли у кого-нибудь предложение или решение этой проблемы? Я предполагаю, что что-то упущено, но после многих часов проб и ошибок, я не нашел веской причины, почему такое поведение существует в настоящее время.

Любая помощь, что так всегда будет цениться, спасибо!

1 Ответ

3 голосов
/ 04 ноября 2011

Похоже, вы перезаписываете ресурс результата $data в массив на первой итерации цикла.После этой итерации $data больше не будет доступен как ресурс результатов, поэтому он будет выглядеть так, как будто у вас был только один результат.

while ($data = mysql_fetch_array($data)) {

// Instead use a new variable:
while ($row = mysql_fetch_array($data)) {
//-----^^^^

// Then change all of these
$lstId = $row['id'];
$lstName = $row['name'];
$lstDesc = $row['description'];
...
...
$lstEmail = $row['email'];

Вы должны включить display_errors в разработке,как и следовало ожидать, вы получите это предупреждение после первой итерации цикла:

Предупреждение: mysql_fetch_array () ожидает, что параметр 1 будет ресурсом ...

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