Подсчет из полученного массива

dnes

Новичок
Подсчет из полученного массива

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

Код:

$sql_section = "SELECT * FROM sections ORDER BY id";
$result_section = mysql_query($sql_section);
$row_section = mysql_fetch_array($result_section);

DO {
ECHO "$row_section[name] | ";
$sql_section_products = "SELECT id_product FROM sections_products WHERE id_section = $row_section[id]";
$result_section_products = mysql_query($sql_section_products);
IF (!$row_section_products = mysql_fetch_array($result_section_products)) {
ECHO "В этом отделе сейчас вооще ничего нет!";
} ELSE {

DO {
$sql_available_products = "SELECT id FROM products WHERE (id = $row_section_products[id_product] AND status = 1)";
$result_available_products = mysql_query($sql_available_products);
IF (!$row_available_products = mysql_fetch_array($result_active_number)) {
ECHO "В этом отделе сейчас нет доступных продуктов!";
} ELSE {
//////////////////////////////////////////////////////////////////
$number_of_available_products = $number_of_available_products + 1;
//////////////////////////////////////////////////////////////////
}
} WHILE($row_section_products = mysql_fetch_array($result_section_products));

echo $number_of_available_products;
}
echo "<br><br>";

} WHILE ($row_section = mysql_fetch_array($result_section));

Ясно, что и над самими запросами еще нужно поработать. Просто в данном этапе для меня так нагляднее. А вот, что я в том, что между слэшами должен натворить, чтобы $number_of_available_products стал уникальным для каждой отображаемой строки, мне абсолютно неясно.
 

Кром

Новичок
>$row_section = mysql_fetch_array($result_section);

Вывод нужно делать так:
while($row = mysql_fetch_array($result_section))
{
echo $row['id'];
echo $row['name'];
echo $row['data'];
}

Подсчет количества полученных строк: [m]mysql_num_rows[/m]


>$row_section_products[id_product]
нужно писать так:
$row_section_products['id_product']


while - do здесь не нужно.

ECHO, WHILE, DO - писать лучше строчными буквами.


>$number_of_available_products = $number_of_available_products + 1;

нужно писать так:
$number_of_available_products++;

И вобще весь этот код нелеп. Перепиши все заново.
 

dnes

Новичок
Кром

Спасибо большое, но ...

[Подсчет количества полученных строк: [m]mysql_num_rows[/m]]

Это я знаю, однако вроде как не без основания полагал, что без этого здесь можно будет с успехом обойтись с помощью $number_of_available_products++.

[while - do здесь не нужно]

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

А вообще главная проблема в том, что при выводе HTML-строчки по, например, последнему (десятому) отделу к количеству доступных в нем продуктов прибавляется количество продуктов доступных в отделах 1-9. Меня интересует, как сделать, чтобы переменная number_of_available_products была реальна (уникальна?)для каждого из 10 отделов?

А код я конечно же перепишу.
:rolleyes:
 

Кром

Новичок
>Это я знаю, однако вроде как не без основания полагал, что без этого здесь можно будет с успехом обойтись с помощью $number_of_available_products++.

Это ты неправильно полагал.

>Получается, что нужно, так как в одном от...

Не нужно.
Чтобы получить все доступные товары тебе нужно сделать один запрос по всем отделам в самом начале.
А вообще сначала перепиши этот код, а потом можно будет обсуждать проблему дальше.
 

dnes

Новичок
Кром

Наконец-то переписал. Все работает, и просто чтобы закрыть тему... Сам подсчет (в котором и была проблема) выглядит так:

$sql_number = "SELECT count(*) as total
FROM products LEFT JOIN sections_products
ON (products.id = sections_products.id_product)
WHERE (sections_products.id_section=$row[id] AND products.status = 1)";

Это правильно, или можно как-нибудь лучше?
 
Сверху