====== HTML-Tags mit DOM erstellen ======
Mit der folgenden Funktion kann aus einem Array eine HTML-Auswahl-Liste erzeugt werden.
function getSelector( $entries, $parameter = array(), $firstEntry = "", $selEntry = "", $noEntriesMessage = "" )
{
$doc = new DOMDocument( '1.0' ); // neues DOM-Objekt erstellen
$doc->formatOutput = true; // Zeilenumbrüche hinzufügen
$sel = $doc->appendChild( $doc->createElement( 'select' ) );
if( count( $parameter ) > 0 ) // wenn Parameter übergeben wurden
{
foreach( $parameter as $att=>$val )
$sel->setAttribute( $att, $val ); // Parameter zum "select" hinzufügen
}
if( count( $entries) > 0) { // wenn Daten übergeben wurden
if( !empty( $firstEntry ) ) { // wenn ein "erster Eintrag" übergeben wurde
$opt = $sel->appendChild( $doc->createElement('option') );
$opt->appendChild( $doc->createTextNode( $firstEntry ) );
$opt->setAttribute( "value", "-1" );
$opt->setAttribute( "selected", "" );
}
foreach( $entries as $key=>$val ) { // Einträge ins DOM-Objekt übernehmen
$opt = $sel->appendChild( $doc->createElement('option') );
$opt->appendChild( $doc->createTextNode( $val ) );
$opt->setAttribute( "value", $key );
if( empty( $firstEntry ) & $key == $selEntry )
$opt->setAttribute( "selected", "" ); // vorausgewählten Eintrag setzen
}
}
else // wenn keine Daten übergeben wurden
{
$opt = $sel->appendChild( $doc->createElement( 'option' ) );
$opt->appendChild( $doc->createTextNode( $noEntriesMessage ) );
}
return $doc->saveHTML(); // DOM-Objekt als HTML ausgeben
}
**Anwendungsbeispiel für die Funktion getSelector:**
$parameter = array( "name" => "car", "id" => "Automarke", "class" => "mySelector");
$entries[] = "BMW";
$entries[] = "Ford";
$entries[] = "VW";
echo getSelector( $entries, $parameter, "Lieblings-Marke aussuchen:" );
Mit dem Parameter "selEntry" besteht die Möglichkeit, den Key eines Elements zu übergeben, welches vorausgewählt sein soll, sofern kein "firstEntry" übergeben wurde. Ist der Parameter "firstEntry" nicht leer, wird immer dieser vorausgewählt.
Beispiel:
$Kunden = array();
$Kunden[1] = "Meier";
$Kunden[2] = "Koch";
$Kunden[3] = "Schmidt";
echo getSelector( $Kunden, array(), "", "2", "keine Kunden gefunden" );