当所选选项发生变化时,我应该动态生成数据库查询吗?

时间:2013-05-14 23:43:46

标签: php javascript mysql

我正在从MySQL数据库生成一个select选项。在第二个查询中,我正在显示来自同一个数据库的列表。我现在要使用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>";

这就是我现在正在做的事情,我不确切知道为什么,但我不喜欢它(它没有给出任何问题,但我猜想当有很多内容时会减慢一切)。

1 个答案:

答案 0 :(得分:0)

如果我理解正确,您正在寻找一种解决方案,该解决方案可扩展到大量群组/用户,而不会对性能产生太大影响。

我的想法是:

  • 使用合理数量的数据,当前的解决方案是最负责任的一个,您已经拥有用户所有的一切,只需要过滤所选组的列表
  • 随着数据库的增长,您可以稍微重写一下,只加载所选组的用户,这可以通过两种方式实现:
    • 整个页面重新加载选择更改 - 这可能有助于保持功能适用于已禁用javascript的浏览器,但我会选择下一个
    • 首先显示一个空列表 - 或默认列表 - 并在选择更改时使用AJAX加载用户列表;这个想法可以更进一步,你可以缓存加载的用户列表,并填写&lt; ul&gt;来自缓存

为了获得更好,更准确的意见,最好知道何时,如何以及您打算使用组选择和用户列表,但截至目前,我看到上述可能性都可用。