Mailinglisten-Archive |
Hallo Andreas,
danke fuer Deine Ausfuehrungen.
Das scheint mir allerdings ein wenig sehr kompliziert, zumal mein Provider
die
PHPLIB nicht installiert hat.
Eine Idee:
reicht es aus, wenn ich mir die db_mysql.inc aus der Lib besorge und sie
in das Verzeichnis lege ?
> <?php
> require( "db_mysql.inc" ); // wir arbeiten mit mySQL
>
> // dann implementieren wir eine nette Unterklasse, die
> // ueber unsere Datenbank alles notwendige weiss.
> // (das macht man mit der phplib immer so ...)
>
> class simslDB extends DB_Sql
> {
> var $Host = 'deinDatenbankhost';
> var $Database = 'deineDatenbank';
> var $User = 'deinDBUser';
> var $Password = 'deinDBPasswort';
>
> function
eOptionArray(
> $sql, // SQL-Statement zum Lesen der Optionen
> $calValue, // Spaltenname fuer den 'value' der Optionen
> $colOption, // Spaltenname fuer die 'option' der Optionen
> $nothingEntry = false, // soll eine Default-Auswahl am Anfang
> // der Auswahlliste auftauchen?
> $nothingValue = "0", // Default-Defaultwert
> $nothingOption = "-- unbestimmt --" // Default-Defaultoption
> )
> {
> $theOptions = array();
>
> $dbres = $this->query( $sql );
>
> if( $nothingEntry ){
> $theOptions[] = array( "value" => "$nothingValue",
> "label" => "$nothingOption" );
> }
>
> while( $this->next_record() ){
> $theOptions[] = array( "value" => $this->f( $colValue ),
> "label" => $this->f( $colOption ) );
> }
>
> return $theOptions;
>
> } // makeOptionArray
>
> } // class simslDB
>
>
> An anderer Stelle reicht mir dann durch die Benutzung der
> oohForm-Klassen folgender Code fuer eine DB-basierte Auswahlliste:
>
> class simslSearch
> {
> [ ... ]
>
> var $sf; // ein Fo
rmularobjekt
> var $db; // meine Datenbank-Objekt, ... wird an passender
> // Stelle initialisiert ...
>
> function buildForm()
> {
> $this->sf = new form;
>
> // ... so fuegt man einem OOHFormular ein neues Element
> // hinzu ...
>
> // erzeuge eine Dropdown-Auswahlliste aller Orte
> $this->sf->add_element(
> array(
> "name" => "sf_ort", // Name des Form-Elements
> "type" => "select", // ein Auswahl-Element
> // Dropdown oder Listbox
> "size" => "1", // aha, das wird eine
Dropdown-Liste
> "options" =>
> $this->db->makeOptionArray(
> "SELECT DISTINCT ortId, ortName
> FROM smlOrte ORDER BY ortname",
> "ortId", "ortName", "true",
> "0", "-- ganzes Muensterland --" ),
> "value" => $this->getFromSession( "sf_ort" ) ) );
> [ ... ]
>
>
> } // buildForm
>
>
> [ ... ]
>
>
> function showForm()
> {
> [ ...]
>
> $this->sf->show_element( "sf_ort" );
>
> [ ...]
> } // showForm
>
> } // class simslSearch
>
> Der erzeugte HTML-Code fuer die Dropdown-Liste sieht dann ca. so aus:
>
> <select name="sf_ort" size="1">
> <option value="0">-- Münsterland --
> <option value="1">Ahaus-Graes
> <option value="2">Altenberge
> <option value="3">Beelen
> <option value="4">Billerbeck
> <option value="5">Billerbeck-Beerlage
> <option value="6">Borken
> </select>
>
> Das war jetzt ziemlich radikal zusammengeschnippselt und die Verwendung
> diverser 'Dritt-Bibliotheken' (eigentlich ist es ja nur die phplib) mag
> auf den ersten Blick abschrecken, ... aber meiner Erfahrung nach lohnt
> sich die Einarbeitung, ...
>
> > Aber ich komme nicht drauf wie das geht, obwohl es wahrscheinlich
> > wieder ganz einfach zu realisieren ist....
> stimmt. ;)
>
> Selbst, wenn Du es ganz 'manuell' zusammenbaust, musst Du doch
> eigentlich nur darauf achten, dass Du die Datenbank-Daten an die
> richtige Stelle des erzeugten HTML-Codes einsetzt.
> Wie HTML-Code fuer ein 'select'-Element aussehen kann, siehst Du ja
> oben.
> So wie meine Methode 'makeOptionArray' das Array mit den
> 'value'/'label'-Paaren aufbaut, koennte Deine Funktion auch direkt das
> passende HTML erzeugen ...
Liebe Gruesse,
wolf
php::bar PHP Wiki - Listenarchive