Heim  >  Fragen und Antworten  >  Hauptteil

Suchen Sie nach einer eleganteren Möglichkeit, das Attribut „selected“ einem zuvor ausgewählten <input>-Element zuzuweisen

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粉635509719P粉635509719251 Tage vor361

Antworte allen(1)Ich werde antworten

  • P粉627136450

    P粉6271364502024-01-17 19:18:26

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

    $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";
    }
    

    Antwort
    0
  • StornierenAntwort