Seiten

Donnerstag, 10. März 2011

PHP und CSS

Gestern habe ich mich mit dem Ticketauswertungstool befasst. Dabei werden nicht nur einhaufen Daten aus der Datenbank abgefragt, sondern auch mehrere Tabellen mit vielen Einträgen, Zeilen und Spaletn generiert.


Um diese Tabellen, die über den Browser ausgegeben werden dem Auge etwas angenehmer zu gestalten nutzte ich css, die Cascading Style Sheets. Diese bieten eine einfache, und vor allem elegante Möglichkeit um Html und Tabellen zu Formatieren.

Zuerst war klar, die Leserlichket wird durch eine Seriefenlose Schrift verbessert und die allgemeine Optik auch. Also ein css - file erstellt und mit dem * - Selektor eine Klasse gebaut. Dieser Selektor wählt alle Elemente der Seite aus. Hier das Ergebnis:


* {
font-family: "Arial" , sans-serif ;
}


so, das wäre geschafft. Nun muss noch dieser eklige Doppelrahmen fort. Das erledigt:


table {
table-layout:auto;
border-collapse:collapse;
border-color: white;
}


damit verschwinden die Ränder der Table und alles schrumpft etwas zusammen. Allerdings verlieren die Einträge auch an Struktur. Was steht denn nun in welcher Zeile? - Egal kümmern wir uns erst einmal um die Überschriften, also die Table Header:


th {
background-color: cc0033;
color: white
}


so. Nun haben wir einen guten Kontrast und die Farben sind ja die Gleichen wie bei DocCheck!

Ok, bleibt nur noch das Problem mit den schlecht leserlichen Zeilen. Auf Bus - und Zugfahrplänen sind die Zeilen oft in verschiedenen Farben dargestellt. Spart platz und sieht eigentlich ganz ok aus, aber wie macht man das mit PHP?

Der PHP code erzeugt das HTML dynamisch. so auch die zeilen der Tabelle. Natürlich wird nicht jede Zeile vorher Implementiert, also muss man es anders machen:


Zuerst 2 css Klassen Schreiben:


.row_0 {
background-color: #FFFFFF;
}

.row_1 {
background-color: #E1E8F1;
}


dann muss vor der Erzeugung der Tabelle noch etwas PHP-Code her:


$bg = 0;

if($it % 2 == 0){
$bg = 1;
}

else {
$bg = 0;
}

so, jetzt muss die Variable $it nach jeder geschriebenen Zeile inkrementiert werden!

$it++;

so. Nun nur noch die Tags angepasst:

echo "";

und schon werden die einzelnen Zeilen unterschiedlich eingefärbt!
Nun sind sie leserlich, platzsparend und sehen sogar noch schick aus.

Mittwoch, 9. März 2011

PHP und SQL

Heute habe ich mich damit beschäftigt das Ticketauswertungstool, welches mein Ausbilder großteils fertig gestellt hat zuende zu führen und dessen erscheinung so zu formatieren, das man die Zahlreichen Zeilen und spalten angenehm lesen und möglichst schnell finden kann. Geschrieben ist das ganze Tool als ein einziges, aus mehreren Dokumenten bestehendes PHP-File.

Es werden haufenweise Datenbankabfragen gemacht, die sich wiederholen, und bei denen sich nur wenige Kleinigkeiten ändern ( z.B.: eine Spaltenbezeichnung ). Um die Wiederholungen nach Möglichkeit zu automatisieren wurde die Möglichkeit genutzt, den SQL - Code, der inform einer String - Variablen an die Klasse übergeben wird, welche die Datenbankabfrage ausführt, stückchenweise während der Ausführung zusammenzubauen.

Es kommen also desöfteren Variablen vor die so aussehen:
$query = "SELECT from".$tabelle1.",".$tabelle2." ´dieseSpalte´";
Während der Laufzeit kommen dann in diese $query-Variable viele verschiedene Quellen rein und ebensoviele Abfragen werden gemacht, ohne jedes mal den kompletten SQL-Code schreiben zu müssen.

Die Variable wird dann als Parameter an die mysql_query($query) übergeben, und wenn man alles richtig gemacht hat bekommt man von der MySQL-Datenbank genau die angefragten Werte zurück. Wenn nicht, dann gibts einen SQL-Error ^^.

Allerdings gab es im Code einen Fehler, der dann doch etwas mehr Programmier, bzw Schreibarbeit verlangte. Durch die Verkürzung konnte ein Wert nichtmehr unabhängig ausgelesen werden. Ich habe dann für alle Fälle den entsprechenden Code ausgeschrieben. Dies ging allerdings nur mit Vorsicht, da gerade große und einfache Codeteile zum Kopieren und Umschreiben einladen. Und wenn man etwas übersieht wird die Fehlersuche schwierig.

Montag, 7. März 2011

Montag der Prozesse und Gutscheine

