Автор Тема: разбивка вывода  (Прочитано 17834 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн граф

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 15
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
разбивка вывода
« : 27 Ноября 2008, 11:56:47 »
сижу туплю, не могу понять как
есть запрос к базе, он выводит данные.
все очень классно. но тут вдруг понадобилось эти данные раздробить. в принципе, можно сделать несколько запросов к базе и вывести.  но ведь наверняка можно средствами php их разделить.


<?
$VYVOD.=\'
  <tr\'.$bgcolor.\'>
    <td>\'.$i.\'</td>
    <td>\'.$row[\'mesyaz\'].\'</td>
    <td>\'.$row[\'m_kol\'].\'</td>    
  </tr>\';
?> 
 
 
<table width="100%" border="1" cellspacing="0" cellpadding="3">
  <tr>
    <td rowspan="2">ном</td>
    <td rowspan="2">кол-во</td>
    <td rowspan="2">месяц</td>
  </tr>
<?=$VYVOD;?>
</table>


вот решили разбить по месяцам
и посчитать сколько в каком было.. можно конечно в конце вывести в каком что.. но захотелось что бы после каждого месяца был вывод чего сколько..
помогите.

Оффлайн ravshaniy

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 191
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
разбивка вывода
« Ответ #1 : 27 Ноября 2008, 22:09:56 »
в запросе ORDER BY по месяцам
в скрипте один иф с проверкой не новый ли это месяц, все суммы в переменные.

либо два запроса, один с GROUP BY и с суммированием полей которые вам нужны, другой можно с ORDER BY можно без. получите два массива
убили кенни, сволочи

Оффлайн CGVictor

  • теперь местный
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 2511
  • +0/-0
  • 2
    • Просмотр профиля
    • http://cg.net.ru
разбивка вывода
« Ответ #2 : 27 Ноября 2008, 23:46:46 »
Цитировать
граф:
есть запрос к базе, он выводит данные.

Есть запрос к базе, он выводит данные. Лучше его тоже показать.
LJ: Backslashed life (rss)

Оффлайн граф

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 15
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
разбивка вывода
« Ответ #3 : 02 Декабря 2008, 00:18:02 »
ну а толку от запроса? обычный запрос
$res=mysql_query("
SELECT *
FROM tab
WHERE st=1
"
) or die(mysql_error()); 

Оффлайн граф

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 15
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
разбивка вывода
« Ответ #4 : 02 Декабря 2008, 17:04:17 »
Цитировать
ravshaniy:
в скрипте один иф с проверкой не новый ли это месяц

а как так ему объяснить?

Оффлайн граф

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 15
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
разбивка вывода
« Ответ #5 : 02 Декабря 2008, 19:38:40 »
задача усложнилась:( вот тут http://phpclub.ru/talk/showthread.php?s=&postid=827583 расписал что и как..:(

Оффлайн hanslinger

  • H2Oer
  • Ветеран
  • *****
  • Сообщений: 1148
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.orava.ru
разбивка вывода
« Ответ #6 : 03 Декабря 2008, 08:31:01 »
тебе пиздец! :)

Оффлайн граф

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 15
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
разбивка вывода
« Ответ #7 : 03 Декабря 2008, 16:33:19 »
тут видно принято .... обкладывать?

Оффлайн hanslinger

  • H2Oer
  • Ветеран
  • *****
  • Сообщений: 1148
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.orava.ru
разбивка вывода
« Ответ #8 : 03 Декабря 2008, 16:45:55 »
Тут принято помогать людям, которые понимают, что делают.

Оффлайн граф

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 15
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
разбивка вывода
« Ответ #9 : 03 Декабря 2008, 16:55:31 »

$resstr
=mysql_query("
SELECT `st_id`, `st_list`
FROM `strana`
"
) or die(mysql_error()); 
    while (
$rowstr mysql_fetch_array($resstr)) { 
        
$strid[$rowstr[\'st_id\']]=$rowstr[\'st_id\'];
}
$resrek=mysql_query("
SELECT `re_id`, `re_nazvanie`
FROM `reklama`
") or die(mysql_error()); 
    while ($rowrek = mysql_fetch_array($resrek)) { 
        $rekid[$rowrek[\'re_id\']]=$rowrek[\'re_id\'];
}
// собираю страны и издания, дальше запрос к базе основной


$res=mysql_query("
SELECT *
FROM `zvonki`
LEFT JOIN `reklama` ON `re_id`=`zv_reklama_ist`
LEFT JOIN `strana` ON `st_id`=`zv_strana
ORDER BY  re_id, st_id
") or die(mysql_error()); 
while ($row = mysql_fetch_array($res)) {

$r1=$row[\'re_id\']; // ставлю одну переменную
    if ($row[\'re_id\']==$rekid[$row[\'re_id\']]) {
        if ($row[\'st_id\']==$strid[$row[\'st_id\']]) {

$VYVOD.=\'
  <tr>
    <td>\'.$row[\'re_nazvanie\'].\'</td>
    <td>\'.$row[\'st_list\'].\'</td>
    <td align="right">\'.$row[\'zv_summa\'].\'</td>
  </tr>\';
  if ($r1!=$r2) { //
 $VYVOD.=\'
  <tr>
    <td>Итог:</td>
    <td></td>
    <td align="right">\'.$summa.\'</td>
  </tr>\';
  }
$r2=$row[\'re_id\']; // ставлю вторую переменную
	
	
}
	
}
}

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

журнал сумма
                итог сумма
журнал сумма
журнал сумма
журнал сумма
журнал сумма

а нужно вот так:

журнал сумма
журнал сумма
журнал сумма
журнал сумма
журнал сумма
                итог сумма

потому и спрашиваю, как правильно сделать.
потому что не понимаю как задать переменные на которые ориентироваться.

Оффлайн APL

  • Фанат форума
  • Старожил
  • ****
  • Сообщений: 344
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.aerozone.ru
разбивка вывода
« Ответ #10 : 03 Декабря 2008, 17:03:00 »
хммм.... может я тупой и вопрос не понял... что вам мешает вывод делать том порядке который вам нужен?

$resstr=mysql_query("
SELECT `st_id`, `st_list`
FROM `strana`
"
) or die(mysql_error()); 
    while (
$rowstr mysql_fetch_array($resstr)) { 
        
$strid[$rowstr[\'st_id\']]=$rowstr[\'st_id\'];
}
$resrek=mysql_query("
SELECT `re_id`, `re_nazvanie`
FROM `reklama`
") or die(mysql_error()); 
    while ($rowrek = mysql_fetch_array($resrek)) { 
        $rekid[$rowrek[\'re_id\']]=$rowrek[\'re_id\'];
}
// собираю страны и издания, дальше запрос к базе основной


$res=mysql_query("
SELECT *
FROM `zvonki`
LEFT JOIN `reklama` ON `re_id`=`zv_reklama_ist`
LEFT JOIN `strana` ON `st_id`=`zv_strana
ORDER BY  re_id, st_id
") or die(mysql_error()); 
while ($row = mysql_fetch_array($res)) {

$r1=$row[\'re_id\']; // ставлю одну переменную
    if ($row[\'re_id\']==$rekid[$row[\'re_id\']]) {
        if ($row[\'st_id\']==$strid[$row[\'st_id\']]) {

$VYVOD.=\'
  <tr>
    <td>\'.$row[\'re_nazvanie\'].\'</td>
    <td>\'.$row[\'st_list\'].\'</td>
    <td align="right">\'.$row[\'zv_summa\'].\'</td>
  </tr>\';
 
$r2=$row[\'re_id\']; // ставлю вторую переменную
        }
    }
}

$VYVOD.=\'
  <tr>
    <td>Итог:</td>
    <td></td>
    <td align="right">\'.$summa.\'</td>
  </tr>\';

Оффлайн граф

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 15
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
разбивка вывода
« Ответ #11 : 03 Декабря 2008, 17:40:57 »

    
if ($row[\'re_id\']==$rekid[$row[\'re_id\']]) {
        if ($row[\'st_id\']==$strid[$row[\'st_id\']]) {

это разсортирует их сначала по изданию, а потом по стране.

а это вывод всех в конце. $VYVOD.=\'
  <tr>
    <td>Итог:</td>
    <td></td>
    <td align="right">\'.$summa.\'</td>
  </tr>\';



вот какой раслад на данный момент

журнал1 сумма
итог журнал1 сумма
журнал1 сумма
журнал1 сумма
журнал1 сумма
журнал1 сумма
журнал2 сумма
итог журнал2 сумма
журнал2 сумма
журнал2 сумма
журнал2 сумма
журнал2 сумма
журнал3 сумма
итог журнал3 сумма
журнал3 сумма
журнал3 сумма
журнал3 сумма
журнал3 сумма

а нужно вот так:

журнал1 сумма
журнал1 сумма
журнал1 сумма
журнал1 сумма
журнал1 сумма
итог журнал1 сумма
журнал2 сумма
журнал2 сумма
журнал2 сумма
журнал2 сумма
журнал2 сумма
итог журнал2 сумма
журнал3 сумма
журнал3 сумма
журнал3 сумма
журнал3 сумма
журнал3 сумма
итог журнал3 сумма

а там еще и по стране разбить надо будет. мне бы принцип с изданием понять .. со страной думаю так же будет..

Оффлайн APL

  • Фанат форума
  • Старожил
  • ****
  • Сообщений: 344
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.aerozone.ru
разбивка вывода
« Ответ #12 : 03 Декабря 2008, 18:02:38 »
ну и пихайте итог где нужно... в чем проблема?
код ваш протестить не могу... лениво базу делать такую :)

а что мешает считать количество одинаковых городов, журналов и еще какой-то хрени? например так:

select field, count(field) from table group by field order by binary(field) ASC

где filed это поле, а table таблицо

по запросу будет выдано список значений поля в алфавитном порядке и количество записей с таким значением

Оффлайн hanslinger

  • H2Oer
  • Ветеран
  • *****
  • Сообщений: 1148
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.orava.ru
разбивка вывода
« Ответ #13 : 03 Декабря 2008, 18:04:58 »
не нужно вываливать код
не нужно о нем даже думать

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

Оффлайн граф

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 15
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
разбивка вывода
« Ответ #14 : 03 Декабря 2008, 18:14:34 »
Цитировать
APL:
а что мешает


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



Цитировать
hanslinger:
все сделаешь сам

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

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28