In meinen Augen gibt es kaum etwas lästigeres als SQL-Befehle zu schreiben. Abgesehen von den ewig gleichen Code-Teilen, um die eigentliche Abfrage durchzuführen.
< ?php $sql = "SELECT id,name,whatever FROM $sometable WHERE foo like 'bar'";
$qry = mysql_query($sql);
while ($row = mysql_fetch_object($qry) ) {
doSomethingWith($row);
} ?>
Wäre es nicht viel schöner wenn man sich diesen ganzen Kram sparen könnte?
Ich hatte schon seit einiger Zeit eine Klasse rumliegen (
klingt irgendwie lustig) die mir einen Container für die ganzen MySQL-Funktionen von PHP geliefert hat. Bis dato aber eigentlich nutzlos, weil das direkte aufrufen von mysql_query(); den gleichen Effekt hatte wie
mysql->query();
Zuerst habe ich versucht mit einer Funktion mir die Arbeit zu erleichtern, das Ergebnis tat seinen Zweck stellte mich aber nicht wirklich zufrieden. Was vielleicht auch an der Funktion lag
.
Ich glaube es war das RoR-Framework, welches mir die Idee für die DBObjects geliefert habe. Ich wollte eine Klasse haben, die mir all das nervige Schreiben von SQL-Befehlen abnimmt.
Es hat ein wenig gedauert bis alles so lief wie ich es wollte, aber jetzt funktioniert es reibungslos. (Okay, ich bin auch dauernd am hinzufügen von neuen Funktionen, die mir bis jetzt gefehlt haben)
Im Prinzip lassen sich die Abfragen jetzt mit einer einzigen Zeile Code bewerkstelligen.
$news = new DBObject("news",4);
Das Beispiel würde eine Abfrage auf die Tabelle “news” machen und den Datensatz mit der id 4 lesen.
Genauso einfach lassen sich auch neue Elemente einfügen
< ?php $news = new DBObject("news",array("title"=>"NEWS!!!","text"=>"some text here") );
$news->insert();
?>
Die DBOBjects enthalten neben der Basisklasse noch:
- DBList – Zur Abfrage von mehreren Datensätzen
- DBJoinlist – Zur Abfrage von mehreren Datensätzen mit Verknüpfungen
- DBEditor – Zur Erstellung von Formularen für die Datensatzmanipulation.
Genaure Beschreibungen der einzelnen Klassen finden sich auf den Unterseiten.
dbobjects.zip (13.2 KiB, 701 Zugriffe)
Damit die DBObjects funktionieren mussen die Klasse simplelist vorhanden sein. Der DBEditor benötigt zusätzlich noch form.