phpbar.de logo

Mailinglisten-Archive

SQL_Query-Klasse
Archiv Mailingliste php_(at)_infosoc.uni-koeln.de

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

SQL_Query-Klasse




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)

Home | Main Index | Thread Index

php::bar PHP Wiki   -   Listenarchive