1

MySQL データベースから選択オプションを生成しています。2 番目のクエリでは、同じデータベースのリストを表示しています。最初の選択と 2 番目の選択を一致させるために JavaScript を使用するつもりでしたが、選択されたオプションが変更されるたびに新しいクエリを作成するのではなく、そのようにしたほうがよいのではないかと考えていました。何か案は?誰かがこのようなものに出くわしたことがありますか?もしそうなら、何がパフォーマンスが良かったですか?

include("conexion.php");

$result = mysqli_query($conn,"SELECT * FROM `user_list` WHERE `user_id`=$oreo AND  `visibility` =  '0' ORDER BY `item_num` DESC ");
$result2 = mysqli_query($conn,"SELECT DISTINCT(`group`) FROM `user_list` WHERE `user_id`=$oreo AND  `visibility` =  '0'");

echo "<div> <select id='groopy' onChange='selectivo();'>";

while($row = mysqli_fetch_array($result2)) {
    $group_name = $row['group'];
    echo "<option>".$group_name."</option>";
}

echo "</select></div>";
echo "<ul id='groopy'>";

while($row = mysqli_fetch_array($result)) {
      $group_name = $row['group'];
      $item_num = $row['item_num'];
      $tit_sup = $row['tit_sup'];
      $url = $row['url'];

      echo "<li alt='".$group_name."'>".$tit_sup."</li>";
}

echo " </ul>";

これが私が今やっている方法です。正確な理由はわかりませんが、あまり好きではありません(問題はありませんが、コンテンツが多いとすべてが遅くなると思います)。

4

1 に答える 1

0

私の理解が正しければ、パフォーマンスにあまり影響を与えずに多数のグループ/ユーザーにスケールアップできるソリューションを探していると思います。

それに対する私の考えは次のとおりです。

  • 合理的な量のデータを使用すると、現在のソリューションが最も責任のあるものであり、ユーザー側ですべてを既に持っており、選択したグループのリストをフィルタリングするだけで済みます
  • データベースが大きくなるにつれて、少し書き直して、選択したグループのユーザーのみをロードすることができます。これは、次の 2 つの方法で実現できます。
    • 選択変更時にページ全体がリロードされます - これは、javascript が無効になっているブラウザーで機能を維持するのに適している可能性がありますが、次の方法に進みます
    • 最初に空のリスト (またはデフォルトのリスト) を表示し、選択が変更されたときにユーザーリストを AJAX でロードします。このアイデアをさらに一歩進めて、ロードされたユーザーリストをキャッシュし、キャッシュから <ul> を埋めることができます

より正確で正確な意見を得るには、グループ選択とユーザーリストをいつ、どのように、何のために使用するかを知っておくとよいでしょうが、現時点では、上記の可能性はすべて利用できると思います.

于 2013-05-15T16:31:14.263 に答える