Перейти к содержимому

Сервис обмена электронных валют

Партнерская программа Kredov

Ошибка при выводе цикла

#1 cap4369

cap4369
  • Пользователь
  • 62 сообщений
  • Репутация: 1
0

Отправлено 30 Ноябрь 2013 - 21:50

Здравствуйте! Помогите разобраться, что за ошибка при выводе цикла.
Warning: mysql_fetch_assoc() expects parameter 1 to be resource, integer given in Z:\home\lapkovsky\www\classes\blysc.php on line 69.
Сам скрипт вывода цикла такой:
$query = mysql_query("SELECT *
	 FROM `comments_fest`
	 WHERE `visible` = '1'
	 ORDER BY `date`") or die(mysql_error());
$res = mysql_num_rows($query);
echo '<div class="comments">
<h2>Комментарии (' .$res. ')</h2>';

if($res > 0) {
while($row = mysql_fetch_assoc($res)) {
  echo '<div class="comment_table">';
  printf("<p>%s %s<p></p><p>%s</p>",$row['date'],$row['name'],$row['comment']);
  echo '</div><!-- .comment_table -->';
}
}
else {
echo '<p>Комментариев пока нет.</p>';
}

 

 

  • 0

#2 isvetlichniy

isvetlichniy
  • Пользователь
  • 619 сообщений
  • Репутация: 93

Отправлено 30 Ноябрь 2013 - 23:07

$query = mysql_query("SELECT *
		 FROM `comments_fest`
		 WHERE `visible` = '1'
		 ORDER BY `date`") or die(mysql_error());
$res = mysql_query($query);
echo '<div class="comments">
<h2>Комментарии (' .mysql_num_rows($res). ')</h2>';
if($res > 0) {
while($row = mysql_fetch_array($res)) {
  echo '<div class="comment_table">';
  printf("<p>%s %s<p></p><p>%s</p>",$row['date'],$row['name'],$row['comment']);
  echo '</div><!-- .comment_table -->';
}
}
else {
echo '<p>Комментариев пока нет.</p>';
}

вэлкам
  • 0

#3 cap4369

cap4369
    Topic Starter
  • Пользователь
  • 62 сообщений
  • Репутация: 1

Отправлено 01 Декабрь 2013 - 00:55

Так тоже не получается, выдает ошибку.
  • 0

#4 cap4369

cap4369
    Topic Starter
  • Пользователь
  • 62 сообщений
  • Репутация: 1

Отправлено 01 Декабрь 2013 - 11:29

Спасибо, разобрался!
Я сделал так:
$query = mysql_query( "SELECT * FROM `comments_fest` WHERE `visible` = '1' ORDER BY `date`") or die(mysql_error());
$res = mysql_num_rows($query);
echo '<h2>Комментарии('.$res.')</h2>';
echo '<div class="comment">';
if($res){
while($row = mysql_fetch_assoc($query)) {
  echo '<div class="comment_table">';
  printf("<div class='comment_data'><span>%s</span> %s</div><div class='comment_text'>%s</div>",$row['date'],$row['name'],$row['comment']);
  echo '</div>';
}
}
else {
echo '<p>Комментариев пока нет. Вы можете быть первым.</p>';
}
echo '</div><!-- .comment -->';
Моя ошибка была в том, что я переменной $res присвоил значение количества полей функцией mysql_num_rows, а потом пытался вывести ее же в цикле. А введя переменную $row, которая является ассоциативным массивом sql запроса, вывел ее в цикле. Обидно, что я знал это, да вот только сам зациклился :), надо было отдохнуть и поглядеть свежим взглядом. Еще раз спасибо.
  • 0

#5 yury

yury
  • Пользователь
  • 629 сообщений
  • Репутация: 176

Отправлено 01 Декабрь 2013 - 11:36

cap4369,
ошибка, т.е. Warning (предупреждение) на чистом англ языке вам сообщает, что функция mysql_fetch_assoc() хочет параметр в виде ресурса, а вместо этого вы ей даете целое число.
Ресурс — это результат выполнения запроса к БД, т.е. то, что выдает mysql_query(). У вас он лежит в переменной $query. А в переменную $res вы помещаете, то что выдает функция mysql_num_rows($query), т.е. кол-во строк в результате запроса, что действительно целое число.

Поэтому замените в строке, где вы обращаетесь к mysql_fetch_assoc():
while($row = mysql_fetch_assoc($res)) {
$res на $query и данная ошибка будет исправлена.

Пока писал ответ, вы и сами разобрались.
  • 0


Оформление форума – IPBSkins.ru