8.2    Beispiel: Python-Script in PHP-Code umwandeln

Das folgende Beispiel stammt ebenfalls aus unserem beruflichen Alltag, ist aber etwas umfangreicher. Der Ausgangspunkt ist ein ca. 100 Zeilen langes Python-Script. Es liest eine Textdatei aus, die Datenbanknamen enthält. Das Script wertet dann über 100 gleichartige Datenbanken aus und erstellt eine statistische Zusammenfassung der Kundenaktivität. Das Ergebnis ist eine schwer zu lesende ASCII-Tabelle, die monatlich per Mail versendet wird.

Wir wollen daraus eine PHP-Seite machen, die jederzeit aufgerufen werden kann. Das Ergebnis soll als HTML-Tabelle dargestellt werden. Für die Code-Übersetzung haben wir ChatGPT 4o verwendet, alle weiteren Arbeiten haben wir in VS Code mit GitHub Copilot durchgeführt.

Wir konzentrieren uns bei diesem Beispiel auf die Erläuterung der Prompts. Auf den Abdruck des sehr projektspezifischen Codes in PHP bzw. Python haben wir verzichtet – er trägt nicht wirklich zum Verständnis der Vorgehensweise bei.

Prompt: I have a Python script which is run monthly to summarize account activity. I want to convert this script to PHP. The result is to be presented in an HTML table instead of ASCII. Can you help please?

(100 lines of Python code)

Certainly! Here’s how you can convert the provided Python script to PHP and modify it to present the result in an HTML table.

(170 lines of PHP code)

(more details, explanation, running the script)

Der resultierende Code macht auf den ersten Blick einen guten Eindruck. Wir haben aber zwei grundsätzliche Probleme:

Also bitten wir um Nachbesserung. Dazu markieren wir zuerst einen Code-Abschnitt. Der folgende Prompt bezieht sich auf den markierten Code. result ist eine im vorangehenden Code definierte Variable, die in einem Array die zuvor aus den Datenbanken ermittelten Daten enthält. Der markierte Code wertet diese Daten aus und macht daraus eine HTML-Tabelle.

Prompt: Could you convert this code into a function (with parameter $result) using echo to output?

Certainly! Here’s how you can convert the provided Python script to PHP and modify it to present the result in an HTML table.

(Entire code including the new function displayAccountActivitySummary …)

Auf dieser Basis kopieren wir den von ChatGPT generierten Code nach VS Code und führen dort diverse Anpassungen durch. Insbesondere verwenden wir für den Verbindungsaufbau zur MySQL-Datenbank eine Klasse, die in unserem PHP-Projekt für diesen Zweck schon zur Verfügung steht. In VS Code werden wir bei unseren Arbeiten von GitHub Copilot unterstützt.

Nur eine Viertelstunde nach Beginn der Arbeit können wir einen ersten Test durchführen, der prinzipiell zufriedenstellend verläuft. Die nächste Viertelstunde optimieren wir das HTML-Tabellenlayout, beschriften die Spalten besser und stellen der Tabelle eine Legende voraus. GitHub Copilot überrascht uns dabei mit beinahe hellseherischen Vorschlägen für die Texte, die wir mit minimalen Änderungen übernehmen.

Das Kriterium zur Sortierung der Ergebnisse hat ChatGPT unverändert vom Python-Script übernommen. Grundsätzlich funktioniert das, aber wir hätten gerne ein zweites Sortierkriterium. Mit der von ChatGPT eingesetzten PHP-Funktion usort haben wir aber wenig Erfahrung.

Prompt: PHP/usort: How do I sort using two criteria instead of one?

Eigentlich hatten wir eine allgemeingültige Antwort erwartet. Stattdessen antwortet ChatGPT mit einigen Zeilen Code, der als zweites Sortierkriterium genau das Attribut der Ergebnisse verwendet, an die wir ohnehin gedacht hatten. Der Code macht ohne weitere Änderungen, was wir beabsichtigt, aber nicht ausgesprochen haben. Das ist fast schon unheimlich.

Fazit

Der hier präsentierte Weg zu einem neuen PHP-Script ist geradezu ein Musterbeispiel, wie gut KI-Tools manchmal funktionieren. Wir waren selbst überrascht, wie schnell wir zum Ziel kamen. Bevor Sie jetzt einwenden, das sei ein konstruiertes Beispiel, wollen wir betonen: Die hier skizzierten Arbeiten haben wir für ein Projekt durchgeführt, das nichts mit diesem Buch zu tun hat. Auf die Idee, die Prompts in diesem Kapitel zu präsentieren, sind wir erst im Anschluss gekommen. Das Beispiel stammt also eins zu eins aus unserer beruflichen Praxis.