Heute verbrachte ich den größten Teil des Tages damit den Prozess unserer Auftragserfassung mit Aris Express zu modellieren. Es ist ein relativ komplexer Vorgang mit vielen möglichen Verzweigungen und noch mehr Handgriffen, die alle aufgenommen werden müssen. Aris Express  bietet hierfür eine Modell der Ereignisgestuerten Prozesskette und ein leicht verständliches und einfach zu bedienendes Interface, welches mir ermöglichte die Sache so schnell und effizient umzusetzen, dass ich heute den Punkt erreichen konnte, das nur noch Korrekturen zu machen sind.

Zur Auftragserfassung wird speziell für unseren Betrieb geschriebene Software verwendet, somit wird diese Beschreibung wohl kaum für andere Betriebe nutzen. Sollte ein Umstieg unsererseits stattfinden werde ich hier häufige Vorgänge die ich modelliert habe veröffentlichen.

Den übrigen Teil des Tages habe ich für die vor kurzem ausgelaufene Stammkundenaktion einige Gutscheine versendet. Die Idee hierbei war, dass jeder Kunde, welcher in das Mitteilungsfeld der Bestellung das Wort "Stammkunde" eingibt, einen Gutschein über 10 Euro erhält. Dieser Gutschein hat einen Mindestbestellwert von 100 Euro. Wird der Gutschein wärend der Aktion eingelöst erhält der Kunde einen weiteren Gutschein mit dem Wert von 20 Euro über einen Bestellwert von 150 Euro. So setzt sich das ganze dann fort. Ein steigender Gutscheinwert bei jeder Bestellung.

Das von uns hierfür eingesetzte Tool OTRS zu Ticketbearbeitung ist jedoch aufgrund seiner fehlenden Vorlagenfunktion nicht optimal für die manuelle Massenversendung von Gutschein -Emails geeignet. Deswegen war das Versenden etwas schwerfällig.

Freitag, 4. März 2011

Auswertungstool der XML Daten und Schule

Dieser Freitag bestand für mich auch Unterricht und der darauffolgenden Ausarbeitung für die Datenbank und der darin von uns erfassten Daten. Schulisch ging es zuerst um die Globalisierung, mit ihren Ursachen. genannt wurden untern anderen das Ende des Ost-West-Konfliktes, und die Weiterentwicklung der Kommunikationstechnologie. Auch die Riesigen wurden angesprochen. Danach wurde in ITS der elektrische Strom behandelt und die Stunde Betriebswirtschaftslehre danach klärte uns über Monopole, Polypole und Oligopole auf.

Nach dem Unterricht bin ich dann wieder in den Betrieb gefahren und habe mit meinem Ausbilder begonnen das XML - Tool mit dem ersten Auswertungs - Plugin zu erweitern. Bereits in der Datenbank enthaltene Daten sollten über einen Schlüssel mit einem weiteren Export, welcher über ein anderes Java Tool als .xls in die Datenbank eingespielt wurde abgeglichen werden. Dazu wurden zwei weitere Klassen geschrieben. Eine, welche den Vergleich vornimmt und eine weitere, welche die Vergleicherklasse instanziiert. Der Code bestand dann zum Schluß vorrangig aus SQL. Nachdem die Tests erfolgreich waren wurde der Aufruf in den Bereits bestehenden Timer eingebaut, denn die Auswertung soll ebenfalls zyklisch in einem gewissen Zeitraum und selbsttätig ausgeführt werden.

Die entstehenden Daten werden in die Datenbank in eine neue Table zurückgeschrieben und bleiben dort erhalten. Die Veränderung über einen größeren Zeitraum zu betrachten ist dabei von nicht unerheblichem Interesse. Die Auswertung bzw. Übertragung der Daten erfolgt noch (auf die Guttenberg-Art) , wird aber bei Zeiten entweder über den Browser, oder per Java erfolgen.

Donnerstag, 3. März 2011

Excel nach SQL mit JAVA

Wenn mann mit Datenbanken arbeitet kommt es öfter vor, dass mann verschiedene Datenquellen hat die man aber trotzdem automatisiert auswerten möchte. Hierfür ist es wichtig, dass man die Daten ersteinmal in einem einheitlichen System, wie zu Bespiel einer SQL - Datenbak hat, damit die Anbindung per Software einfacher und schneller von statten geht. Selbstverständlich ist es auch möglich mit den unterschiedlichsten Formaten zu arbeiten, allerdings wirds dann kompliziert, wenn sich Strukturen oder Verzeichnisse ändern, oder wenn einfach mal Fehler auftauchen und man nicht ausschließen kann, das diese nicht beim Datenimport entstanden sind.

Zuerst haben wir uns mit der Übertragung von XML nach SQL beschäftigt, nun war auch Ecxel und sein .xls Dateiformat dran. Auch heirfür gibt es, genau wie bei XML auch bereits vorgefertigte Bibliotheken, die man nur einbauen muss um dann sofort die Möglichkeiten nutzen zu können.

Hier wird zunächst ein neues Workbook erstellt. Die Klasse workbook, welche dann die xls öffnet kann dann über die Methode getSheet in einzelne Arbeitsblätter, welche in der Datei enthlaten sind aufgeteilt werden.
Also erzeugt man ein neues Sheet-Objekt und lädt diese dort hinein.
Einzelne Werte können dann methodisch reihen - und spaltenweise ausgelesen und mithilfe von SQL - Befehlen und PreparedStatement sowie ResultSet an die Datenbank übergeben werden.

