[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Как вывести последний комментарий
Dali
Привет, всем!
Кто может подсказать?
Мне нужно сделать два вида вывода из цикла комментариев.
1. Вывести только первый комментарий цикла.

$result = mysql_query("SELECT * FROM comments WHERE post='$id' LIMIT 0, 1 ", $db);

if(mysql_num_rows($result) > 0)
{
$myrow = mysql_fetch_array($result);
do
{
printf(". . .", $myrow["id"], $myrow["text"]);
}
while($myrow = mysql_fetch_array($result))
{
;
}
}

;

}


2.Вывести последний комментарий цикла.



$result = mysql_query("SELECT * FROM comments WHERE post='$id'ORDER BY id DESC LIMIT 1 ", $db);

if(mysql_num_rows($result) > 0)
{
$myrow = mysql_fetch_array($result);
do
{
printf(". . .", $myrow["id"], $myrow["text"]);
}
while($myrow = mysql_fetch_array($result))
{
;
}
}

;

}


Первый скрипт, работает отлично, но второй выводит вместо последнего комментария на 10 единиц ниже нужного номера id
Не могу понять, в чём дело?





Спустя 2 минуты, 51 секунда (13.11.2011 - 19:48) Игорь_Vasinsky написал(а):
SELECT * FROM `comments` WHERE `post` = ".(int)$id." ORDER BY` id` DESC LIMIT 1 

попробуй.

Спустя 9 минут, 13 секунд (13.11.2011 - 19:58) Dali написал(а):
Попробовал.
Пишет:

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in

В переводе:

Предупреждение: mysql_num_rows(): поставленный аргумент не является правильным ресурсом результата MySQL в

Спустя 6 минут, 23 секунды (13.11.2011 - 20:04) Игорь_Vasinsky написал(а):
как строка запроса с функцией mysql выглядит?

Спустя 7 минут, 27 секунд (13.11.2011 - 20:11) Dali написал(а):
Не понял вопроса. Какая строка запроса, проверка что ли...?

if(!preg_match("|^[\d]+$|", $id))
{
exit("<p>Неверный формат запроса! Проверьте URL!");
}
$result = mysql_query("SELECT * FROM data WHERE id='$id'", $db);

if(!$result)
{
echo "<p>Запрос на выборку данных из базы не прошел. Напишите об этом администратору admin@ruseller.com. <br> <strong>Код ошибки:</strong></p>";
exit(mysql_error());
}

if(mysql_num_rows($result) > 0)

Спустя 2 минуты, 24 секунды (13.11.2011 - 20:14) Dali написал(а):
Виноват. Не то всунул.
Вот эта строка?

$result3 = mysql_query ("SELECT * FROM comments WHERE post='$id' ORDER BY id DESC LIMIT 1 ",$db);
if (mysql_num_rows($result3) > 0)
{
$myrow3 = mysql_fetch_array($result3);

Спустя 1 минута (13.11.2011 - 20:15) Xes написал(а):
Dali ты админ сайта ruseller.com ))) ?
$result3 = mysql_query ("SELECT * FROM comments WHERE post='".$id."' ORDER BY id DESC LIMIT 1 ",$db);

Спустя 7 минут, 44 секунды (13.11.2011 - 20:22) Игорь_Vasinsky написал(а):
Цитата
'".$id."'


без одинарных ковычек, а чтоб безопасно:

".(int)$id."

Спустя 46 секунд (13.11.2011 - 20:23) dadli написал(а):
Dali

что виведет: echo $id;

и что виведет: mysql_error();

Спустя 14 секунд (13.11.2011 - 20:23) Игорь_Vasinsky написал(а):
$result = mysql_query("SELECT * FROM data WHERE id=".(int)$id, $db);

Спустя 8 минут, 36 секунд (13.11.2011 - 20:32) Dali написал(а):
Блин. Извини, что не понял.
Но у меня похоже проблемы с сортировкой id или с denwer.
Что с моим вариантом, что с твоим последним - выводит одинаково.
Просто эти скрипты я использую для сворачивания комментариев на странице и
обратил сейчас внимание, что вывод всех комментариев кое где ломается в своей очерёдности. Например 20 стоит после 31 а не перед.

Что можно здесь сделать?

Спустя 3 минуты, 34 секунды (13.11.2011 - 20:36) alexbel2404 написал(а):
сортировать в запросе

Спустя 27 минут, 33 секунды (13.11.2011 - 21:03) Dali написал(а):
Спасибо всем за участие, но я сам
разобрался в чём дело.

Дело в том, что таблица к которой я обращаюсь выглядит так:

id | post |
1 | 3 |
2 | 1 |
3 | 1 |
4 | 2 |
5 | 2 |
6 | 2 |
и т.д. Поэтому 1й пост у меня показывает последний комментарий под
номером -3

2й пост - 6 и т.д.
Просто я id визуализировал на странице каждого поста как номер выводимого комментария - №$id и запутал себя.

Но как теперь вывести нумерацию постов так, что бы каждый пост начинал свою нумерацию на странице с 1 и до ... если id таблицы для этой цели не подходит?


Спустя 4 минуты, 28 секунд (13.11.2011 - 21:08) Xes написал(а):
$i добавь в цикл когда перебираешь записи. Вначале присвой 1 внутри цикла увеличивай на 1 и выводи.

Спустя 4 минуты, 29 секунд (13.11.2011 - 21:12) Dali написал(а):
Спасибо, кажется понял. Сейчас попробую.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.