dynamisch gewähltes Dropdown

oki doki
ich werd mich mal versuchen:

PHP:
$items[1] = 'Bitte auswählen';
$items[2] = 'Limousine';
$items[3] = 'Kleinwagen';

sagt mir das hier die einzelnen dropdown felder festgelegt werden.

Das sagt mir:
PHP:
$selectedIndex = $_POST['fahrzeug'];
es wird der ausgewählte wert ausgelesen um dann mit $_POST weiter zu geben

PHP:
echo '<select class="select" size="1" name="fahrzeug">';
das ist jetzt die Ausgabe, sprich was in meinem Formular steht.

Und bei dem bin ich mir nicht sicher
Wäre super wenn du es erklären könntest
PHP:
    $selected = ($selectedIndex == $index) ? 'selected="selected"' : '';

    echo "<option value='{$index}' {$selected} >{$item}</option>\n";    
}
echo '</select>';
was klar ist ist das das die Ausgabe ist aber wie sie entsteht ist mir nicht ganz klar
 
PHP:
$selectedIndex = $_POST['fahrzeug'];
es wird der ausgewählte wert ausgelesen um dann mit $_POST weiter zu geben
Falsch. Der Wert wird aus $_POST (also das was aus dem Formular übergeben wurde) gelesen und für die spätere Verwendung in $selectedIndex übertragen

PHP:
   $selected = ($selectedIndex == $index) ? 'selected="selected"' : '';

    echo "<option value='{$index}' {$selected} >{$item}</option>\n";    
}
echo '</select>';
was klar ist ist das das die Ausgabe ist aber wie sie entsteht ist mir nicht ganz klar
Würd ich so auch nicht verstehen. Nehmen wir aber mal den ganzen Block:
PHP:
//Aus jedem Ientrag eine Ausgabe machen
foreach($items as $index => $item){
    //Prüfen ob es sich um den selektionierten Eintrag handelt. Wenn ja, 'selected' setzen
    $selected = ($selectedIndex == $index) ? 'selected="selected"' : '';
    //Eintrag ausgeben
    echo "<option value='{$index}' {$selected} >{$item}</option>\n";    
}

