2016-08-07 21 views
0

Ich habe ein Formular mit einer Dropdown-Auswahl, deren Option aus einer Tabelle in einer Datenbank ermittelt wird. In regelmäßigen Abständen werde ich (manuell) dem Dropdown-Menü und der Datenbank weitere Optionen hinzufügen. Entweder ich kann die Drop-down-Auswahl macht die Optionen aus der Datenbank wie diese:Soll ich Daten aus meiner Datenbank abrufen, um eine Dropdown-Liste zu erstellen?

<select class="form-control" name="category" id="category"> 

    <?php 
    $sql = "SELECT id, category FROM categories;"; 
    $result = $GLOBALS['conn']->query($sql); 
    if ($result->num_rows > 0) { 
     // output data of each row 
     while($row = $result->fetch_assoc()) { 
      $category = $row['category']; 
      $id = $row['id']; 
      echo "<option value='$id'>$category</option>"; 
     } 
    } 
    ?> 
</select> 

Was mir gibt weniger Arbeit, weil alles, was ich jetzt zu aktualisieren, die Datenbank und das Formular selbst aktualisieren.

Oder ich kann manuell eingegeben die Optionen in Form wie folgt aus:

<select class="form-control" name="category" id="category"> 
    <option value='1'>option1</option> 
    <option value='2'>option2</option> 
    <option value='3'>option3</option> 
</select> 

Auf diese Weise wird mehr manuelle Arbeit erfordern, hat aber den Vorteil, dass nicht jedes Mal in die Datenbank verbinden mit (weniger Arbeit für die Server).

Meine Frage ist, welche Methode soll ich verwenden? Die Methode, die mir mehr Arbeit gibt oder die Methode, die dem Server mehr Arbeit gibt?

+0

Wenn Sie bereits eine Datenbank-Methode arbeiten, warum würden Sie zur manuellen Methode gehen. Bleiben Sie bei der Datenbank – RiggsFolly

+0

Tun Sie es aus der Datenbank. Es ist zukunftssicher. Wenn Sie die genau gleichen Kategorien an einem anderen Ort verwenden möchten, haben Sie nur einen Ort, um sie zu verwalten. Wenn Sie sich Sorgen um die Serverlast machen, können Sie sie in der Sitzung zwischenspeichern. – Ibrahim

+0

@RiggsFolly Meine Sorge ist, dass die Datenbank-Methode Systemressourcen verschwendet, wenn ich es leicht manuell machen kann und nicht jedes Mal Ressourcen verschwenden muss, wenn die Seite geladen – KNejad

Antwort

0

Es gibt Argumente pro und dagegen, eine Datenbank für select zu verwenden. Was die Pro-Argumente betrifft, ist es relativ einfach zu aktualisieren - Sie fügen einfach einen neuen Wert ein und er wird in Ihrem Formular erscheinen. Das Problem bei diesem Ansatz besteht darin, dass Ihre Anwendung bei jedem Rendern des Formulars eine Abfrage durchführt. Bei Websites mit Millionen von Klicks ist das keine gute Idee. Die verwendete Alternative besteht also darin, dass das Abfrageergebnis in einer Zwischenschicht zwischengespeichert wird, insbesondere wenn sich diese Werte nicht stark ändern. Aus meiner Erfahrung ist der beste Weg, diese Werte zu handhaben, sie aus Konfigurationsdateien zu laden. Dies sind Werte, die sich selten ändern und ein neuer Wert kann dort hinzugefügt werden. Diese können weiterhin zwischengespeichert werden und ein Datenbank-Treffer ist nicht erforderlich.

+0

kümmern, um die negative Stimme zu kommentieren? –