
Hallo Jürgen, wir haben auch schon ein paar Listen für die Agents erstellt. Hier die Datenbank-Abfrage in PhP-Code : /** * Document::gen_agent_list() * * { Erstellt die eigentliche Abrechnung für einen Agent für einen * bestimmten Zeitraum } * * @param [String] $agent_id * @param [String] $jahr * @param [String] $monat * @return $agent_list -> Multidimensionales Array mit den Informationen * fuer die Erzeugung der Accountig-Informationen * des Agents. */ function gen_agent_list($agent_id, $jahr, $monat) { $agent_name = get_agent_from_id($agent_id); $conn = do_connect(); /* Performing SQL query */ /* hier wirds kniffelig. Zuerst muss ein MySQL konformes Anfangs und End-Datum erzeugt werden. [yyyy-MM-DD HH:MM:SS] */ $begin_date = date("Y-m-d H:i:s", mktime(0,0,0,$monat,1,$jahr)); $end_date = date("Y-m-d H:i:s", mktime(0,0,0,$monat+1,1,$jahr)); /* fuer die Agent Liste werden nur Datum, Kundennummer und die Stunden benoetigt */ $query = "SELECT time_accounting.create_time, time_accounting.time_unit,ticket.customer_id, ticket.tn, ticket.id "; $query = $query." FROM time_accounting,ticket where (time_accounting.create_by='$agent_id') AND (time_accounting.create_time>'$begin_date')"; $query = $query." AND (time_accounting.create_time<'$end_date') AND (ticket.id=time_accounting.ticket_id)"; $query = $query." ORDER BY ticket.customer_id, LEFT(time_accounting.create_time,10)"; $result = mysql_query($query) or die("Datenbankabfrage ist fehlgeschlagen!"); /* */ while ($line = mysql_fetch_array($result, MYSQL_ASSOC)) { $datum = date( "d.m.Y", strtotime ($line['create_time'])); $time_unit = $line['time_unit']/60; $kunden_nummer = $line['customer_id']; $ticket_number = $line['tn']; $ticket_id = $line['id']; $agent_list[] = array($datum, $kunden_nummer, $ticket_number, $time_unit, $ticket_id); } /* Free resultset */ mysql_free_result($result); /* Closing connection */ mysql_close($conn); return $agent_list; } Angezeigt wird die Liste hiermit : if (session_id_valid($_COOKIE['Session']) != TRUE) { die ("Ihre Session-ID ist ungültig. Login nur über Agent-Oberfläche möglich<br>"); } $agent_id = $_POST['Agent']; $jahr = $_POST['Jahr']; $monat = $_POST['Monat']; $agent_name = get_agent_from_id($agent_id); printf ("<center><H2>Auswertung für %s</h2></center>", $agent_name); $agent_list = gen_agent_list($agent_id, $jahr, $monat); gen_HTML_table($agent_list, "Liste aller Wartungs- und Servicetätigkeiten" ); function gen_HTML_table( $agent_list, $ueberschrift ) { $gesamt_stunden = 0; /* Summenzähler für die Gesamtstunden */ $stunden_pro_tag_pro_kunde = 0; /* Summenzähler für die Stunden pro Tag pro Kunde */ $datum = "nix"; /* Zwischenspeicher um den Datumswechsel zu erkennen, * Vorbelegt mit "nix" um die Erkennung des ersten Durchlaufs * zu erleichtern */ $customer_id = "nix"; /* Zwischenspeicher um den Wechsel des Custumers zu erkennen */ print "<center>"; printf ("
$ueberschrift</td></tr>"; print "<th>Kunden-Nummer</th><th>Datum </th><th>Ticket #</th>\n"; print "<th>Stunden</th>\n"; /* Überpruefen, ob dieses Array gefüllt ist. Wenn nein, wird in das Stunden-Feld "keine" eingetragen */ if (sizeof($agent_list) < 1) { printf ("<tr>\n"); printf ("<td> </td><td> </td><td> </td>"); printf (" | Keine </td>\n"); printf ("</tr>\n"); } else { foreach ($agent_list as $one_line) { $gesamt_stunden = $gesamt_stunden + $one_line[3]; /* Es folgt die Gruppierung pro Kunde pro Tag, das angelieferte Array muss vorsortiert sein, damit ein Gruppenwechsel erkannt werden kann */ if ((($datum == $one_line[0]) AND ($customer_id == $one_line[1])) OR ($datum == "nix")) { /* Erster Durchlauf, oder gleicher Kunde gleicher Tag */ $stunden_pro_tag_pro_kunde = $stunden_pro_tag_pro_kunde + $one_line[3]; } else /* Neuer Kunde, oder neuer Tag */ { /* Ausgeben der Zwischensumme pro Kunde pro Tag*/ printf ("<tr> | Stunden</td> | %01.2f</td></tr>",$stunden_pro_tag_pro_kunde) ; $stunden_pro_tag_pro_kunde = $one_line[3]; } $datum = $one_line[0]; $customer_id = $one_line[1]; printf ("<tr>\n"); printf (" | %s</td>\n",$one_line[1]); /* Kunde */ printf (" | %s</td>\n",$one_line[0]); /* Datum */ printf (" | %s</a></td>\n",$one_line[4],$one_line[2]); /* Ticket # */ printf (" | %01.2f</td>\n", $one_line[3]); /* Aufwand */ printf ("</tr>\n"); } } /* Ausgeben der Zwischensumme pro Kunde pro Tag*/ printf ("<tr> | Stunden</td> | %01.2f</td></tr>",$stunden_pro_tag_pro_kunde) ; /* Ausgeben der Gesamtstunden des Monats */ printf ("<tr> | Gesamtstunden</td> | %01.2f</td></tr>",$gesamt_stunden) ;
print "</table>\n";
print "</center>";
print "<br><br><br>";
}
Gruss
Tomas
cimt ag
------------------------------------------------------------------------
Unter den Eichen 128 - 12203 Berlin
fon: +49.30.834098-0 fax: -22
mobil: +49.178.7270777
email: Tomas.Mueller@cimt-ag.de
http://www.cimt-ag.de
7911
Age (days ago)
7911
Last active (days ago)
0 comments
1 participants
participants (1)
|