Beginnen wir damit:
PHP:
//Aus jedem Eintrag eine Ausgabe machen
foreach($items as $index => $item){
Also. mit foreach gehe ich alle Ienträge des Array $items durch. Dabei wird jedesmal der Index in $index gesetzt und der Text in $item.

Nun haben wir also die Daten für den Eintrag:
PHP:
    //Prüfen ob es sich um den selektionierten Eintrag handelt. Wenn ja, 'selected' setzen
    $selected = ($selectedIndex == $index) ? 'selected="selected"' : '';
Dabei prüfe ich, ob der Index des Eintrages mit dem Wert den wir vorher aus $_POST entnommenhaben übereinstimmt. Wenn ja, setze den $selected auf 'selected="selected"'. Wenn nicht, mach ein leeren String.

Als nächstes müssen wir nun aus all diesen Informationen einen Option-Tag machen.
PHP:
    echo "<option value='{$index}' {$selected} >{$item}</option>\n";
Was es mit dieser Schreibweise {} auf sich hat, habe ich bereits weiter oben verlinkt.
 
Ok also das Array $items wird gelesen und und es wir z.B.
PHP:
$items[1] = 'Bitte ausw&auml;hlen';
ein $index und ein $item (wäre hier: Bitte ausw&auml;hlen) zugewiesen.
Der wert welcher aus dem Formular gelesen wurde ist ja in $selectedIndex
und hiermit:
PHP:
$selected = ($selectedIndex == $index) ? 'selected="selected"' : '';
gucken wir ob der vergebene $index in $selectedIndex ist, wenn dieser ausgewählt wurde wird der zu übergebene String mit dem $index und dem $item versehen, ansonsten ist der string leer.
Warum machen wir das?
PHP:
echo "<option value='{$index}' {$selected} >{$item}</option>\n";
das gibt doch jetzt aus $index welcher ausgewählt wurde und den Namen
Und vorallem warum soll das auf der ersten Seite ausgegeben werden?
 
Zuletzt bearbeitet:
Ich hab auf meiner Seite das schon mit Textfeldern gemacht, sprich es wird was eingetragen und bei Klick auf Weiter ist es in dem nächsten Formular enthalten.
Aber mit dropdowns ist es furchtbar schwierig.
Hätte ich nicht gedacht.
 
Hallo ich wollte diesen Code für meine Ausgabe nutzen.
PHP:
<?php


$item = $_POST['fahrzeug'];

?>
<select name="fahrzeug">

  <option value="item"
          <?php

          if ('item' == $index) {
              echo 'selected="selected"';
          }
          ?>>Bitte ausw&auml;hlen</option>

  <option value="item"
          <?php

          if ('item' == $index) {
              echo 'selected="selected"';
          }
          ?>>Limousine</option>

          <option value="item"
          <?php

          if ('item' == $index) {
              echo 'selected="selected"';
          }
          ?>>Kleinwagen</option>

          <option value="item"
          <?php

          if ('item' == $index) {
              echo 'selected="selected"';
          }
          ?>>Kombi</option>

</select>

funktioniert leider nicht.
Könnte mir jemand den Fehler zeigen.

Danke euch
 
Ich wiederhole an dieser Stelle nocheinmal yaslaw und verweise auf meine Signatur:
"funktioniert nicht" ist KEINE brauchbare Fehlerbeschreibung.

Meine magische Kristallkugel, die ich für solche Zwecke einsetze, verrät mir, dass dein Optionsfeld nicht dem entspricht, was du vorher ausgewählt hast.
Da $index scheinbar immer 'item' sein wird, steht in allen option feldern "selected='selected'" was ein Verstoß gegen die HTML-Regeln ist. Da wird soweit ich weiß nur der erste ausgewertet, bzw genutzt, und da wären wir wieder bei "bitte auswählen"...
 
Ich wiederhole an dieser Stelle nocheinmal yaslaw und verweise auf meine Signatur:
"funktioniert nicht" ist KEINE brauchbare Fehlerbeschreibung.

Stimmt das ist keine Aussage ;-)
Sorry.

Meine magische Kristallkugel, die ich für solche Zwecke einsetze, verrät mir, dass dein Optionsfeld nicht dem entspricht, was du vorher ausgewählt hast.
Da $index scheinbar immer 'item' sein wird, steht in allen option feldern "selected='selected'" was ein Verstoß gegen die HTML-Regeln ist. Da wird soweit ich weiß nur der erste ausgewertet, bzw genutzt, und da wären wir wieder bei "bitte auswählen"...

Und genauso sieht es aus.
Sollte ich vielleicht
PHP:
/Aus jedem Eintrag eine Ausgabe machen
foreach($items as $index => $item)
das weg lassen und die werte des Array $items nicht mit $index und $item versehen********

Nachtrag1:
Denn laut meinem Code auf der 1. Seite muß ich ja nun auf der 2. Seite
$index, $selected und $item ausgegeben lassen.

Nachtrag 2:
Ich habe jetzt mal die einzelnen einträge als value genommen
PHP:
<?php

// selektierter Eintrag, hier aus einem Submit
$selectedIndex = $_POST['fahrzeug'];

?>
<select name="fahrzeug">

  <option value="items[1]"
          <?php

          if ('items[1]' == $selectedIndex) {
              echo 'selected="selected"';
          }
          ?>>Bitte ausw&auml;hlen</option>

  <option value="items[2]"
          <?php

          if ('items[2]' == $selectedIndex) {
              echo 'selected="selected"';
          }
          ?>>Limousine</option>

allerdings erscheint mein Auswahl immer noch nicht im option
 
Zuletzt bearbeitet von einem Moderator:
Hab mal deine Beiträge zusammengeführt.
Bitte in Zukunft den Bearbeiten-Knopf verwenden. Mehrfachpostings sind nicht gern gesehen.

Zum Thema
Ich habe die Übersicht verloren was du eigentlich hast und jetzt nach haben willst
 
Zurück