FAQ |
Kalender |
2010-05-16, 18:19 | #1 | ||
|
|||
Mycket flitig postare
|
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:
PHP-kod:
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? |
||
Svara med citat |
2010-05-16, 18:35 | #2 | ||
|
|||
Har WN som tidsfördriv
|
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']) ); } } OBS. ingen aning om koden fungerar, skrev den här direkt i fältet. Hoppas att den är någorlunda självförklarande ändå. |
||
Svara med citat |
2010-05-17, 09:28 | #3 | ||
|
|||
Mycket flitig postare
|
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. |
||
Svara med citat |
2010-05-19, 14:29 | #4 | ||
|
|||
Klarade millennium-buggen
|
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 |
||
Svara med citat |
2010-05-19, 16:11 | #5 | ||
|
|||
Mycket flitig postare
|
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:
PHP-kod:
Jag har exempelvis en rad i min tabell: PHP-kod:
PHP-kod:
|
||
Svara med citat |
Svara |
|
|