Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Выводится всего 1 строка с базы данных
Форумы портала PHP.SU » » Вопросы новичков » Выводится всего 1 строка с базы данных

Страниц (1): [1]
 

1. imayday - 13 Февраля, 2019 - 14:56:44 - перейти к сообщению
Доброго времени суток, господа.
Я новичок в работе с php, поэтому извините за мой глупый вопрос.
Пользуюсь CMS DLE. PHP версии 5.4. Пытаюсь вывести информацию с бд на главную страницу.
Вписываю в main.php код:

CODE (htmlphp):
скопировать код в буфер обмена
  1. $vquery = $db->query( "SELECT * FROM " . PREFIX . "_video_file  ORDER BY user_id ASC LIMIT 0,10" );
  2. while ( $row = $db->get_row($vquery) ) {
  3. $ytquery = $row['info']; //Вытаскиваем с базы данных ссылку на видео
  4. $ytrdatequery = $row['reg_date']; //Вытаскиваем с базы данных дату добавления видео
  5. $ytnamequery = $row['name']; //Вытаскиваем с базы данных название видео
  6. $ytcatquery = $row['user_category']; //Вытаскиваем с базы айди категории
  7. $ytidvideo = $row['user_id']; //Вытаскиваем айди поста с видео
  8.  
  9. preg_match("/^(?:http(?:s)?:\/\/)?(?:www\.)?(?:m\.)?(?:youtu\.be\/|youtube\.com\/(?:(?:watch)?\?(?:.*&)?v(?:i)?=|(?:embed|v|vi|user)\/))([^\?&\"'>]+)/", $row['info'], $out);
  10. $video_id =  $out[1];
  11. }
  12.  
  13.  
  14. $vquery2 = $db->query( "SELECT name FROM " . PREFIX . "_video_category WHERE id=" .$ytcatquery. "" ); //приравниваем базу по айди категории
  15. while ( $row = $db->get_row($vquery2) ){
  16. $ytcatnamequery = $row['name']; //вытаскиваем название категории
  17. }
  18. $vquery2->free ();
  19.  
  20. $db->free ();


Информацию выводит, но почему-то только одну последнюю добавленную запись. А нужно чтобы 5-10 записей из бд.
Заранее благодарен за вашу помощь и уделённое время моей проблему)
2. LIME - 13 Февраля, 2019 - 15:20:51 - перейти к сообщению
потому что ты сначала пробегаешь по результату первого запроса и во второй вставляешь толь последний результат
PHP:
скопировать код в буфер обмена
  1. $ytcatquery = [];
  2. $vquery = $db->query( "SELECT * FROM " . PREFIX . "_video_file" );
  3. while ( $row = $db->get_row($vquery) ) {
  4.     $ytquery = $row['info']; //Вытаскиваем с базы данных ссылку на видео
  5.     $ytrdatequery = $row['reg_date']; //Вытаскиваем с базы данных дату добавления видео
  6.     $ytnamequery = $row['name']; //Вытаскиваем с базы данных название видео
  7.     $ytcatquery[] = '' . $row['user_category']; //Вытаскиваем с базы айди категории
  8.     $ytidvideo = $row['user_id']; //Вытаскиваем айди поста с видео
  9.     preg_match("/^(?:http(?:s)?:\/\/)?(?:www\.)?(?:m\.)?(?:youtu\.be\/|youtube\.com\/(?:(?:watch)?\?(?:.*&)?v(?:i)?=|(?:embed|v|vi|user)\/))([^\?&\"'>]+)/", $row['info'], $out);
  10.     $video_id =  $out[1];
  11. }
  12.  
  13.  
  14.  
  15.  
  16. $vquery2 = $db->query( "SELECT name FROM " . PREFIX . "_video_category WHERE id IN (" .implode(',', $ytcatquery). ")" ); //приравниваем базу по айди категории
  17. while ( $row = $db->get_row($vquery2) ){
  18.     $ytcatnamequery = $row['name']; //вытаскиваем название категории
  19. }
  20. $vquery2->free ();
  21.  
  22. $db->free ();
3. imayday - 13 Февраля, 2019 - 15:38:12 - перейти к сообщению
LIME пишет:
потому что ты сначала пробегаешь по результату первого запроса и во второй вставляешь толь последний результат
PHP:
скопировать код в буфер обмена
  1. $ytcatquery = [];
  2. $vquery = $db->query( "SELECT * FROM " . PREFIX . "_video_file" );
  3. while ( $row = $db->get_row($vquery) ) {
  4.     $ytquery = $row['info']; //Вытаскиваем с базы данных ссылку на видео
  5.     $ytrdatequery = $row['reg_date']; //Вытаскиваем с базы данных дату добавления видео
  6.     $ytnamequery = $row['name']; //Вытаскиваем с базы данных название видео
  7.     $ytcatquery[] = '' . $row['user_category']; //Вытаскиваем с базы айди категории
  8.     $ytidvideo = $row['user_id']; //Вытаскиваем айди поста с видео
  9.     preg_match("/^(?:http(?:s)?:\/\/)?(?:www\.)?(?:m\.)?(?:youtu\.be\/|youtube\.com\/(?:(?:watch)?\?(?:.*&)?v(?:i)?=|(?:embed|v|vi|user)\/))([^\?&\"'>]+)/", $row['info'], $out);
  10.     $video_id =  $out[1];
  11. }
  12.  
  13.  
  14.  
  15.  
  16. $vquery2 = $db->query( "SELECT name FROM " . PREFIX . "_video_category WHERE id IN (" .implode(',', $ytcatquery). ")" ); //приравниваем базу по айди категории
  17. while ( $row = $db->get_row($vquery2) ){
  18.     $ytcatnamequery = $row['name']; //вытаскиваем название категории
  19. }
  20. $vquery2->free ();
  21.  
  22. $db->free ();


