Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Вывод данных из mySQL в PHP!!!

7.6K
10 мая 2006 года
Dick_H
56 / / 20.02.2006
Нужна помощь по PHP и mySQL:

Есть таблица в mySQL, в которой занесены данные о торговых операциях, на php делаю запрос из этой таблицы
(тем самым создаю отчет об операциях) и вывожу в примерно такую таблицу:
--------------------------------------------------------
| Название | Кол. | Сумма | Операция |
--------------------------------------------------------
| Товар1 | 2 | 2000 | Продажа |
| Товар2 | 1 | 150 | Продажа |
| Товар1 | 1 | 2000 | Продажа |
| Товар2 | 2 | 100 | Приход |
| Товар2 | 2 | 100 | Приход |
-------------------------------------------------------

Вопрос в том, чтобы не отображать все записи из таблицы, а сделать примерно так:

--------------------------------------------------------
| Название | Кол. | Сумма | Операция |
--------------------------------------------------------
| Товар1 | 3 | 3000 | Продажа |
| Товар2 | 1 | 150 | Продажа |
| Товар2 | 4 | 200 | Приход |
-------------------------------------------------------
То есть товар с одинаковым названием и с одинаковой операцией обьединялись в один,
а количество и сумма соответсвенно складывались. При этом, один и тот же товар может быть и продан,
а через некоторое время он снова возврашён в базу (осуществили приход), но чтобы не возникfло путаницы?
Может кто встречался с подобным и знает как это реализовать?
8
10 мая 2006 года
mfender
3.5K / / 15.06.2005
Одним запросом однозначно не обойтись...
Нужно подумать... Приводить по товару и операциям к временным таблицам, из низ выбирать DISTINCT'ом, а уж там выбирать в окончательный результат.

Вопрос интересный. Стоит задуматься.
7.6K
10 мая 2006 года
Dick_H
56 / / 20.02.2006
У меня примерно такая же была идея, сделать вывод в два шага, одни фильтровать операции, а другим фильтровать название... но что-то никак не могу прийти к реализации это... :(
15
10 мая 2006 года
shaelf
2.7K / / 04.05.2005
Цитата:
Originally posted by Dick_H
У меня примерно такая же была идея, сделать вывод в два шага, одни фильтровать операции, а другим фильтровать название... но что-то никак не могу прийти к реализации это... :(


Писать особо некогда, поэтому сухой теорией:)
Выбираем все названия (через DISTINCT) из него лепим массив (пусть будет $array). Далее выбираем все продажи и делаем что-то типа

 
Код:
if($array['название'] == $row['название выбранного товара']) и тут плюсуем значение $array['название']['цена'] с $row['цена из второй выборки']
. Не уверен, но надеюсь понятно. Если не поймёшь, то вечером могу более подробно.
8
10 мая 2006 года
mfender
3.5K / / 15.06.2005
Цитата:
Originally posted by shaelf
Писать особо некогда, поэтому сухой теорией:)
Выбираем все названия (через DISTINCT) из него лепим массив (пусть будет $array). Далее выбираем все продажи и делаем что-то типа
 
Код:
if($array['название'] == $row['название выбранного товара']) и тут плюсуем значение $array['название']['цена'] с $row['цена из второй выборки']
. Не уверен, но надеюсь понятно. Если не поймёшь, то вечером могу более подробно.


Это средствами PHP. Так, конечно, можно сделать, или, хотя бы смоделировать SQL-движения... Мне, например, действительно понятнее, как это сделать на PHP. Но вопрос-то, если мне что-то опять не изменяет после праздника, шёл про средства MySQL?.. Или я опять что-то разглядел не просыпаясь?

15
10 мая 2006 года
shaelf
2.7K / / 04.05.2005
Цитата:
Originally posted by mfender
Это средствами PHP. Так, конечно, можно сделать, или, хотя бы смоделировать SQL-движения... Мне, например, действительно понятнее, как это сделать на PHP. Но вопрос-то, если мне что-то опять не изменяет после праздника, шёл про средства MySQL?.. Или я опять что-то разглядел не просыпаясь?


Я отталкивался от

Цитата:
Нужна помощь по PHP и mySQL:

. Хотя 3 часа сна наверное дают о себе знать...

7.6K
10 мая 2006 года
Dick_H
56 / / 20.02.2006
Цитата:
Originally posted by shaelf
Писать особо некогда, поэтому сухой теорией:)
Выбираем все названия (через DISTINCT) из него лепим массив (пусть будет $array). Далее выбираем все продажи и делаем что-то типа
 
Код:
if($array['название'] == $row['название выбранного товара']) и тут плюсуем значение $array['название']['цена'] с $row['цена из второй выборки']
. Не уверен, но надеюсь понятно. Если не поймёшь, то вечером могу более подробно.



А по-подробнее можно?

15
10 мая 2006 года
shaelf
2.7K / / 04.05.2005
Цитата:
Originally posted by Dick_H
А по-подробнее можно?


Код писать не буду, но смысл попробую разжевать.
1.Выбираем из базы только названия (SELECT DISTINCT name FROM base);
2. Из результата делаем массив который состоит только из имён и они не повторяются.
3. Делаем выборку всех проданных товаров.
4. Далее действуем примерно так:

 
Код:
$array // Это массив с наименованиями товаров
$result // Это результат запроса к базе из пункта №3
while($row = mysql_fetch_row($result)) {
    /*В этом месте через if сравниваешь названия из $array[] с полученными из $row. Если они совпадают, то просто плюсуешь значение к $array.
В результате должен получится массив вида
$array['name']['pay'], где name - это название товара, а pay - это общая сумма.
*/

}

5. C приходом просто повторяем операцию.
Разжевал на сколько мог, далее сам.
7.6K
10 мая 2006 года
Dick_H
56 / / 20.02.2006
Цитата:
Originally posted by shaelf
Код писать не буду, но смысл попробую разжевать.
1.Выбираем из базы только названия (SELECT DISTINCT name FROM base);
2. Из результата делаем массив который состоит только из имён и они не повторяются.
3. Делаем выборку всех проданных товаров.
4. Далее действуем примерно так:
 
Код:
$array // Это массив с наименованиями товаров
$result // Это результат запроса к базе из пункта №3
while($row = mysql_fetch_row($result)) {
    /*В этом месте через if сравниваешь названия из $array[] с полученными из $row. Если они совпадают, то просто плюсуешь значение к $array.
В результате должен получится массив вида
$array['name']['pay'], где name - это название товара, а pay - это общая сумма.
*/

}

5. C приходом просто повторяем операцию.
Разжевал на сколько мог, далее сам.



Спасибо за помощь!!!!! :!!!:
Разберусь :)

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог