Mailinglisten-Archive |
http://phplib.shonline.de/showroom/sqlquery.phps
Der Code ist ein wenig unsauber, aber er tut. Die wichtigen
Elemente sind hier die Instanzen von SQL-Query $q und Table $t.
Die Table wird zur Ausgabe der Ergebnisse verwendet und ist
transient. Die Sql_Query wird dagegen beim Session-Management
registriert, damit sie sich ihren Zustand merkt:
$sess->register( "q");
$db = new DB_Poe;
$t = new Table;
$t->heading = "on";
Weiter unten checken wir dann, ob $q bereits existiert. Wenn
nein, wird es angelegt und initialisiert (so etwas gehört
eigentlich in eine setup.inc...):
if (!isset($q)) {
$q = new Sql_Query;
$q->translate = "on";
$q->container = "on";
$q->conditions = 1;
$q->variable = "on";
$q->lang = "en";
}
Das Formular soll einen Haufen Variablen enthalten, die alle
"x[...]" heißen sollen. Die Übersetzung von SQL-Spaltennamen in
Selectfelder wird im Hash $field vorgenommen und alles generierte
HTML soll "class=query" für das Stylesheet erhalten:
$q->form( "x", $field, "query");
Wenn das Formular submitted wird, kann aus den Werten von $x[]
ein Query-String erzeugt werden:
if (isset($x)) {
$query = $q->where( "x", 1);
}
Und wenn wir einen solchen String haben , dann kann die Query
auch abgefahren werden:
if ($query) {
printf( "Query Condition = %s<br>\n", $query);
$db->query( "select * from active_sessions
where ". $query . " order by changed desc");
printf( "Query Results = %s<br>\n", $db->num_rows());
Das Ergebnis der Query wird von dem Datenbankobjekt $db verwaltet
und kann direkt an die Table-Klasse übergeben werden:
$t->show_result($db, "test");
}
Naja, PHPLIB eben, weil es weniger Schmerzen macht.
Kristian
--
Kristian Köhntopp, NetUSE Kommunikationstechnologie GmbH
Siemenswall, D-24107 Kiel, Germany, +49 431 386 436 00
Using PHP3? See our web development library at
http://phplib.shonline.de/ (GPL)
php::bar PHP Wiki - Listenarchive