что-то не помогло. Тем более вообще перестало название категории выводить.
4. LIME - 13 Февраля, 2019 - 15:42:01 - перейти к сообщению
это не рабочий код
набросок
сам допили
навскидку не хватает кавычек
PHP:
скопировать код в буфер обмена
  1. $ytcatquery[] = '"' . $row['user_category'] . '"';

а так же в результат второго запроса сохранится только последний
пожалуй я умою руки
5. imayday - 13 Февраля, 2019 - 16:28:13 - перейти к сообщению
К сожалению, сказанное выше мне не помогло. Как я сказал ранее, я новичок. Не совсем понимаю что нужно сделать. Вернулся к первоначальному коду. Так хотя бы категория выводится. Вопрос актуален
6. imayday - 13 Февраля, 2019 - 18:51:22 - перейти к сообщению
Переделал код
CODE (htmlphp):
скопировать код в буфер обмена
  1. $vquery = $db->query( "SELECT * FROM " . PREFIX . "_video_file ORDER BY user_id ASC LIMIT 0, 10" );
  2. while ( $row = $db->get_row($vquery) ) {
  3.  
  4. $vquery2 = $db->query( "SELECT name FROM " . PREFIX . "_video_category WHERE id='".$row['user_category']."'" );
  5. while ( $vdrow = $db->get_row($vquery2) ) {
  6. $ytcatnamequery = $vdrow['name'];
  7. }
  8. $vquery2->free ();
  9.  
  10. $ytquery = $row['info']; //Вытаскиваем с базы данных ссылку на видео
  11. $ytrdatequery = $row['reg_date']; //Вытаскиваем с базы данных дату добавления видео
  12. $ytnamequery = $row['name']; //Вытаскиваем с базы данных название видео
  13. $ytcatquery = $row['user_category']; //Вытаскиваем с базы айди категории
  14. $ytidvideo = $row['user_id']; //Вытаскиваем айди поста с видео
  15.  
  16. preg_match("/^(?:http(?:s)?:\/\/)?(?:www\.)?(?:m\.)?(?:youtu\.be\/|youtube\.com\/(?:(?:watch)?\?(?:.*&)?v(?:i)?=|(?:embed|v|vi|user)\/))([^\?&\"'>]+)/", $row['info'], $out);
  17. $video_id =  $out[1];
  18. }
  19. $vquery->free ();
  20.  
  21. $db->free ();


Теперь не вставляю результат во второй запрос, но проблема не решена. Всё равно выводит последнюю строку
7. Vladimir Kheifets - 14 Февраля, 2019 - 13:02:31 - перейти к сообщению
imayday пишет:
Переделал код
CODE (htmlphp):
скопировать код в буфер обмена
  1. $vquery = $db->query( "SELECT * FROM " . PREFIX . "_video_file ORDER BY user_id ASC LIMIT 0, 10" );
  2. while ( $row = $db->get_row($vquery) ) {
  3.  
  4. $vquery2 = $db->query( "SELECT name FROM " . PREFIX . "_video_category WHERE id='".$row['user_category']."'" );
  5. while ( $vdrow = $db->get_row($vquery2) ) {
  6. $ytcatnamequery = $vdrow['name'];
  7. }
  8. $vquery2->free ();
  9.  
  10. $ytquery = $row['info']; //Вытаскиваем с базы данных ссылку на видео
  11. $ytrdatequery = $row['reg_date']; //Вытаскиваем с базы данных дату добавления видео
  12. $ytnamequery = $row['name']; //Вытаскиваем с базы данных название видео
  13. $ytcatquery = $row['user_category']; //Вытаскиваем с базы айди категории
  14. $ytidvideo = $row['user_id']; //Вытаскиваем айди поста с видео
  15.  
  16. preg_match("/^(?:http(?:s)?:\/\/)?(?:www\.)?(?:m\.)?(?:youtu\.be\/|youtube\.com\/(?:(?:watch)?\?(?:.*&)?v(?:i)?=|(?:embed|v|vi|user)\/))([^\?&\"'>]+)/", $row['info'], $out);
  17. $video_id =  $out[1];
  18. }
  19. $vquery->free ();
  20.  
  21. $db->free ();


Теперь не вставляю результат во второй запрос, но проблема не решена. Всё равно выводит последнюю строку


Добрый день!
Не понятно, где выводите последюю строку.
Если в 22 строке коде, то так и должно быть. Если хотите вывести все строки, то нужно записать значения в массивы. Например, так:
PHP:
скопировать код в буфер обмена
  1. $ytquery[] = $row['info']; //Вытаскиваем с базы данных ссылку на видео
  2. $ytrdatequery[]= $row['reg_date']; //Вытаскиваем с базы данных дату добавления видео
  3. $ytnamequery[] = $row['name']; //Вытаскиваем с базы данных название видео
  4. $ytcatquery[] = $row['user_category']; //Вытаскиваем с базы айди категории
  5. $ytidvideo[] = $row['user_id']; //Вытаскиваем айди поста с видео
удачи!

 

Powered by ExBB FM 1.0 RC1