Выводит на 1 строку меньше

Тема в разделе "PHP", создана пользователем yeaahhh, 7 авг 2010.

Статус темы:
Закрыта.
Модераторы: latteo
  1. yeaahhh

    yeaahhh

    Регистр.:
    8 май 2008
    Сообщения:
    278
    Симпатии:
    11
    Друзья, столкнулся с проблемой.. Вывожу информацию из бд..
    PHP:
    $logpol id юзера;
    $ffav mysql_query("select * from fav WHERE id_user='$logpol' limit 0, 100",$db);
    Далее через цикл while вывожу записи..


    Почему-то не выводит точное кол-во строк.. Например, в базе по запросу лежит 3 строки.. Но выводится 2..
    В чём может быть причина?
    Заранее спасибо!
     
  2. Digwnews

    Digwnews Читатель

    Заблокирован
    Регистр.:
    1 мар 2010
    Сообщения:
    127
    Симпатии:
    24
    Мало информации.
    Или быть может вы лимитом себя ограничили?

    Или в цикле неверно. В общем мест для ошибок может быть много.
     
  3. olen

    olen Постоялец

    Регистр.:
    30 окт 2007
    Сообщения:
    128
    Симпатии:
    33
    Если этот запрос выполнить в phpMyAdmin (или другой тулзе), то выводятся все строки? Если да, то ищите проблему дальше (в цикле или дальше).
     
  4. yeaahhh

    yeaahhh

    Регистр.:
    8 май 2008
    Сообщения:
    278
    Симпатии:
    11
    Если убрать лимит, то проблема остаётся..

    вот полный код:
    PHP:
    $ffav = mysql_query("select * from fav WHERE id_user='$logpol' limit 0, 100",$db); 
    $fav = mysql_fetch_array($ffav);

    ?>
    <div align="left" style="font-size:10px;margin-bottom:2px;"><b>Âàøè çàêëàäêè:</b></div>
    <div style="font-size: 11px;background:#EEEBDD;border:2px dashed #E4E0CE;padding:10px 10px 8px 10px;">
    <table cellspacing=0 width="290" cellpadding=2 border=0 style="font-size:11px;">
    <tr><td>
    <?

    if ($fav['id_user_fav'] == '') {echo "Ó Âàñ â çàêëàäêàõ 0 ïîëüçîâàòåëåé";}
    else {
    while ($fav = mysql_fetch_array($ffav)) {
    ?>
    <a href="/id<? echo $fav['id_user_fav']; ?>" title="Ïåðåéòè íà ñòðàíèöó <? echo $fav['fav_login']; ?>">
    <img src="/avatars/<? echo $fav['fav_login']; ?>.jpg" width="45px" style="margin-bottom:2px;"/>
    </a>
    <?
    }
    }
     
  5. Digwnews

    Digwnews Читатель

    Заблокирован
    Регистр.:
    1 мар 2010
    Сообщения:
    127
    Симпатии:
    24
    так вы вызываете mysql_fetch_array() в начале и от него не выводите данные.
     
    yeaahhh нравится это.
  6. yeaahhh

    yeaahhh

    Регистр.:
    8 май 2008
    Сообщения:
    278
    Симпатии:
    11
    PHP:
    $fav mysql_fetch_array($ffav);
    в начале прописано для того, чтобы проверить переменную $fav['id_user_fav']..
    а позже $fav = mysql_fetch_array($ffav); прописан для цикла..
    Я совсем не гуру в php.. может что-то необходимо по-другому реализовать?
     
  7. Google.com

    Google.com Читатель

    Заблокирован
    Регистр.:
    16 фев 2010
    Сообщения:
    250
    Симпатии:
    295
    А так?
    PHP:
    $ffav =  mysql_query("select * from fav WHERE id_user='$logpol' limit 0, 100" ,$db);
    while (
    $tablerows mysql_fetch_row($ffav)){
       echo(
    $tablerows[0]."\n");
    }
     
  8. Digwnews

    Digwnews Читатель

    Заблокирован
    Регистр.:
    1 мар 2010
    Сообщения:
    127
    Симпатии:
    24
    уже поздно, может я туплю.. но вы же теряете строку при любом вызове этой функции. и не в цикле она или не в цикле. а насчёт проверки - можно убрать эту строку и в цикле просто проверять на это условие и если что-то не так, то просто делать break;
     
  9. yeaahhh

    yeaahhh

    Регистр.:
    8 май 2008
    Сообщения:
    278
    Симпатии:
    11
    Digwnews, вы правы.. Если убрать первый $fav = mysql_fetch_array($ffav);, то всё выводится правильно..
    Вот только как теперь проверить наличие записей по where и вывести в случае отсутствия записей "Пользователей нет"..
    Разумно ли тут с точки зрения ресурсоёмкости использовать SELECT COUNT?
     
  10. Digwnews

    Digwnews Читатель

    Заблокирован
    Регистр.:
    1 мар 2010
    Сообщения:
    127
    Симпатии:
    24
    Ну так есть же функция подсчёта выданных строк:
    PHP:
    $col=mysqli_num_rows($ffav)
     
Статус темы:
Закрыта.