CeBIT 2011

Ich gebe zu, ich berichte nun am ersten Tag in Folge von der CeBIT, da ich gestern einfach nicht mehr dazu gekommen bin.
Aufbruch war am Dienstag Abend um 21:25. Zuerst ging die Reise mit der S-Bahn nach Stuttgart, von dort aus mit dem Regionalexpress nach Karlsruhe und schließlich von dort aus innerhalb von 7 Stunden ab 23:18 nach Hannover.
Die Fahrt an sich schieb aber doch recht kurzweilig, und nach einem apathischen Frühstück und dem Umkleiden auf der Bahnhofstoilette ( Umkleiden für 1 €! so teuer wie noch nie ) begaben wir uns auf das Messe / Laatzen Gelände wo die CeBIT stattfindet. Durch den Südeingang betraten wir das Gelände gegen 9:30 kurz nach eröffnung und haben uns erstenmal auf dem Gelände und in den einzelnen Messehallen umgesehen.
Wir betraten also Halle 9, in der vor allem Forschung und Entwicklung ausgestellt wurden.

Das erste was mir ins Auge fiel war ein Modell eines GLONASS - Satteliten im Maßstab 1:1. Dieses russische Äquivalent zum Amerikanischen GPS und zum europäischen Galileo zeichnet sich durch eine hohe Verfügbarkeit des Signals auch an den Polen aus. Hier begegnete uns auch ein kleiner Roboter, den ma per Remote-Zugriff aus dem Internet über die Messe steuern und sich die Aussteller mithilfe der installierten Webcams anschauen konnte.

Ein weiteres Highligt war die Spieler - Halle, in der mehrere Turniere u.a. Starcraft II und Counterstrike ausgetragen wurden.
Ein großer Schwerpunkt waren auch 3D Darstellung und spezielle Bildschirme, allerdings waren Demonstrationseinheiten meistens belegt.
Das Ziel unserer kleinen Gruppe waren dann zumeist doch die Pavillions unserer Partner, an denen Wir von Neuerungen erfuhren, uns beraten ließen und den ein oder anderen Kaffee genossen.

Nach 9 anstrengenden Stunden  Fußmarsch konnten wir dann zurück auf den Bahnhof, wo wir noch eine Stunde in der Kälte ausharren und uns aufgrund einer Verspätung noch um unsere Anschlusszüge sorgen mussten.

Alles in allem war es zwar eine tolle Erfahrung, allerdings kann ich mich dem Urteil meiner Kollegen nur anschließen, dass die CeBIT doch einiges vom Glanze früherer Jahre verloren hat. Von einer der größten Elektronik und Software-Messen der Welt erwartet man eben nicht nur Masse, sondern auch Spektakel.
Leider war uns damit nun nicht wirklich gedient.
Nächstes Jahr wird es wohl keinen Besuch mehr geben.

Beeindruckend war auch der gewaltige Pavillion der deutschen Telekom. Die Installation sah aus wie ein riesenhaftes Modell aus Papier, so wie es Architekten verwenden. Ein faszinierendes Spiel aus Linien und Licht.
Leider mussten wir einige Stände missen, da die zuständigen Firmen nicht auf der Cebit vertreten waren. Darunter Intershop und, was wir am meisten bedauert haben, auch OXID.

Beeindruckend und gut besucht war der Pavillion der Firma Tobit, welcher wie eine Lounge ausgestattet war. Ganz in Schwarz und überdacht, versehen mit grünem Ambient-Light.

Dienstag, 1. März 2011

Neues Auswertungstool für die Tickets

Heute wurde ich vor vollendete Tatsachen gestellt.
Mein Ausbilder hat die Auswertung der Ticket - Bearbeitungszeiten aufs Korn genommen und ein feines kleines Werkzeug zur Auswertung geschrieben. Natürlich für den Browser und in diesem Fall logischerweise mit PHP.
Das Ergebnis sind 13 Klassen und am Ende eine hübsche tabellarische Auflistung der Bearbeitungszeiten des aktuellen - und des Vortages, sowie eine Gesamtübersicht.

Kern der Auswertung sind die durch das Java - Erfassungsprogramm aufgenommenen Daten, welche in eine Datenbank geschrieben werden. Gespeichert werden Bearbeiter, Bearbeitungsdauer, Kategorie und noch einige weitere Daten. Diese werden zur Auswertung dann herangezogen. Dargestellt werden die Bearbeitungszeiten nach den jeweiligen Kategorien in vier verschiedenen Tabellen.

Für die Einzelne Datenerfassung werden die hierfür benötigten werte mit SQL ausgelesen. Anschließend aufaddiert und in der entsprechenden Spalte ausgegeben.
Etwas problematisch und unelegant erscheint mir dabei immer die direkte Verbindung des lebendigen dynamischen PHP - Codes und dem Starren HTML.