За последние 24 часа нас посетили 39076 программистов и 1278 роботов. Сейчас ищут 1033 программиста ...

Выборка записей

Тема в разделе "MySQL", создана пользователем phpjunior, 25 янв 2014.

  1. phpjunior

    phpjunior Новичок

    С нами с:
    23 дек 2013
    Сообщения:
    73
    Симпатии:
    0
    Адрес:
    Барнаул
    Код (Text):
    1. $sql ="SELECT * FROM `sm_log` WHERE user_id=$user_id";//Выборка всех строк в которых  значение поля user_id = $user_id
    2. $row = mysql_fetch_array(mysql_query($sql)); //формируем массив
    3. echo ($row['read']);
    4. echo ($row['count']);
    5. ecgo ($row['time']);
    этот запрос выводит лишь самую верхнюю запись из таблицы
    подскажите народ как вывести поля read count и time во всех строках???


    Код (Text):
    1.  
    2. $sql ="SELECT * FROM `sm_log` WHERE user_id=$id_user_real";//Запрос SQL
    3. while($row = mysql_fetch_array(mysql_query($sql))) //Зацикливаем и отправляем в массив $ROW
    4. {
    5. echo  ($row['read']);
    6. echo  ($row['count']);
    7. echo  ($row['time']);
    8. }
    502 bad gateway
    записей много может лимит поставить? как вывести записи ???
     
  2. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.128
    Симпатии:
    1.248
    Адрес:
    там-сям
    [code]…[/code]

    и пытайся понять что тебе отвечают.
     
  3. phpjunior

    phpjunior Новичок

    С нами с:
    23 дек 2013
    Сообщения:
    73
    Симпатии:
    0
    Адрес:
    Барнаул
  4. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.128
    Симпатии:
    1.248
    Адрес:
    там-сям
    оформляй вопросы так, чтобы другим было удобно тебе помогать.
     
  5. phpjunior

    phpjunior Новичок

    С нами с:
    23 дек 2013
    Сообщения:
    73
    Симпатии:
    0
    Адрес:
    Барнаул
    Код (Text):
    1. $sql ="SELECT * FROM `sm_log` WHERE user_id=$id_user_real";//Формируем SQL запрос
    2. while($row = mysql_fetch_array(mysql_query($sql)))//Зацикливаем mysql_fetch_array и отправляем в массив $row
    3. {
    4. echo ($row['read']);//Показываем результат цикла тоесть все строки указанных полей
    5. echo ($row['count']);
    6. echo ($row['time']);
    7. }
    Если не ипользовать цикл то выводит самую верхнюю запись
    если использовать цикл то долго грузит страницу а потом ошибка 502 я так понимаю это из за того что много записей и прогонять в цикле каждую сложно серверу
    Помогите народ как вывести все записи
     
  6. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.128
    Симпатии:
    1.248
    Адрес:
    там-сям
    тебе просто не надо в цикле вызывать query. это не тот случай где можно вкладывать вызовы функций! делай так
    Код (PHP):
    1. $result = mysql_query('блаблабла');
    2. while ($row = mysql_fetch_assoc($result)) {
    3.   ололо
    4. }
    и, кстати, mysql_query по умолчанию буфферизованный, то есть сервер полюбому отдает все строки запроса до того как ты начнешь их вычитывать через mysql_fetch*. поэтому даже если ты используешь только первую строку результата, ты нагружаешь сервер по полной.
     
  7. phpjunior

    phpjunior Новичок

    С нами с:
    23 дек 2013
    Сообщения:
    73
    Симпатии:
    0
    Адрес:
    Барнаул
    Всё равно одна запись и из середины таблицы берётся :D
    Код (Text):
    1. $result = mysql_query ("SELECT * FROM `sm_log` WHERE user_id='$id_user_real'");
    2. while($row = mysql_fetch_assoc($result))
    3. {
    4. $read = ($row['read']);
    5. $count = ($row['count']);
    6. $time = ($row['time']);
    7. }
     
  8. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.128
    Симпатии:
    1.248
    Адрес:
    там-сям
    у таблицы нет "середины", принципиально. множества неупорядочены. только фраза ORDER BY придает записям какой-то порядок.

    видимо твоё условие запроса такое, что ему соответствует только одна строка. с циклом сейчас всё в порядке
     
  9. phpjunior

    phpjunior Новичок

    С нами с:
    23 дек 2013
    Сообщения:
    73
    Симпатии:
    0
    Адрес:
    Барнаул
    нет user_id = 20 почти все записи в поле user id имеют значение 20

    Добавлено спустя 4 минуты 59 секунд:
    Возможно цикл проходит полностью, так как он показывает последнюю запись для user id 20
    Как зафиксировать каждое значение цикла?
     
  10. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.128
    Симпатии:
    1.248
    Адрес:
    там-сям
    твой цикл ничего не показывает, а присваивает одни и те же переменные!
    либо делай echo прямо в цикле, либо накапливай в массив строк и потом используй еще один цикл:
    Код (PHP):
    1. $rows = array();
    2. while($row=...) {
    3.   $rows[] = $row; // $rows будет собержать ВСЕ прочитанные записи
    4. }
    5.  
    6. ...
    7. // теперь выводим все накопленные записи
    8. foreach ($rows as $row) 
    9. {
    10.   echo $row['time']; // ... и т.д.
    11. }
     
  11. phpjunior

    phpjunior Новичок

    С нами с:
    23 дек 2013
    Сообщения:
    73
    Симпатии:
    0
    Адрес:
    Барнаул
    а больше никак? foreach также не даёт выйти переменной за цикл нужно сделать структуированый список
     
  12. Your

    Your Старожил

    С нами с:
    2 июл 2011
    Сообщения:
    4.074
    Симпатии:
    7
    Прости, что?
    В цикле заполни массив, как нужно тебе, а с помощью join разложи массив, ниже цикла, там где необходимо - это ты имеешь ввиду или что?
     
  13. phpjunior

    phpjunior Новичок

    С нами с:
    23 дек 2013
    Сообщения:
    73
    Симпатии:
    0
    Адрес:
    Барнаул
    Команда join служит для объединения таблиц насколько помню у меня всё в одной таблице тремя полями надо изъять эти три поля и все строки в них. Проблема: при изъятии данных Select ом запрос выбирает только одну строку. При изъятии select ом и циклом mysql fetch array формируется массивы $count, $time, $read. Данные массивы хранят полную информацию только в цикле. Покажу наглядно
    Код (Text):
    1.  
    2. $result = mysql_query ("SELECT * FROM `table` WHERE user_id='20'");//Запрос
    3. while($row=(mysql_fetch_array($result)))//Цикл запросов
    4. {
    5. echo ($row['read']);
    6.  echo ($row['count']);
    7.    echo ($row['time']);//В цикле эти массивы хранят полную информацию т.е все строки из поля time
    8. }
    9. //вне цикла массив уже не хранит все строки а только одну :(
    10. foreach($row as $key => $value)//если использовать foreach ниже
    11. {
    12. echo $value; // В переменную $value передаёться весь массив в цикле
    13. }
    14. //если использовать вне цикла $value он хранит последнее значение цикла тоесть ($row['time'])
    Народ кто меня хоть немного понял помогите пожалуйста а кто не понял я напишу чё мне надо XD
    надо из трёх полей таблицы абсолютно все строки загнать в три переменные
    Код (Text):
    1.  
    2. echo $count;//что бы переменная count хранила все строки из поля count
    3. echo $read;//что бы переменная read хранила все строки из поля read
    4. echo $time;//что бы переменная time хранила все строки из поля time
    Добавлено спустя 2 минуты 19 секунд:
    Я уже подумываю о том что бы массивы в цикле отправить в cookie а потом извлекать вне цикла
    :D
     
  14. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.128
    Симпатии:
    1.248
    Адрес:
    там-сям
    phpjunior, наверное Your имел в виду php-шную функцию join, синоним implode() — склеивание элементов массива в строку.

    Код (PHP):
    1. $count = $read = $time = array();
    2. while($row=...) {
    3.   $count[] = $row['count'];
    4.   $read[] = $row['read'];
    5.   $time[] = $row['time'];
    6. } 
    убедиться, что $time после цикла содержит все нужные значения можно так:
    Код (PHP):
    1. var_dump($time); 
    ознакомься пожалуйста с любой книжкой типа "PHP для чайников". форум не заменяет учебники, здесь тебе могут подсказать пару раз, потом пошлют.
    еще рекомендую http://phpfaq.ru/debug
     
  15. Your

    Your Старожил

    С нами с:
    2 июл 2011
    Сообщения:
    4.074
    Симпатии:
    7
    Ты реал, трудно доход?)
    И зачем ты постоянно берешь в скобки везде и всюду? (mysql_fetch_array($result)).
    Какие <матное слово> объединения таблиц, я тебе что сказал таблицы объеденять? ОМГ! Ты вообще читаешь, что пишут или у тебя в голове только 3 переменные?
    Код (PHP):
    1. $array=array();
    2. while($row = mysql_fetch_assoc($result)) {
    3.     $array['read'][]=$row['read'];
    4.     $array['count'][]=$row['count'];
    5.     $array['time'][]=$row['time'];
    6. }
    7. echo'Read: '.join(' ',$array['read']);
    8.  
    9. echo'Count: '.join(' ',$array['count']);
    10.  
    11. echo'Time: '.join(' ',$array['time']); 
    Либо сделать 3 массива:
    Код (PHP):
    1. $read=$count=$time=array();
    2. while($row = mysql_fetch_assoc($result)) {
    3.     $read[]=$row['read'];
    4.     $count[]=$row['count'];
    5.     $time[]=$row['time'];
    6. }
    7. echo'Read: '.join(' ',$read);
    8.  
    9. echo'Count: '.join(' ',$count);
    10.  
    11. echo'Time: '.join(' ',$time); 
     
  16. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Не истери, your
     
  17. Your

    Your Старожил

    С нами с:
    2 июл 2011
    Сообщения:
    4.074
    Симпатии:
    7
    Везде он истерику видет =)