[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: как вывести количество комментариев?
korelli
на странице выводятся в цикле земетки с кратким описанием(заголовок, описание, автор, дата). хочу добавить счетчик комментариев. пробывал через СOUNT(*) но так считает количество комментариев в первой заметке и проставляет такое-же в остальных.

<?
//запрос в БД. Вытягиваю данные для краткого описания заметки
$result2 = mysql_query ("SELECT id, title, description, date, author, view FROM data WHERE cat='$cat' ORDER BY id DESC LIMIT $start, $num",$db);
$myrow2 = mysql_fetch_assoc ($result2);

// запрос для вытягивания комментов
$result0 = mysql_query ("SELECT COUNT(*) FROM coments WHERE post=$myrow2[id]",$db);
$sum = mysql_fetch_assoc ($result0);

do {
printf("<table align='center' class = 'post'><tr><td>
<p class ='post_name'><a href='view_post.php?id=%s'>%s</a></p>

</tr>
<tr>
<td>%s<br><p class='post_view'>Дата добавления: %s | Просмотров: %s | Комментарии: %s</p>
</td>
</tr></table><br><br>"
,$myrow2["id"], $myrow2["title"],$myrow2["description"], $myrow2["date"], $myrow2["view"], $sum[0]);

}
while ($myrow2 = mysql_fetch_array ($result2));

?>




Спустя 27 минут, 4 секунды (23.08.2011 - 20:38) alex12060 написал(а):
korelli

$result0 = mysql_query("SELECT COUNT(*) FROM `coments` WHERE `post`=".(int)$myrow2['id']);

Спустя 33 минуты, 26 секунд (23.08.2011 - 21:12) inpost написал(а):
mysql_fetch_assoc и $sum[0] - несовместимы. $sum[0] - это array, а не assoc.
Пиши COUNT(*) AS `cnt`
и выводи: $sum['cnt'];

Спустя 2 дня, 21 час, 5 минут, 7 секунд (26.08.2011 - 18:17) korelli написал(а):
Спасибо, но не работает( все та же фигня..

Спустя 1 час, 11 минут, 41 секунда (26.08.2011 - 19:29) korelli написал(а):
cчитает количество комментариев в первой заметке и проставляет такое-же в остальных.

Спустя 23 минуты, 2 секунды (26.08.2011 - 19:52) Игорь_Vasinsky написал(а):
боже мой.

Спустя 58 минут, 34 секунды (26.08.2011 - 20:50) inpost написал(а):
korelli
Зайди в подпись, исправль своё do-while, printf, кавычку одинарную обратную проставь для имён ЯЧЕЕК и ТАБЛИЦ. Посмотри пример, как тебе показал alex12060.
Вообщем, все сделай, возвращайся и показывай код.

Спустя 21 час, 29 минут, 50 секунд (27.08.2011 - 18:20) korelli написал(а):
<?php
$result2 = mysql_query ("SELECT `id`, `title`, `description`, `date`, `author`, `view` FROM `data` WHERE `cat`='$cat' ORDER BY `id` DESC LIMIT $start, $num",$db);
$myrow2 = mysql_fetch_array($result2);

$result0 = mysql_query("SELECT COUNT(*) AS `cnt` FROM `coments` WHERE `post`=".(int)$myrow2['id']);
$myrow0 = mysql_fetch_array($result0);

do {

printf("<table align='center' class = 'post'><tr><td>
<p class ='post_name'><a href='view_post.php?id=%s'>%s</a></p>

</tr>
<tr>
<td>%s<br><p class='post_view'>Добавлено: %s | Просмотров: %s | Комментарии: %s</p>
</td>
</tr></table><br><br>",$myrow2["id"], $myrow2["title"],$myrow2["description"], $myrow2["date"], $myrow2["view"], $myrow0["cnt"]);

}
while ($myrow2 = mysql_fetch_array ($result2));
?>

Спустя 51 минута, 50 секунд (27.08.2011 - 19:12) inpost написал(а):
korelli
А где исправления mysql_fetch_array, do-while, printf ? Ну если не хочешь учиться, то что делаешь тут?
И код оформляй [ php] тегами

Спустя 12 минут, 43 секунды (27.08.2011 - 19:25) korelli написал(а):
а что же в do-while, printf не так?

Спустя 5 минут, 51 секунда (27.08.2011 - 19:30) korelli написал(а):
попробывал вот такой запрос:
<?
result2 = mysql_query ("SELECT `data.id`, `data.title`, `data.description`, `data.date`, `data.author`, `data.view`, COUNT(`coments.post`) FROM `data`, `coments` WHERE `data.cat`='$cat' AND `coments.post` = `data.id` ",$db) ;
?>
и выдает : Unknown column 'data.id' in 'field list'. хотя понятно xто поле id в data существует.

Спустя 4 минуты, 58 секунд (27.08.2011 - 19:35) korelli написал(а):
извени не то скопировал. исправил код. вроде все так но что-то не так.

Спустя 37 минут, 59 секунд (27.08.2011 - 20:13) inpost написал(а):
korelli
А ты по ссылкам ходил? Статьи читал, которые должны были тебя переучить из быдло-кодера, в адекватного кодера? smile.gif

Спустя 17 минут, 53 секунды (27.08.2011 - 20:31) korelli написал(а):
ходил. читал. понял что - лох. но еще не переделывал. там в основном описывается не корректность(грамотность) в синтаксисе. но сам код то у меня работает нормально. только вот этот счетчик - нет.

Спустя 3 часа, 3 минуты, 47 секунд (27.08.2011 - 23:35) inpost написал(а):
korelli
printf работает в 3 раза медленнее.
array - в 2 раза избыточнее для памяти.
do-while - просто не в нужном месте не в то время.

Вообщем, там всё нормально расписано, может кто-то другой захочет, но я помогу только тогда, когда остальное будет нормально.

Спустя 3 дня, 15 часов, 20 минут, 46 секунд (31.08.2011 - 14:56) korelli написал(а):

<?php
$result2 = mysql_query ("SELECT `id`, `title`, `description`, `date`, `author`, `view` FROM `data` WHERE `cat`='$cat' ORDER BY `id` DESC LIMIT $start, $num",$db);

$myrow2 = mysql_fetch_assoc $result2);

$result0 = mysql_query("SELECT COUNT(*) AS `cnt` FROM `coments` WHERE `post`=".(int)$myrow2['id']);
$myrow0 = mysql_fetch_assoc($result0);

while ($myrow2 = mysql_fetch_assoc ($result2)){

echo "<table align='center' class = 'post'>
<tr><td><p class ='post_name'><a href='view_post.php?id="
.$myrow2['id']."'>".$myrow2['title']."</a></p>
</td>
</tr>

<tr>
<td>"
.$myrow2['description']."<br><p class='post_view'>Дата добавления: ".$myrow2['date']."| Просмотров: ".$myrow2['view']." | Комментарии: ".$myrow0['cnt']."</p>
</td></tr>
</table>"
;
};
?>

Спустя 11 минут, 51 секунда (31.08.2011 - 15:08) korelli написал(а):
вот переделаный код. всё по прежнему. если выводит одно и тоже число коментов значит проблема в $myrow0['cnt']? но там вроде всё нормально. хз.....

Спустя 16 минут, 10 секунд (31.08.2011 - 15:24) linker написал(а):
Ну раз так приятнее, то
while ($myrow2 = mysql_fetch_assoc ($result2))
{
$result0 = mysql_query("SELECT COUNT(*) AS `cnt` FROM `coments` WHERE `post`=".(int)$myrow2['id']);
$myrow0 = mysql_fetch_assoc($result0);

...
хотя тут и одним запросом обойтись можно, не заставляя мускул напрягаться.

Спустя 22 минуты, 24 секунды (31.08.2011 - 15:46) korelli написал(а):
спасибо большое. работает. а как же одним? в while надо же условие ставить. а если запрос после цикла то разве так будет работать? до цикла ставил воттакой запрос:
result2 = mysql_query ("SELECT `data`.`id`, `data`.`title`, `data`.`description`, `data`.`date`, `data`.`author`, `data`.`view`, COUNT(`coments`.`post`) FROM `data`, `coments` WHERE `data`.`cat`='$cat' AND `coments`.`post` = `data`.`id` ",$db) ;

не работало

Спустя 4 минуты, 47 секунд (31.08.2011 - 15:51) linker написал(а):
Потому что не хватало в конце
GROUP BY `data`.`id`

Спустя 13 минут, 53 секунды (31.08.2011 - 16:05) korelli написал(а):
да. работает. еще раз спасибо.
Быстрый ответ:

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