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