X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость (

| Вход | Регистрация )

Открыть тему
Тема закрыта
> Двойной цикл
Free_hb
Free_hb
Topic Starter сообщение 29.9.2010, 16:21; Ответить: Free_hb
Сообщение #1


Столкнулся с затруднениями подсчёта полей в двойном цикле.
Существуют 3 таблицы:

categories - категории записей
posts - записи
comments - комментарии записей

Необходимо подсчитать количество комментарий записей определённой категории.

Первый запрос на выборку категорий содержит переменная $variable:

[PHP]
$variable = mysql_query("SELECT id,title FROM categories",$db);
$variable_array = mysql_fetch_array($variable);
[/PHP]

После, в цикле должны заноситься записи с категорией попавшей в массив $variable_array:

[PHP]
do
{

$variable2 = mysql_query("SELECT id,category FROM posts WHERE category = '$variable_array[id]'",$db);
$variable_array = mysql_fetch_array($variable2);
}
while($variable_array = mysql_fetch_array($variable));
[/PHP]

Теперь, в этом же цикле, необходимо вытащить те комментарии из таблицы comments, которые относятся к всем заметкам, попавшим в массив: mysql_fetch_array($variable2) , и подсчитать их общее количество.
Для этого я снова открыл цикл:

[PHP]

do
{

$variable2 = mysql_query("SELECT id,category FROM posts WHERE category = '$variable_array[id]'",$db);
$variable_array = mysql_fetch_array($variable2);
$quantity3 = 0;

do
{
$quantity3 = $quantity3 + $quantity2;

$variable3 = mysql_query("SELECT id,post FROM comments WHERE post = '$variable2_array[id]'",$db);
$quantity2 = mysql_num_rows($variable3);
}
while($variable2_array = mysql_fetch_array($variable2));

echo $quantity3;

}
while($variable_array = mysql_fetch_array($variable));

[/PHP]

Строчкой - ($quantity3 = $quantity3 + $quantity2;) я попытался вытащить общее количество комментарий записей попавших в массив mysql_fetch_array($variable2) , после чего вывести их общее количество (echo $quantity3;) но подсчёт идёт не верный, наверно из за того что я делаю это не правильно.

Подскажите, что здесь не верно или неправильно, если всё же мои объяснения не совсем понятны, выложу код одним целым:

[PHP]
<?php

$variable = mysql_query("SELECT id,title FROM categories WHERE id = '1'",$db);
$variable_array = mysql_fetch_array($variable);

do
{

$variable2 = mysql_query("SELECT id,category FROM posts WHERE category = '$variable_array[id]'",$db);
$variable_array = mysql_fetch_array($variable2);
$quantity3 = 0;

do
{
$quantity3 = $quantity3 + $quantity2;

$variable3 = mysql_query("SELECT id,post FROM comments WHERE post = '$variable2_array[id]'",$db);
$quantity2 = mysql_num_rows($variable3);
}
while($variable2_array = mysql_fetch_array($variable2));

echo $quantity3;

}
while($variable_array = mysql_fetch_array($variable));

?>
[/PHP]
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Mulder_hb
Mulder_hb
сообщение 29.9.2010, 22:31; Ответить: Mulder_hb
Сообщение #2


Привет Попову!
Омг, запрос в цикле :) ! Сжечь вас на костре было бы слишком милосердным наказанием...

Приведите структуру таблиц. Код будет приблизительно таким (не уверен, что с первого раза запрос будет верным):
[PHP]$src = mysql_query("SELECT COUNT(`comments`.`posts`) FROM `comments` WHERE `comments`.`post` = `posts`.`id` AND `posts`.`category` = `categories`.`id`");
for ($data = array(); $row = mysql_fetch_assoc($src); $data[] = $row);
for ($i = 0; $i < count($data); $i++) {
echo $data[$i][0]."<br/>";
}[/PHP]
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
unnormal
unnormal
сообщение 30.9.2010, 11:31; Ответить: unnormal
Сообщение #3


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

[php]mysql_query("SELECT id,title, (SELECT COUNT(*) FROM posts WHERE category = c.id) FROM categories AS c",$db);[/php]

Замечание модератора:
Эта тема была закрыта автоматически ввиду отсутствия активности в ней на протяжении 100+ дней.
Если Вы считаете ее актуальной и хотите оставить сообщение, то воспользуйтесь кнопкой
или обратитесь к любому из модераторов.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Открыть тему
Тема закрыта
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Горячая тема (нет новых ответов) Качественное пакетное размещение статей на 500+ СДЛ сайтов с ЯК, Тиц! Полный цикл работ!
82 Antonium 24469 30.1.2014, 13:53
автор: a_seo
Открытая тема (нет новых ответов) Цикл "for" и простые способы для многослойных выпадающих меню и слайдшоу
0 hhpd 5177 17.2.2013, 5:47
автор: -hhpd-


 



RSS Текстовая версия Сейчас: 24.4.2024, 18:43
Дизайн