$r = mysql_query("SELECT `you_mail`.`title`, `you_mail`.`text`,спасибо.
`you_mail`.`date`, `you_mail`.`time`,
`you_mail`.`view`, `you_mail`.`author`,
`comment`.`name` FROM `you_mail`
LEFT JOIN `comment` ON `comment`.`id_mail` = `you_mail`.`id`
WHERE `you_mail`.`id` ='".(int)$view."'
ORDER BY `you_mail`.`date` DESC") or die("Ошибка -".mysql_error());
while($d = mysql_fetch_assoc($r))
{
echo '
<table border="0" cellpadding="0" cellspacing="0"><tr><td><div class="underline">
<div class="underline_text">'.$d['title'].'</div>
</div></b></td></tr>
<tr><td>'.$d['text'].'</td></tr>
<tr><td><p class="post_adds"><img src="img/date.png"
align="top"> '.$d['date'].' | <img src="img/time.png"
align="top"> '.$d['time'].' | <img src="img/view.png"
align="top"> '.$d['view'].' | <img src="img/author.png" align="top">
Автор: '.htmlspecialchars($d['author']).'</p>'.$d['name'].'
</td></tr></table>
';
}
echo("<hr />");
?>
Спустя 7 минут, 26 секунд (9.01.2011 - 16:57) Invis1ble написал(а):
SELECT COUNT(*)...
Спустя 15 секунд (9.01.2011 - 16:58) m4a1fox написал(а):
Запрос дублирует записи, если к одно заметке относится более одного коммента, то он выводит опять эту заметку, т. е. дублирует, соответственно если 3 - то 3 раза дублирует!
Спустя 1 минута, 52 секунды (9.01.2011 - 17:00) m4a1fox написал(а):
Вместо while - if поставить можно?! Не будет ли это ошибкой?!
Спустя 1 минута, 47 секунд (9.01.2011 - 17:01) m4a1fox написал(а):
нет. if не катит! Надо что то думать!?
Спустя 3 минуты, 57 секунд (9.01.2011 - 17:05) m4a1fox написал(а):
Invis1ble
И куда поставить SELECT COUNT(*)?
И куда поставить SELECT COUNT(*)?
Спустя 3 минуты, 48 секунд (9.01.2011 - 17:09) m4a1fox написал(а):
Invis1ble
Можно конечно и так сделать
Можно конечно и так сделать
'.count($d['id']).'ну тогда как заставить скрипт выводить заметку только один раз?
Спустя 2 минуты, 13 секунд (9.01.2011 - 17:11) Invis1ble написал(а):
m4a1fox
я не совсем тебя понимаю.... Если тебе нужно получить кол-во записей, удовлетворяющих условиям (ON `comment`.`id_mail` = `you_mail`.`id` и WHERE `you_mail`.`id` ='".(int)$view."'), то в данном случае нужно mysql_num_rows($r)
я не совсем тебя понимаю.... Если тебе нужно получить кол-во записей, удовлетворяющих условиям (ON `comment`.`id_mail` = `you_mail`.`id` и WHERE `you_mail`.`id` ='".(int)$view."'), то в данном случае нужно mysql_num_rows($r)
Спустя 2 минуты, 8 секунд (9.01.2011 - 17:13) m4a1fox написал(а):
Invis1ble
Сейчас попробую. Но функция посчитает кол-во строк в таблице you_mail, а мне надо в табл. comment where you_mail.id = comment.id_mail, или я ошибся?
Сейчас попробую. Но функция посчитает кол-во строк в таблице you_mail, а мне надо в табл. comment where you_mail.id = comment.id_mail, или я ошибся?
Спустя 2 минуты, 20 секунд (9.01.2011 - 17:16) m4a1fox написал(а):
Invis1ble
Спасибо. Вроде пока работает! Тем не менее не понимаю почему он считает строки из таб. comment а не из you_mail? не ужели дело вот в этой строчке?
Спасибо. Вроде пока работает! Тем не менее не понимаю почему он считает строки из таб. comment а не из you_mail? не ужели дело вот в этой строчке?
`comment`.`id_mail` = `you_mail`.`id`????
Спустя 5 минут, 13 секунд (9.01.2011 - 17:21) Invis1ble написал(а):
m4a1fox
потому что передается аргумент $r (идентификатор ресурса) в функцию, который указывает на предыдущий запрос
потому что передается аргумент $r (идентификатор ресурса) в функцию, который указывает на предыдущий запрос
Спустя 1 минута, 8 секунд (9.01.2011 - 17:22) Invis1ble написал(а):
т.е. функция возвращает кол-во строк, извлеченных тем запросом
Спустя 37 секунд (9.01.2011 - 17:23) m4a1fox написал(а):
Invis1ble
А если использовать while?
А если использовать while?
Спустя 4 минуты, 23 секунды (9.01.2011 - 17:27) Invis1ble написал(а):
m4a1fox
ну используй, если нужно. А перед циклом $count = mysql_num_rows($r);
ну используй, если нужно. А перед циклом $count = mysql_num_rows($r);
Спустя 22 секунды (9.01.2011 - 17:27) m4a1fox написал(а):
Invis1ble
Просто это страница с выводом полной заметки, а есть еще страница с выводом кратких заметок. На странице отображаются все заметки из таблицы you_mail. Вот мне бы хотелось вот на этой странице, отображать кол-во комментариев к той или иной заметки. И там я использовал while а не if. Как быть в таком случае? Вот код вывода заметки
Просто это страница с выводом полной заметки, а есть еще страница с выводом кратких заметок. На странице отображаются все заметки из таблицы you_mail. Вот мне бы хотелось вот на этой странице, отображать кол-во комментариев к той или иной заметки. И там я использовал while а не if. Как быть в таком случае? Вот код вывода заметки
$res = mysql_query("SELECT `id`, `title`, `date`, `text`, `time`, `view`может подскажите?
FROM `you_mail`
WHERE `hide`='show'
ORDER BY `id`
DESC LIMIT ". (($page - 1) * $num) .", ". $num);
if(mysql_num_rows($res) > 0)
while($row = mysql_fetch_assoc($res))
{
$desc = strip_tags($row['text']);
$description = substr($desc, 0, 300);
echo '<br /><table class="post" border="0" cellpadding="0" cellspacing="0" style="background-color: white;"><tr>
<td class="post_title" colspan=2 style="padding-left: 10px; padding-top: 10px;">
<p class="post_name">
<a href=page_view_you_mail.php?view='.(int)$row['id'].'></p>
<img src="img/look.png" align="top"> '.$row['title'].'</a>
</p>
<p class="post_adds">
<img src="img/date.png" align="top"> '.$row['date'].'</p>
<p class="post_adds"> </p></td>
</tr>
<tr>
<td align="left" colspan=2 style="padding: 5 5px">
'.html_entity_decode($description,ENT_QUOTES).'...
</td></tr>
<tr><td colspan=2>
<a href=page_view_you_mail.php?view='.$row['id'].'>
<img align=right src="img/next.png" onmouseover="this.src=\'img/next_hover.png\'" onmouseout="this.src=\'img/next.png\'"></a>
</td></tr>
<tr>
<td class="post_title">
<p class="post_adds" align="left"><img src="img/time.png" align="top">'.$row['time'].'</p></td>
<td class="post_title"><p class="post_adds" align="right">
<img src="img/view.png" align="top"> Просмотров: '.$row['view'].'
</p></td>
</tr></table>';
}?>
Спустя 7 минут, 3 секунды (9.01.2011 - 17:34) m4a1fox написал(а):
Invis1ble
Не получается while - тогда одна заметка выводится столько раз - сколько у нее комментов. А если if - то она выводится один раз, и подсчет комментов - правильный!
Не получается while - тогда одна заметка выводится столько раз - сколько у нее комментов. А если if - то она выводится один раз, и подсчет комментов - правильный!
Спустя 3 минуты, 47 секунд (9.01.2011 - 17:38) Invis1ble написал(а):
m4a1fox
Цитата |
отображать кол-во комментариев к той или иной заметки |
формируешь в цикле запросы с нужными условиями, только делаешь "SELECT COUNT(*) ..." и дальше получаешь результаты этих запросов с помощью mysql_result($result, 0)
Спустя 46 секунд (9.01.2011 - 17:39) Invis1ble написал(а):
m4a1fox
Цитата |
Не получается while - тогда одна заметка выводится столько раз - сколько у нее комментов. А если if - то она выводится один раз, и подсчет комментов - правильный! |
покажи код с while
Спустя 8 минут, 14 секунд (9.01.2011 - 17:47) m4a1fox написал(а):
Invis1ble
Спасибо. Буду пробовать, хотя для меня это реально сложно!?)
Спасибо. Буду пробовать, хотя для меня это реально сложно!?)
Спустя 1 минута, 1 секунда (9.01.2011 - 17:48) m4a1fox написал(а):
<?php
$r = mysql_query("SELECT `you_mail`.`title`, `you_mail`.`text`, `you_mail`.`date`,
`you_mail`.`time`, `you_mail`.`view`, `you_mail`.`author`,
`comment`.`id` FROM `you_mail`
LEFT JOIN `comment` ON `comment`.`id_mail` = `you_mail`.`id`
WHERE `you_mail`.`id` ='".(int)$view."'
ORDER BY `you_mail`.`date` DESC") or die ("Ошибка -".mysql_error());
$cnt = mysql_num_rows($r);
while($d = mysql_fetch_assoc($r))
{
echo '
<table border="0" cellpadding="0" cellspacing="0">
<tr><td>
<div class="underline">
<div class="underline_text">'.$d['title'].'</div>
</div></b>
</td></tr>
<tr><td>'.$d['text'].'</td></tr>
<tr><td><p class="post_adds">
<img src="img/date.png"
align="top"> '.$d['date'].' | <img src="img/time.png"
align="top"> '.$d['time'].' | <img src="img/view.png"
align="top"> '.$d['view'].' | <img src="img/author.png" align="top">
Автор: '.htmlspecialchars($d['author']).'
Комментариев: '.$cnt.'</p></td></tr></table>
';
}
echo("<hr />");
?>
Спустя 9 минут, 57 секунд (9.01.2011 - 17:58) Invis1ble написал(а):
m4a1fox
а, теперь я походу понял, в чем у тебя проблема..... Ну вобщем тогда
а, теперь я походу понял, в чем у тебя проблема..... Ну вобщем тогда
Цитата |
формируешь в цикле запросы с нужными условиями, только делаешь "SELECT COUNT(*) ..." и дальше получаешь результаты этих запросов с помощью mysql_result($result, 0) |
Спустя 9 минут, 13 секунд (9.01.2011 - 18:07) m4a1fox написал(а):
Invis1ble
Так все таки if использовать или вернуться к while?
Так все таки if использовать или вернуться к while?
Спустя 9 минут, 52 секунды (9.01.2011 - 18:17) m4a1fox написал(а):
Invis1ble
Я по другому сделал.) И вроде пока все работает?!
Я по другому сделал.) И вроде пока все работает?!
$com = mysql_query("SELECT `comment`.`id`, `comment`.`id_mail`, `you_mail`.`id`запрос в запросе. Не знаю насколько правильно. Но он работает! Спасибо за подсказки и помощь!?
FROM `comment`
LEFT JOIN `you_mail` ON `you_mail`.`id` = `comment`.`id_mail`
WHERE `comment`.`id_mail` = '".$row['id']."'
")
or die ("Ошибка -". mysql_error());
if($cnt = mysql_num_rows($com ))
{