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

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Вывод массива через цикл работает с ошибкой

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Без описания
arxnday
Отправлено: 04 Декабря, 2015 - 14:26:03
Post Id


Новичок


Покинул форум
Сообщений всего: 41
Дата рег-ции: Июнь 2013  


Помог: 0 раз(а)




PHP:
скопировать код в буфер обмена
  1.  $sql = "SELECT * FROM articles_comments WHERE article_id='$id' ORDER BY id DESC";
  2.         $row = mysqli_query($db, $sql);
  3.         while($postrow[] = mysqli_fetch_array($row))
  4.         for($i = 0; $i < $num; $i++) {
  5.             if ($postrow[$i]['id']!=0) {
  6.                 echo "<strong>".$postrow[$i]['name'] . "</strong> сделал запись " . $postrow[$i]['date'] . "<br>";
  7.                 echo $postrow[$i]['text'] . "<br><br>";
  8.  
  9.             }
  10.         }

Вместо вывода каждого найденного значения по одному разу, значения выводятся так:
0
1
2
3
1
2
3
2
3
3

Гуру, подскажите, где накосячил?
 
 Top
Faraon-san
Отправлено: 04 Декабря, 2015 - 15:15:49
Post Id



Посетитель


Покинул форум
Сообщений всего: 318
Дата рег-ции: Сент. 2013  


Помог: 8 раз(а)




PHP:
скопировать код в буфер обмена
  1. $sql = "SELECT * FROM articles_comments WHERE article_id='$id' ORDER BY id DESC";
  2. $row = mysqli_query($db, $sql);
  3. while($postrow = mysqli_fetch_array($row)){
  4.         if ($postrow['id']!=0) {
  5.                 echo "<strong>".$postrow['name'] . "</strong> сделал запись " . $postrow['date'] . "<br>";
  6.                 echo $postrow['text'] . "<br><br>";
  7.         }
  8. }

(Отредактировано автором: 04 Декабря, 2015 - 15:22:28)

 
 Top
Sail
Отправлено: 04 Декабря, 2015 - 15:19:26
Post Id



Участник


Покинул форум
Сообщений всего: 1131
Дата рег-ции: Февр. 2014  


Помог: 57 раз(а)




Faraon-san, а вдруг там, дальше есть ещё какая обработка помещенных в массив $postrow данных? Улыбка
arxnday, добавьте в третьей строке точку с запятой и где-нить между 2-й и 4-й инициализируйте переменную $num Закатив глазки
 
 Top
Faraon-san
Отправлено: 04 Декабря, 2015 - 15:23:51
Post Id



Посетитель


Покинул форум
Сообщений всего: 318
Дата рег-ции: Сент. 2013  


Помог: 8 раз(а)




Sail ну тогда надо еще посчитать количество записей для переменной num, что бы for правильно отработал
 
 Top
arxnday
Отправлено: 04 Декабря, 2015 - 15:38:03
Post Id


Новичок


Покинул форум
Сообщений всего: 41
Дата рег-ции: Июнь 2013  


Помог: 0 раз(а)




Sail пишет:
Faraon-san, а вдруг там, дальше есть ещё какая обработка помещенных в массив $postrow данных? Улыбка
arxnday, добавьте в третьей строке точку с запятой и где-нить между 2-й и 4-й инициализируйте переменную $num Закатив глазки

инициализация $num происходит выше Улыбка
(Добавление)
Faraon-san пишет:
PHP:
скопировать код в буфер обмена
  1. $sql = "SELECT * FROM articles_comments WHERE article_id='$id' ORDER BY id DESC";
  2. $row = mysqli_query($db, $sql);
  3. while($postrow = mysqli_fetch_array($row)){
  4.         if ($postrow['id']!=0) {
  5.                 echo "<strong>".$postrow['name'] . "</strong> сделал запись " . $postrow['date'] . "<br>";
  6.                 echo $postrow['text'] . "<br><br>";
  7.         }
  8. }

Спасибо! работает)
(Добавление)
Faraon-san пишет:
Sail ну тогда надо еще посчитать количество записей для переменной num, что бы for правильно отработал

Кстати, а как лучше это сделать?
mysqli_num_rows()?
 
 Top
arxnday
Отправлено: 04 Декабря, 2015 - 17:43:03
Post Id


Новичок


Покинул форум
Сообщений всего: 41
Дата рег-ции: Июнь 2013  


Помог: 0 раз(а)




Все, сделал, вроде работает)
Но теперь другой вопрос встал, а как переадресовать потом на страницу, с которой пришел?
например форма добавления комментария находится на articles.php?id=10
после добавления коммента идет переадресация на addcomment.php, а как вернуть пользователя обратно на страницу на которой писался коммент?
Пока что сделал вот так:
PHP:
скопировать код в буфер обмена
  1. print '
  2. <script>
  3.    document.location.replace("articles.php?id='.$article_id.'");
  4. </script>';

но что-то подсказывает что это не лучшее и не универсальное совсем решение

(Отредактировано автором: 04 Декабря, 2015 - 17:45:16)

 
 Top
Faraon-san
Отправлено: 07 Декабря, 2015 - 11:22:50
Post Id



Посетитель


Покинул форум
Сообщений всего: 318
Дата рег-ции: Сент. 2013  


Помог: 8 раз(а)




arxnday пишет:
Кстати, а как лучше это сделать?
mysqli_num_rows()?

Если тебе еще нужен массив с комментариями, то да, эта функция подойдет.
и там не много по другому нужно код написать.

arxnday пишет:
Но теперь другой вопрос встал, а как переадресовать потом на страницу, с которой пришел?

Используй функцию header();
http://php.net/manual/ru/function.header.php
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB