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