Форум SAPE.RU

Форум SAPE.RU (http://forum.sape.ru/index.php)
-   Разработка и сопровождение сайтов (http://forum.sape.ru/forumdisplay.php?f=29)
-   -   помогите посчитать PHP (http://forum.sape.ru/showthread.php?t=42070)

10012003 22.11.2009 19:58

помогите посчитать PHP
 
привет всем!
Столкнулся с такой проблемой, никак не могу посчитать количество товара

крипт

while (заказы){

while (товары в заказе){

номер товара, количество

}}

выводит

123 1шт
321 2шт
456 1шт

123 2шт
321 1шт

456 5шт

выводит правильно, надо сделать что бы выводило номер товара и общее количество, то есть так

123 3шт
321 3шт
456 6шт

Второй день бьюсь никак не получается помогите кто может

Добавлено через 2 минуты
в данном случае 3 заказа с разным количеством товара, в идеале количество заказов не ограничено, так же как и количество товаров в заказе

Добавлено через 1 минуту
сам скрипт
PHP код:

<?
$select_zak 
mysql_query("SELECT * FROM zakaz WHERE pr = '$_SESSION[USER]' AND cat = '$catalog[id]' AND statys = '1' ");
while(
$zak mysql_fetch_assoc($select_zak)){

$select_tovq mysql_query("SELECT * FROM basket WHERE zakaz = '$zak[id]'");
while(
$tovq mysql_fetch_assoc($select_tovq)){

$select_tovn mysql_query("SELECT * FROM records WHERE id = '$tovq[tovar]' ");
$tovn mysql_fetch_assoc($select_tovn);
if (
$tovn[kat] != 0){
$select_tovnn mysql_query("SELECT * FROM records WHERE id = '$tovn[kat]' ");
$tovnn mysql_fetch_assoc($select_tovnn);
} else (
$tovnn="");

?>

<?=$tovn[nomer]?> <?=$tovnn[name]?> <?=$tovn[name]?>  <?=$tovq[kol]?> <br>
<? }} ?>

Добавлено через 6 минут
ну что нет математиков или что то не понятно

DNA 22.11.2009 20:00

В sql-запросе GROUP BY не подойдёт?

gobliin 22.11.2009 20:08

Можно всё одним sql-ем сделать, это будет быстрее.

Vetas 22.11.2009 20:09

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

10012003 22.11.2009 20:16

пользователей может быть несколько и у каждого несколько заказов. поэтому промежуточная таблица не подойдет как организовать с помощью GROUP BY не знаю
Цитата:

Сообщение от gobliin (Сообщение 630694)
Можно всё одним sql-ем сделать, это будет быстрее.

так пишите как, а то что сделать можно все я и так знаю :)

Vetas 22.11.2009 20:38

Цитата:

Сообщение от 10012003 (Сообщение 630705)
пользователей может быть несколько и у каждого несколько заказов. поэтому промежуточная таблица не подойдет

А какие вообще поля в таблице zakaz?

10012003 22.11.2009 20:42

id автоинкремент
date дата
userid id того кто добавил заказ
pr исполнитель заказа
statys статус заказа
cat из какого каталога заказ

gobliin 22.11.2009 20:43

Цитата:

Сообщение от 10012003 (Сообщение 630705)
так пишите как, а то что сделать можно все я и так знаю :)

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

Добавлено через 49 секунд
можно в MySql WorkBench диаграмму построить и скрин выложить.

Vetas 22.11.2009 20:45

Цитата:

Сообщение от 10012003 (Сообщение 630725)
id автоинкремент
date дата
userid id того кто добавил заказ
pr исполнитель заказа
statys статус заказа
cat из какого каталога заказ

Так почему бы сюда не добавить поле "номер заказа"?
Это, я так понимаю, главная таблица заказов? Вот добавь это поле и делай выборку.

10012003 22.11.2009 20:58

Цитата:

Сообщение от Vetas (Сообщение 630729)
Так почему бы сюда не добавить поле "номер заказа"?

id соответствует номеру заказа

Добавлено через 2 минуты
gobliin, что то Вы не в ту степь пошли

все гораздо проще, нужно сложить значения при совпадении имен, какая разница что откуда берется

Добавлено через 7 минут
по коду
zakaz номера заказа, чей заказ и кто исполнитель
basket содержание заказа: id заказа и количество
records номер заказа и имя


Часовой пояс GMT +3, время: 15:47.

Работает на vBulletin® версия 3.8.7.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
SAPE.RU — система купли-продажи ссылок с главных и внутренних страниц сайтов.