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