Array zu DropDown mit Spalten ?
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
abstand
angezeigten text
array
ausgabe
bezeichnung
code
datum
einfacher text
ergebnis
fehlende zeichen
festlegen
gehabt code
quellcode
spalten
text
unterschied
unterschiedliche zeichen
vereinfachung
vorgehen
zeile
-
Hallo
wie kann ich ein DropDown Formular machen,
bei dem im angezeigten Text einzelner <option> Elemente
nicht nur einfacher Text, sondern als Spalten (2 Werte) agezeigt werden.
Beispiel Daten:
$daten = array( 'a' => array ( 'Text1', '14' ), 'b' => array ( 'Text2 blablabla', '257' ), 'c' => array ( 'Text3', '74' ), 'd' => array ( 'Text4 Bezeichnung', '361' ), );
Ausgabe Daten:
echo " <select name=\"auswahl\">\n"; $abstand = ' '; foreach($daten as $key=>$val) { echo " <option value=\"".$key."\"> ".$val[0]." ".$abstand." ".$val[1]." </option>\n"; } echo " </select>\n";
damit es - ähnlich wie bei Tabelle - Spalten / gleichbleibende Abstände hat
INFO: habe die
durch einfache Leerzeichen ersetzt,
damit man den Unterschied auch "sehen" kann ...
und ... der $key kann auch unterschiedliche Zeichen-Anzahl haben
hier zur Vereinfachung mal nur mit a,b,c,d (damit das Problem "optisch" besser darstellbar ist)
... nicht so:
<select name="auswahl"> <option value="a"> Text1 14 </option> <option value="b"> Text2 blablabla 257 </option> <option value="c"> Text3 74 </option> <option value="d"> Text4 Bezeichniúng 361 </option> </select>
... sondern so:
<select name="auswahl"> <option value="a"> Text1 14 </option> <option value="b"> Text2 blablabla 257 </option> <option value="c"> Text3 74 </option> <option value="d"> Text4 Bezeichnung 361 </option> </select>
also quasie mit Spalten ... geht sowas?
es geht nicht um Abstände im Quellcode, sondern um Ausgabe (Anzeige im Browser)
klar ist:
Wenn ich es mit Leerzeichen machen würde, dann muss ich, damit das angezeigt wird,
anstatt einfache Leerzeichen ja "geschützes Leerzeichen"
verwenden.
aber wie bekomme ich je Element die passende Anzahl Leerzeichen,
... oder gibt es eine andere (bessere) Möglichkeit, den <option> Text mit Spalten auszugeben ?
evtl. mit CSS?
Beitrag zuletzt geändert: 2.10.2012 12:58:52 von erlebnis -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
ok, Danke
habe es mit str_pad() ausprobiert
und gemerkt, nur maximale Länge genügt nicht, ich brauche den Unterschied zur maximalen Länge
um den $abstand entsprechende Zeichen zu-zuweisen. ... siehe: $xinsert unten
... aber hat nicht ganz funktioniert,
weil ja auch noch die einzelnen Zeichen unterschiedliche Breite haben
... erst wenn ich CSS für die DropDown-Box mache:
select { font-family: "Courier New", Courier, mono; }
dann klappt es auch :) ...
hier nocmal der ganze (test) Code:
<?php // -------------------------------------------------------------------- $daten = array( 'a' => array ( 'Text1', '14' ), 'b' => array ( 'Text2 blablabla', '257' ), 'c' => array ( 'Text3', '74' ), 'd' => array ( 'Text4 Bezeichnung', '361' ), ); $maxlen = 0; foreach($daten as $val) { $val_len = strlen($val[0]); if ($val_len > $maxlen) { $maxlen = $val_len; } } $maxlen = ($maxlen+2); // ---- plus mindest-Abstand von 2 Leerzeichen --- $select_style = 'font-family: Courier, mono;'; echo " <select name=\"auswahl\" style=\"".$select_style."\">\n"; foreach($daten as $key=>$val) { $abstand = ' '; $val_len = strlen($val[0]); $xinsert = ($maxlen - $val_len); // ---- fehlende Zeichen bis $maxlen ---- // ----- str_pad() mit einfachem Leerzeichen, weil mehrere Zeichen hat ----- $abstand = str_pad($abstand, $xinsert, ' ', STR_PAD_LEFT); // ---- dann die einfachen Leerzeichen zu umwandeln ---- $abstand = str_replace(' ', ' ', $abstand); echo " <option value=\"".$key."\"> ".$val[0]." ".$abstand." ".$val[1]." </option>\n"; } echo " </select>\n"; // ----------------------------------------------------------------- ?>
Ergebnis: (passt)
<select name="auswahl" style="font-family: Courier, mono;"> <option value="a"> Text1 14 </option> <option value="b"> Text2 blablabla 257 </option> <option value="c"> Text3 74 </option> <option value="d"> Text4 Bezeichnung 361 </option> </select>
ohne das festlegen der Schriftart auf mono-space (mit CSS) gehts nicht,
weil sonst ja unterschiedliche Zeichen verschiedene Breite haben
... aber gibt es da keine andere Möglichkeit, so ein Dropdown mit Spalten im Text zu formatieren ?
Beitrag zuletzt geändert: 2.10.2012 13:02:11 von erlebnis -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage