dynamisch gewähltes Dropdown

Also ich habe deinen Code genommen auf der 1. Seite
PHP:
<?php

$items[1] = 'Bitte ausw&auml;hlen';
$items[2] = 'Limousine';
$items[3] = 'Kleinwagen';
$items[4] = 'Kombi';
$items[5] = 'Gel&auml;ndewagen/Pickup';
$items[6] = 'Cabrio/Roadster';
$items[7] = 'Sportwagen/Coup&eacute;';

$selectedIndex = $_POST['fahrzeug'];

echo '<select class="select" size="1" name="fahrzeug">';

foreach($items as $index => $item){
   
    $selected = ($selectedIndex == $index) ? 'selected="selected"' : '';
  
    echo "<option value='{$index}' {$selected} >{$item}</option>\n";
}
echo '</select>';
?>

Danke übrigens nochmal für deine ausführliche Erklärung******!

Nun wollte ich mit:
PHP:
<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>

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

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

          <option value4="items[4]"
          <?php

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

</select>
meine Auswahl von der 1. Seite auf der 2. Seite zeigen lassen.
Jedoch wird mir die Auswahl die ich getätigt habe nicht angezeigt
 
PHP:
$selectedIndex = (isset($_POST['slct']))?intval($_POST['slct']) : 0;

$values = array('Bitte auswählen', 'Feld1', 'Feld2', 'Feld3');
$size = sizeof($values);

echo '<form method="post" action="meinscript.php"><select name="slct">';
for( $i = 0; $i < $size; $i++ ){
  $selected = ($i == $selectedIndex)? ' selected="selected"':'';
  echo '<option value="'.$i.'"'.$selected.'>'.$values[$i].'</option>';
}
echo '</select></form>';

Das ist das was yaslaw schon vorgeschlagen hat und was auch funktioniert.


edit:
Lass dir mal $selectedIndex mal ausgeben. Du wirst sehen dass es eine Zahl enthählt. Du vergleichst aber u.a. mit dem String "item[3]" <- Das ist keine Variable.
 
Danke für deine Antwort.
Ich hab zwei Fragen:
1. Die Ausgabe erfolgt immer um eins versetzt, sprich wenn ich das 3. auswähle erscheint das 4. als auswahl auf der 2. Seite.

Wenn der Code folgendermaßen aussieht:
PHP:
<?php
$selectedIndex = (isset($_POST['fahrzeug']))?intval($_POST['fahrzeug']) : 0;

$values = array('Bitte auswählen', 'Limousine', 'Kleinwagen', 'Kombi', 'Gel&auml;ndewagen/Pickup', 'Cabrio/Roadster', 'Sportwagen/Coup&eacute;',);
$size = sizeof($values);

echo '<form method="post" action="http://www.wirzahlenfürdeinauto.de/index.php">
<select name="fahrzeug">';
for( $i = 0; $i < $size; $i++ ){
  $selected = ($i == $selectedIndex)? ' selected="selected"':'';
  echo '<option value="'.$i.'"'.$selected.'>'.$values[$i].'</option>';
}
echo '</select></form>';

?>

Nach vielen testen habe ich bemerkt das bei diesem Code die Ausgabe so ist wie beschrieben.
Wenn ich die $selectedIndex auf $selected setze kommt keine Auswahl.

2.Könntest du mir den Code genau erklären
Das wäre wirklich super
 
Zuletzt bearbeitet:
Das 1. kann eigentlich nicht sein.

2.
PHP:
<?php
$selectedIndex = (isset($_POST['fahrzeug']))?intval($_POST['fahrzeug']) : 0;
//Kurzschreibform, google mal nach Fragezeichenoperator
/* Wenn das Formular abgesendet wurde, $_POST['fahrzeug'] also gesetzt ist, dann ist $selectedIndex = $_POST['fahrzeug']. intval() erzeugt eine Ganzzahl (Integer) daraus, was dich unter anderem vor bösartigen Versuchen schützt. Wenn das Formular nicht abgesendet wurde, ist der Standardwert 0 in $selected Index. (if, else)
*/


//Die Felder von deinen Option-Tags in einem array. Was ein Array genau ist, kannst du auch bei google nachlesen
$values = array('Bitte auswählen', 'Limousine', 'Kleinwagen', 'Kombi', 'Gel&auml;ndewagen/Pickup', 'Cabrio/Roadster', 'Sportwagen/Coup&eacute;',);
//Speichert die größe des Arrays
$size = sizeof($values);

echo '<form method="post" action="http://www.wirzahlenfürdeinauto.de/index.php">
<select name="fahrzeug">';

/* Forschleife von 0 bis zur Größe des Arrays, wie sie genau funktionieren -> google
In diesem Falle laufen wir jedes ArrayFeld einmal durch, und prüfen ob das jetztige Feld $i mit dem ausgewählten feld $selectedIndex überseinstimmt. Wenn ja, setzten wir $selected auf 'selected="selected"' was die Auswahl des Optionfeldes bewirkt. Andernfalls lassen wir es leer "". (if,else, siehe auch hier wieder der Fragezeichenoperator) */
for( $i = 0; $i < $size; $i++ ){
  $selected = ($i == $selectedIndex)? ' selected="selected"':'';
  //Die Ausgabe des option tags, Stringverknüpfung über den Punkt-Operator ".",
  //Als value benutzen wir $i, was später auch den selectedIndex liefert. $values[$i] enthält jeweils
//das Element oben aus dem Array
  echo '<option value="'.$i.'"'.$selected.'>'.$values[$i].'</option>';
}
echo '</select></form>';

?>

Nachtrag: Was mir noch einfällt:
Wenn du auf deinem ersten Formular das Array bei 1 anfängst, ist es natürlich verschoben. GANZ WICHTIG! Arrays fangen bei 0 an, nicht bei 1.
 
Zuletzt bearbeitet:
Ja das hat an der Nummerierung der Array-Werte gelegen.
Jetzt funktioniert es.
Danke für deine Erklärung.
Bin alles genau durch gegangen und hab gegooglet und ich habs begriffen. :-)

Vielleicht kannst du mir noch nen Tipp geben.
Dieses Formular schicke ich ja an eine EMail Adresse ab.
Kommt auch alles an, nur steht jetzt natürlich in der Mail bei
Fahrzeug: 4
zum Beispiel und nicht der Name.
Ist mir auch klar warum aber ist es möglich das auch der Name angezeigt wird?

MMHH...
Hab gefunden was da schief lief.
Mit diesem Code klappt es
PHP:
$selectedIndex = (isset($_POST['fahrzeug']))?intval($_POST['fahrzeug']) : 0;

$values = array('Bitte auswählen', 'Limousine', 'Kleinwagen', 'Kombi', 'Gel&auml;ndewagen/Pickup', 'Cabrio/Roadster', 'Sportwagen/Coup&eacute;',);
$size = sizeof($values);

echo '<form method="post" action="http://www.wirzahlenfürdeinauto.de/index.php">
<select name="fahrzeug">';

for( $i = 0; $i < $size; $i++ ){
  $selected = ($i == $selectedIndex)? ' selected="selected"':'';
  echo '<option
value="'.$values[$i].'"'.$selected.'>'.$values[$i].'</option>';
}
 
Zuletzt bearbeitet von einem Moderator:
Zurück