[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Запрос в запросе
qpurypaHT
Вечер добрый, столкнулся с проблемой. Я максимально начинающий пользователь, рассчитываю на понимание.

Написал скрипт на вывод новостей, добавление к ним комментариев с последующей модерацией, + учет комментариев к каждой новости отдельно.

Но знания MySQL еще меньше чем PHP=)
По-этому столкнулся с проблемой вывода кол-ва комментариев в ЛЕНТЕ новостей.

Таким типом ВНУТРИ открытой новости считаю сколько к ней комментариев присвоено и промодерировано.
 
$comm = mysql_query("SELECT COUNT(*) FROM `commects` WHERE `comm_id` = ".$id." AND moderation = 1");
$row2 = mysql_fetch_row($comm);
$total = $row2[0];



а как сделать запрос в запросе на странице вывода всех новостей чтобы выводился подсчет с БД не знаю, смотрел в инете примеры, но как-то сложно, не подскажите?


$sql = mysql_query("SELECT *, DATE_FORMAT(datepost, '%d.%m.%Y, %H:%i:%s') AS datepost FROM `news` ORDER BY `id` DESC", $link_connect) or die(mysql_error() );


Распилил все дело на 2 таблицы, новости новостями, комменты в отдельной, в дальнейшем идет передача ID новости в таблицу комментариев и дальнейший вывод по этому ID к необходимой новости, если инфы мало, скину код

_____________
Если долго в одних стенах живешь, ты с ними сростаешься
qpurypaHT
Второй скрин

_____________
Если долго в одних стенах живешь, ты с ними сростаешься
chee
Почитай сначала о проектировании БД

_____________
Люди, имеющие низкий уровень квалификации, делают ошибочные выводы, принимают неудачные решения и при этом неспособны осознавать свои ошибки в силу низкого уровня своей квалификации
qpurypaHT
Ясно/понятно, на этом форуме всегда найдется всезнайка который проявит себя чтобы его "поупрашивали".

У меня предложение к администратору форума, при регистрации сделайте проверочное задание на знание языков программирования, маленькая задачка которая проверит знания юзера и даст решение в регистрации. Чтобы тут всякая бездарь как я не собиралась, царей умных не мучила своими вопросами.

Да я понимаю, что слишком много халявщиков здесь сидит, которые просят написать им чуть ли не весь сайт, но если кому-то в принципе "взападло", чем-то по мелочи помогать, то не стоит отвечать вовсе, тем самым ставить себя выше "новичков". Однажды и Вы, уважаемый chee были бревном в программировании, и вы хотели получить какие-то ответы и помощь.

Удалите тему, посижу часы, разберусь может.
Админу добра! Ответов более не требуется

_____________
Если долго в одних стенах живешь, ты с ними сростаешься
twin
chee
Что тебя смутило в его базе?

Stave
Не стоит расстраиваться. Все дело в том, что ты задал совсем непростой вопрос. Вернее вопрос простой, но ответ на него займет огромную кучу времени, так как нужно начинать рассказывать с азов. Ну может кому то будет не лень.

И не совсем понятно. Что именно считать. Вообще все комментарии или отдельно для каждой новости в списке?

_____________
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
chee
twin, ну отсутствие нормализации


_____________
Люди, имеющие низкий уровень квалификации, делают ошибочные выводы, принимают неудачные решения и при этом неспособны осознавать свои ошибки в силу низкого уровня своей квалификации
qpurypaHT
Цитата (twin @ 4.04.2016 - 09:35)

Stave
Не стоит расстраиваться. Все дело в том, что ты задал совсем непростой вопрос. Вернее вопрос простой, но ответ на него займет огромную кучу времени, так как нужно начинать рассказывать с азов. Ну может кому то будет не лень.

И не совсем понятно. Что именно считать. Вообще все комментарии или отдельно для каждой новости в списке?



Отмечу сразу, что я не в общее число перевел свое сообщение, дело не в том, что долго отвечают или еще что-то. Я понимаю, что ответа могу и вовсе не дождаться.

Я написал пост, CHEE ответил мне сначала ссылкой на статью википедии, ну уж потом решил превратить это в текст.

Хочу отметить, что с самого начала я написал, что я в БД разбираюсь еще меньше. Да может быть я и пишу примитивно без шаблонной системы и нелогично, но я только учусь. Каждый с годами оттачивает сокращение и логику своего кода.


