【发布时间】:2018-04-11 01:58:19
【问题描述】:
我正在处理以下问题。
我有一个应用,上面有一张桌子:
<table>
<tr>
<th>bla</th>
<th>bla</th>
<th>bla</th>
</tr>
<?php foreach($bla as $b){ ?>
<tr>
<tr><?=$b["bla"];?></tr>
<tr><?=$b["bla"];?></tr>
<tr><?=$b["bla"];?></tr>
</tr>
<?php }?>
</table>
所以我有这个表,它总是有一个标题和一些行(取决于变量$bla)。变量$bla 来自一个数据库,只是从我的数据库中的一个表中读取所有行。
我现在要实现的是搜索,因此有人可以在输入字段中输入他的搜索查询,然后再次执行 SQL-Query,其中包含 LIKE 以执行搜索,然后只显示包含搜索词的行。或者,我可以考虑简单地过滤我之前拥有的数组,因此我已经在一个变量中拥有所有行,我可以简单地临时删除所有其他数组元素,其中不包含搜索的单词。
现在有两个问题:您认为哪个性能更好?作为衡量标准,数据可能不会很快超过 10.000 行。用户输入完毕后总是查询数据库,在数据库中搜索并直接显示该数据会更好还是过滤组成数组会更好?
第二个问题:我该如何实现?我的意思是,“数组过滤”方法可能并不难,尽管我不确定如何过滤元素,如果它是多维的(确实如此,因为 db 中的每一行都有第一级,第二个对于 db 中的每一列)。 编辑: 还有:我会遇到与第二个 (db-) 解决方案相同的问题:如何在表中获取过滤后的数据,因为该表也只加载一次,需要一些javascript 在那里,就像第二个解决方案一样,我猜。
但我认为从 db 获取数据的方法有点困难。我想到的是发送一个 AJAX 请求,成功后我可以提供搜索的数组。但是:我怎样才能“重新加载”表格?我绝对不想重新加载整个页面,我想要一种实时搜索,所以页面通常应该保持不变,只有表格应该重新加载并显示从 AJAX 传递的变量的内容。我怎样才能做到这一点?我的意思是我理论上可以只使用echo 整个foreach 与AJAX 将数据发送到的PHP 文件中的新数据,然后将“旧”foreach 设置为display:none 并在下面使用一个新的div 并给它display:block 和 data 作为 html 属性传递,但这确实不太优雅,我认为必须有更好的解决方案。
有什么想法吗?
【问题讨论】:
标签: javascript php mysql ajax html-table