Mailinglisten-Archive |
Hallo, On Wed, Feb 09, 2000 at 01:25:24PM +0100, Wolfgang Steinhauer wrote: > > > Wie kann ich, z.B. eine Liste mit Kategoreien, in eine Listbox uebergeben, > > > um eine vernuenftige Auswahl zu realisieren ? > > Schleife machen, die > > die einzelnen Elemente in die Listbox reinschmeisst? > > (Wie das geht weisst du?) > Eben nicht, - stehe einfach daneben weil alle Versuche fehlschlagen. > Koennte mir jemand mal ein Code-Snipsel schicken ? na gut. ;) ... aber ich greife fuer solche Dinge eigentlich immer auf die Datenbank-Abstraktionen der phplib und die oohform-Klassen zurueck. (Sonst ist mir das einfach zuviel Handarbeit) > Irgendwer in dieser Liste hat so etwas schon mal gemacht und dann > in der ListBox selectierte Felder nmit einem Button geloescht. ... ohne die Seite neu zu laden? ... Das ist 'harter' Javascript-Einsatz. ... schudder, ... ne ne. Sowas mach ich nicht. > Ich brauche aber nur die Funktion, um Daten aus einem Table > in solch eine ListBox zu bekommen, um von dort aus den User > auswaehlen zu lassen, welche Kategorie er sehen moechte.... ok. Dann will ich mal losschnippseln. Die DB-Klassen der phplib sind wirklich nett. Also: <?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 makeOptionArray( $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 Formularobjekt 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 ... -Andreas -- : Anti-Spam Petition: http://www.politik-digital.de/spam/ : : PGP-Key: http://www.tse-online.de/~ab/public-key : : Key fingerprint: 12 13 EF BC 22 DD F4 B6 3C 25 C9 06 DC D3 45 9B :
php::bar PHP Wiki - Listenarchive