Суть моего вопроса такая, выложу все по полкам. Я смог посчитать комментарии отдельно к каждой новости.

Комменты находятся в отдельной таблице.
Скрытый текст
user posted image


По этому коду в таблицу отправляется, ID новости, имя отправителя, дата, текст комментария.

if($_POST["post_comment_button"]){

$_POST["post_user"] = clear_string($_POST["post_user"]);
$_POST["post_user_text"] = clear_string($_POST["post_user_text"]);

$dataquery = "
comm_id='"
.$id."',
comm_user_post='"
.$_POST["post_user"]."',
datepost='"
.date("Y.m.d, H:i:s")."',
comm_post='"
.$_POST["post_user_text"]."',
name_topic='"
.$_POST["name_topic"]."'
"
;
$update = mysql_query("INSERT INTO commects SET $dataquery", $link_connect);


header('Location: new.php?id='.$id.'');
die();
}


clear_string - отдельная функция очистки строки (на всякий случай)



Таким образом посчитал в таблице комментарии по переданному "ID" новости в comm_id, + если я уже промодерировал комментарий в админке moderation = 1 (ЭТО ВНУТРИ НОВОСТИ)

$comm = mysql_query("SELECT COUNT(*) FROM `commects` WHERE `comm_id` = ".$id." AND moderation = 1");
$row2 = mysql_fetch_row($comm);
$total = $row2[0];


Результат вывел в облачко (ОПЯТЬ ЖЕ ВНУТРИ НОВОСТИ)
user posted image

Ну соответственно вывел комментарии по id новости (comm_id)

$sql = mysql_query("SELECT *, DATE_FORMAT(datepost, '%d.%m.%Y, %H:%i:%s') AS datepost FROM `commects` WHERE `comm_id` = ".(int)$id." AND `moderation` = 1 ORDER BY `id` DESC", $link_connect) or die(mysql_error() );
if(mysql_num_rows($sql) > 0){
while ($commects = mysql_fetch_assoc($sql)){
echo '<div id="comments">';
echo '
<div class="comm_post">
<div class="avatar"><img src="http://boumantandtechniek.weebly.com/uploads/8/3/4/7/8347819/291331.jpg" alt="" /></div>
<div class="comm_us_name">'
.$commects['comm_user_post'].'</div>
<div class="comm_date">Написал(а): '
.$commects['datepost'].'</div>
<div class="comm_text">'
.$commects['comm_post'].'</div>
</div>
'
;
echo '</div>';
}
}
else{
echo '<span style="font-style:italic;font-size:16pt;">В этой теме еще не сотавляли коментариев</span>';
}



id новости конечно же получал методом: $id = (int)$_GET["id"];

Но на странице с выведенном списком новостей я не знаю как передать в это облачко кол-во комментариев к данной новости.

Рылся в инете и нашел инфу ЗАПРОС в ЗАПРОСЕ, так же один хороший программист (Kusss) указал на тот же вариант. Но как реализовать это в коде вывода новостей в ленту не могу решить


$sql = mysql_query("SELECT *, DATE_FORMAT(datepost, '%d.%m.%Y, %H:%i:%s') AS datepost FROM `news` ORDER BY `id` DESC", $link_connect) or die(mysql_error() );
while ($news = mysql_fetch_assoc($sql)){
echo '<div class="indent"></div>';
echo '<span class="newTitle"><a href="new.php?id='.$news['id'].'" title="Читать новость "'.$news['title'].'"">'.$news['title'].' #'.$news['id'].'</a></span>';
echo '
<div id="NewPost">
<div class="newInfo">Автор: <span class="select">'
.$news['author'].'</span> опубликовал <span class="select">'.$news['datepost'].'</span>, просмотров: <span class="select">'.$news['view'].'</span>, оценили: <span class="select">'.$news['likes'].'</span></div>
<hr />
<div class="newComments">'
.$news['comments'].' <span class="arrowcom"><span></div>
<div class="read_next"><a href="new.php?id='
.$news['id'].'" title="Читать новость "'.$news['title'].'"">[Читать полностью]</a></div>
<div class="newDesc">'
.$news['description'].'</div>
</div>
'
;
}


_____________
Если долго в одних стенах живешь, ты с ними сростаешься
Быстрый ответ:

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