2016-08-07 9 views
0

私は、データベース上のテーブルからオプションが決定されるドロップダウン選択を持つフォームを持っています。私は定期的に(手動で)ドロップダウンとデータベースにオプションを追加します。どちらか私は、ドロップダウンの選択は次のようにデータベースからオプションを取得することができます:私は今、更新する必要があり、すべてのデータベースで、フォームが自分自身を更新しますので、私はあまり仕事を与えるデータベースからデータを取得してドロップダウンリストを作成する必要がありますか?

<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> 

を。

または私は手動で入力する。このようなフォームにオプションすることができます

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

は、この方法では、より多くの手作業が必要になりますが、データベースへのたびに接続する必要がないという利点のために(より少ない仕事を持っていますサーバー)。

私の質問はどの方法を使うべきですか?私にもっと多くの仕事や、サーバーにもっと多くの仕事を与える方法を与える方法?

+0

あなたがデータベースメソッドを持っているのであれば、どうして手動メソッドに行きますか?データベースに固執する – RiggsFolly

+0

データベースから削除してください。それは将来の証明です。まったく同じカテゴリの別の場所で使用する場合は、管理する場所が1つだけになります。サーバーの負荷が心配な場合は、セッションでキャッシュすることができます。 – Ibrahim

+0

@RiggsFolly私が懸念しているのは、データベースメソッドがシステムリソースを浪費するということです。手動で簡単に行うことができ、ページが読み込まれるたびにリソースを無駄にする必要はありません。 – KNejad

答えて

0

selectにはデータベースを使用するためにproと引数があります。プロの議論に関しては、それは更新するのが比較的簡単です - ちょうど新しい値を挿入し、あなたのフォームに表示されます。このアプローチの問題は、フォームをレンダリングするたびにアプリケーションがクエリを実行することです。何百万というクリック数を持つウェブサイトでは、これは良い考えではありません。したがって、特に、これらの値が大きく変化していない場合、クエリ結果が一部の中間層にキャッシュされるという代替方法が使用されます。私の経験から、これらの値を処理する最良の方法は、設定ファイルからそれらをロードすることです。これらはほとんど変更されない値であり、そこに新しい値を追加することができます。これらはまだキャッシュされている可能性があり、データベースのヒットは必要ありません。

+0

否定的な投票にコメントしてください。 –

関連する問題