1

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

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

我的想法是:

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

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

于 2013-05-15T16:31:14.263 回答