Kom ihåg mig?
Home Menu

Menu


Dynamiska rapporter med rapportmotor

Ämnesverktyg Visningsalternativ
Oläst 2010-05-16, 18:19 #1
qson qson är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Sep 2006
Inlägg: 513
qson qson är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Sep 2006
Inlägg: 513
Standard Dynamiska rapporter med rapportmotor

Hej!
Håller på med ett "statistik"-verktyg (webbapplikation) som kommer generera dynamiska rapporter (t.ex. mha. BIRT eller Crystal Reports). Har dock ett tankeproblem vad gäller detta:
Den mesta av informationen finns i en databas så där är det ju inga problem med koppling till rapporterna, men viss data genereras/beräknas av PHP.

Exempel:
Har en tabell med bokningar (något förenklat):
PHP-kod:
Bokn.nr         Namn                Ankomst         Avresa          Antal personer
12345           Anders Andersson    2010
-06-20      2010-06-25      2
12347           Bertil Bertilsson   2010
-06-18      2010-06-22      3
12349           Cecilia Caesarson   2010
-06-23      2010-06-28      1 
Den statistik jag vill ha fram är antal personer "dag för dag", vilket utifrån ovanstående skall bli följande:
PHP-kod:
Datum           Antal bokningar     Antal personer      (Kommentar)
2010-06-18      1                   3                   (12347)
2010-06-19      1                   3                   (12347)
2010-06-20      2                   5                   (12347+12345)
2010-06-21      2                   5                   (12347+12345)
2010-06-22      2                   5                   (12347+12345)
2010-06-23      1                   2                   (12345)
2010-06-24      2                   3                   (12345+12349)
2010-06-25      2                   3                   (12345+12349)
2010-06-26      1                   1                   (12349
Denna data skall ligga till grund för rapporten.

Frågan är hur denna data skall lagras för att vara tillgänglig i rapporten?
Skall jag skapa en ny tabell (Temp) i databasen och lagra infon där?
Hur länge skall den då ligga där? Dessutom ändrar sig dessa siffror efter hand så de måste räknas om vid varje visning.

Tänker jag fel?
qson är inte uppkopplad   Svara med citatSvara med citat
Oläst 2010-05-16, 18:35 #2
KarlRoos KarlRoos är inte uppkopplad
Har WN som tidsfördriv
 
Reg.datum: Jul 2007
Inlägg: 1 416
KarlRoos KarlRoos är inte uppkopplad
Har WN som tidsfördriv
 
Reg.datum: Jul 2007
Inlägg: 1 416
1. Hämta alla rader mellan de datumen du vill få en rapport för och sortera dem i datumordning.
2. Loopa igenom dessa och spara dem i en array:

Kod:
$array = array();
while($item = mysql_fetch_assoc()){

  if(isset($array[$item['date']]){
    $array[$item['date']]['num_bookings']++;
    $array[$item['date']]['num_people'] = $array[$item['date']]['num_people'] + $item['num_people'];
    $array[$item['date']]['comment'][] = $item['booking_no'];
  }
  else{
    $array[$item['date']] = array(
    'num_bookings' => 1,
    'num_people' => $item['num_people'],
    'comment' => array($item['booking_no'])
  );
  }
}
3. Dra en print_r() på $array så skall du se att du har all data som du behöver.

OBS. ingen aning om koden fungerar, skrev den här direkt i fältet. Hoppas att den är någorlunda självförklarande ändå.
KarlRoos är inte uppkopplad   Svara med citatSvara med citat
Oläst 2010-05-17, 09:28 #3
qson qson är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Sep 2006
Inlägg: 513
qson qson är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Sep 2006
Inlägg: 513
Jo, den koden har jag och den fungerar.
Mitt PHP-skript hämtar och behandlar datan som jag beskriver ovan. Min fråga är hur jag skickar detta till rapporten (som normalt läser ur databas/tabell).

För tillfället genererar PHP en HTML-tabell som presenterar detta, men jag skall gå över till att använda en rapportgenerator (t.ex. BIRT eller Crystal Reports) och behöver då veta hur jag får datan dit.
qson är inte uppkopplad   Svara med citatSvara med citat
Oläst 2010-05-19, 14:29 #4
Conny Westh Conny Westh är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Aug 2005
Inlägg: 5 166
Conny Westh Conny Westh är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Aug 2005
Inlägg: 5 166
Du bör lösa detta med "GROUP BY" i SQL

Jag vet inte hur din tabell är organiserad men en gissning skulle bli

Kod:
SELECT *
FROM
(
    SELECT [Datum],Sum([Antal bokningar]) AS [Antal bokningar],Sum([Antal personer]) AS [Antal personer]
    FROM Tab2
    GROUP BY [Datum],[Antal bokningar],[Antal personer]
) AS Tab1
Ungefär något sånt....
Conny Westh är inte uppkopplad   Svara med citatSvara med citat
Oläst 2010-05-19, 16:11 #5
qson qson är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Sep 2006
Inlägg: 513
qson qson är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Sep 2006
Inlägg: 513
Ja, det hade varit fint att lösa det så. Tror dock inte att SQL klarar det. I mitt första inlägg visas hur min tabell ser ut, och hur jag vill omvandla den:

PHP-kod:
Bokn.nr         Namn                Ankomst         Avresa          Antal personer
12345           Anders Andersson    2010
-06-20      2010-06-25      2
12347           Bertil Bertilsson   2010
-06-18      2010-06-22      3
12349           Cecilia Caesarson   2010
-06-23      2010-06-28      1 
Resultatet jag vill åt:
PHP-kod:
Datum           Antal bokningar     Antal personer      (Kommentar)
2010-06-18      1                   3                   (12347)
2010-06-19      1                   3                   (12347)
2010-06-20      2                   5                   (12347+12345)
2010-06-21      2                   5                   (12347+12345)
2010-06-22      2                   5                   (12347+12345)
2010-06-23      1                   2                   (12345)
2010-06-24      2                   3                   (12345+12349)
2010-06-25      2                   3                   (12345+12349)
2010-06-26      1                   1                   (12349
Alltså:
Jag har exempelvis en rad i min tabell:
PHP-kod:
12345           Anders Andersson    2010-06-20      2010-06-25      2 
Denna (enstaka bokning) omvandlas till:
PHP-kod:
Datum                        Antal personer
2010
-06-20                         2
2010
-06-21                         2
2010
-06-22                         2
2010
-06-23                         2
2010
-06-24                         2
2010
-06-25                         2 
Samma sak görs för varje bokning. Sedan summeras datumen för sig (antal personer, antal bokningar osv). Nu har jag istället en lista med datum istället för en lista med bokningar.
qson är inte uppkopplad   Svara med citatSvara med citat
Svara


Aktiva användare som för närvarande tittar på det här ämnet: 1 (0 medlemmar och 1 gäster)
 

Regler för att posta
Du får inte posta nya ämnen
Du får inte posta svar
Du får inte posta bifogade filer
Du får inte redigera dina inlägg

BB-kod är
Smilies är
[IMG]-kod är
HTML-kod är av

Forumhopp


Alla tider är GMT +2. Klockan är nu 11:05.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson
 
Copyright © 2017