За последние 24 часа нас посетили 16285 программистов и 1670 роботов. Сейчас ищут 849 программистов ...

Посоветуйте насчёт цыкла в базе

Тема в разделе "PHP для новичков", создана пользователем vzun, 18 мар 2014.

  1. vzun

    vzun Новичок

    С нами с:
    10 мар 2014
    Сообщения:
    9
    Симпатии:
    0
    Всем доброго вечера.
    Посоветуйте что делать в такой ситуации:
    после всех манипуляций с формой её данные заносятся в базу,
    а из базы все данные выводятся на странице, страница типа вопрос-ответ.

    Проблема в том что в БД самый адекватный ключ для вывода сообщений по порядку это Id, но если я удалю какую-нибудь строчку из БД то рушится весь порядок (было 12345 и т.д. стало 1245)
    и непонятно как с помощью цикла вывести подряд все сообщения из БД при условии что какие-то сообщения могут удаляться
    Код (Text):
    1.  
    2. for($namberstr=1; isset($namberstr); $namberstr++)
    3. {
    4. //берём картинку
    5. $sl=mysql_query("SELECT logo FROM tab WHERE id_q=$namberstr");
    6. $strlogo=mysql_fetch_assoc($sl);
    7. $lg=$strlogo['logo'];
    8.  
    9. //берём имя
    10. $sn=mysql_query("SELECT name FROM tab WHERE id_q=$namberstr");
    11. $strname=mysql_fetch_assoc($sn);
    12. $nm=$strname['name'];
    13.  
    14. //берём дату
    15. $sd=mysql_query("SELECT dt FROM tab WHERE id_q=$namberstr");
    16. $strdate=mysql_fetch_assoc($sd);
    17. $dt=$strdate['dt'];
    18.  
    19. //берём вопрос
    20. $sq=mysql_query("SELECT qs FROM tab WHERE id_q=$namberstr");
    21. $strqs=mysql_fetch_assoc($sq);
    22. $q=$strqs['qs'];
    23.  
    24. //выводим аватарку
    25. echo "<img class=kl src=images/icon/$lg>";
    26. //выводим вопрос
    27. echo "<div class=kl1><span>$nm</span><h4>$dt</h4><p>$q</p></div>";
    28. }
     
  2. VLK

    VLK Старожил

    С нами с:
    15 дек 2013
    Сообщения:
    3.010
    Симпатии:
    58
    На сколько мне известно в БД есть такой тип запрос, это получить из базы определённое количество записей например начиная с 50 до 100, т.е. первые 50 будут пропущены, а затем будет получено следующие 50 записей, причем без учета ID, вот сам жду вопрос на этот запрос - viewtopic.php?f=20&t=47813
     
  3. romach

    romach Старожил

    С нами с:
    26 окт 2013
    Сообщения:
    2.904
    Симпатии:
    719
  4. VLK

    VLK Старожил

    С нами с:
    15 дек 2013
    Сообщения:
    3.010
    Симпатии:
    58
    Да, подобрал запрос, вот:

    Код (Text):
    1. SELECT * FROM `table` WHERE `value` LIKE '%%' LIMIT 6,1
    table - имя таблицы
    value - один из столбцов, он не может быть NULL, а за счет LIKE '%%' он будет выбирать / находить все записи
    6 - это позиция с которой искать (речь не идет об ID 6, а о 6-й позиции в самой таблице)
    1 - сколько получать записей из БД, т.е. если 1 значит 1 запись, если 10 значит 10.

    PS Да и еще, где то я читал что очень плохо, не правильно засовывать запросы в БД в цикл.
     
  5. romach

    romach Старожил

    С нами с:
    26 окт 2013
    Сообщения:
    2.904
    Симпатии:
    719
    Но проблема у вас не в этом даже ) Все делается не так, правда я уже совсем забыл синтаксис mysql_* ну да ладно.

    Код (PHP):
    1. $rows = mysql_query("SELECT logo FROM tab");
    2. where($row = mysql_fetch_assoc($rows )) {
    3.   /* тут уже делаем с массивом что нам нужно, к примеру */
    4.   echo $row['logo'];
    5. }
    Добавлено спустя 1 минуту 13 секунд:
    Выбирать все записи он будет без WHERE. LIKE тут совершенно не нужен.
     
  6. VLK

    VLK Старожил

    С нами с:
    15 дек 2013
    Сообщения:
    3.010
    Симпатии:
    58
    romach спасибо за подсказку, вечер, голова уже гудит.
     
  7. vzun

    vzun Новичок

    С нами с:
    10 мар 2014
    Сообщения:
    9
    Симпатии:
    0
    romach то что нужно.
    а я всё где-то рядом ходил-бродил)
    Благодарю.

    УРА ЗАРАБОТАЛО!!!
    Код (Text):
    1. $rows = mysql_query("SELECT id_q FROM tab");
    2. while($row = mysql_fetch_assoc($rows ))
    3. {$tt=$row['id_q'];
    4.  
    5. //берём картинку
    6. $sl=mysql_query("SELECT logo FROM tab WHERE id_q=$tt");
    7. $strlogo=mysql_fetch_assoc($sl);
    8. $lg=$strlogo['logo'];
    9. //берём имя
    10. $sn=mysql_query("SELECT name FROM tab WHERE id_q=$tt");
    11. $strname=mysql_fetch_assoc($sn);
    12. $nm=$strname['name'];
    13. //берём дату
    14. $sd=mysql_query("SELECT dt FROM tab WHERE id_q=$tt");
    15. $strdate=mysql_fetch_assoc($sd);
    16. $dt=$strdate['dt'];
    17. //берём вопрос
    18. $sq=mysql_query("SELECT qs FROM tab WHERE id_q=$tt");
    19. $strqs=mysql_fetch_assoc($sq);
    20. $q=$strqs['qs'];
    21.  
    22. //вывод аватарки
    23. echo "<img class=kl src=images/icon/$lg>";
    24. //вывод вопроса
    25. echo "<div class=kl1><span>$nm</span><h4>$dt</h4><p>$q</p></div>";
    26. }