<option selected> aus *.txt Datei

redback79

Erfahrenes Mitglied
Hallo zusammen,

In der Datei producttype.txt werden im folgenden Format die Produkttypen gespeichert:

<option>Decks</option>
<option>Wheels</option>
<option>Trucks</option>
<option>Completes</option>

Die obigen <option> Tags sind Teil eines <select> Objekts, dass ich für die Suche nach bestimmten Artikeln in einer Produktdatenbank benutze. Beim Drücken auf den submit button wird der aktuelle Wert des <select> Objekts in der Variabel $product_type an folgenden Code gesendet:

PHP:
$filename = "producttype.txt";
$fp = fopen($filename,"r");
 $control = "<option>$product_type</option>";

while($zeile = fgetcsv($fp,500,"\n")){

  for($x=0;$x<count($zeile);$x++){

          if ($zeile[$x] != $control) {
            echo "$zeile[$x]";
          }
          else {
          echo "<option selected>$product_type</option>";
             }
  }

}
fclose($fp);

Anstatt des standartmässig ausgewählten ersten <option> Tags sollte mit obigem Script immer der zu letzt ausgewälte <option> Tag selektiert werden, damit der Wert im Dropdownfeld auch mit den ausgegebenen Produkten übereinstimmt!
Dies wäre eigentlich mein Ziel gewesen, doch leider funktioniert diese "Vorselektionierung" nicht... :-( Die aus der *.txt Datei ausgelesenen Daten werden zwar korrekt ins Dropdown übernommen, doch nach einer Auswahl springt er wieder zurück zum ersten <option> Tag...

Ich hab mich wirklich ins Zeug gelegt und verschiedenste Varianten ausprobiert (readfile(), file(), fgets()...) Leider scheine ich nicht fähig zu sein dieses banale Problem selbständig zu lösen... Wäre toll wenn mir jemand weiterhelfen könnte!

Vielen Dank im Voraus!
redback79
 
Wäre es nicht von Vorteil die Werte ohne die HTML Tags zu speichern und dann so vorzugehen:
PHP:
$filename = "producttype.txt";
$fp = fopen($filename,"r");
while($zeile = fgetcsv($fp,500,"\n")){
  for($x=0;$x<count($zeile);$x++){
    echo '<option';
    if($zeile[$x] == $product_type) {
      echo ' selected';
    }
    echo '>'.$zeile[$x].'</option>';
  }
}
fclose($fp);
Außerdem ist dein PHP Syntax auch unvorteilhaft, z.B. das hier:
PHP:
$control = "<option>$product_type</option>";
# oder das
echo "$zeile[$x]";
Die " sind total unnötig und mindern die Perfomance, sollte bei einem
kleinen Script nicht stören aber bei größeren Sachen ... Und es sieht einfach nicht aus :-)
 
Zurück