Suchen Sie nach einer eleganteren Möglichkeit, das Attribut „selected' einem zuvor ausgewählten <input>-Element zuzuweisen
P粉635509719
P粉635509719 2024-01-16 20:46:55
0
1
415

Ich erstelle eine einfache CRUD-Anwendung mit PHP. Auf der Erstellungsseite gibt es ein Dropdown-Menü, mit dem der Benutzer den Autobahntyp auswählen kann, für den er Informationen eingeben möchte. Auf der Aktualisierungsseite möchte ich die Auswahl beibehalten, die der Benutzer auf der Erstellungsseite vorgenommen hat. Der vom Benutzer ausgewählte Wert wird in einem lokalen JSON-Objekt gespeichert. Ich habe mir folgende Lösung ausgedacht:

<select name="route-type" id="route-type" required>

<option value="" selected="true" disabled>What type of route is this?</option>

<?php if( $highway['type'] == 'interstate') { ?>

<option value="interstate" selected>Interstate</option>
<option value="us-route">US Route</option>
<option value="state-route">State Route</option>

<?php } elseif ( $highway['type'] == 'us-route') { ?>
                
<option value="interstate">Interstate</option>
<option value="us-route" selected>US Route</option>
<option value="state-route">State Route</option>

<?php } elseif ( $highway['type'] == 'state-route') { ?>

<option value="interstate">Interstate</option>
<option value="us-route">US Route</option>
<option value="state-route" selected>State Route</option>

<?php } ?>

Das Problem ist, dass dies ziemlich eintönig aussieht und überarbeitet oder auf irgendeine Weise umgeschrieben werden muss. Irgendwelche Vorschläge? Wenn die Dropdown-Liste 30 Auswahlmöglichkeiten enthält, ist es natürlich nicht korrekt, 30 mögliche Ergebnisse in der if-Anweisung zu haben.

P粉635509719
P粉635509719

Antworte allen(1)
P粉627136450

这是一个解决方案(未经测试):

$options = [
  'interstate' => 'Interstate',
  'use-route' => 'US Route',
  'state-route' => 'State Route'
];

foreach($options as $k=>$v) {
  echo "<option value=\"$k\"" . ($k===$highway['type']?'selected':'') . " />$v</option>\n";
}
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage