我有一个工具可以使用 cURL 检查游戏中的可用名称,它应该向运行检查的用户显示可用的名称,并忽略已使用的名称。基本上,当您对名称列表运行测试时,它会检查所有名称并将它们与可用性一起插入到数据库中,0 表示已使用或 1 表示可用。
现在,页面只有在检查完成后才会加载,然后它们会作为一个整体插入到数据库中。我希望它动态显示检查状态(即“已检查名称 405/4938”)并在检查名称时显示加载图像,同时在检查时显示可用名称。然后在最后,删除加载图像,现在只有可用名称的完整列表。
我应该怎么做呢?我不太了解 jQuery/AJAX。现在它们都显示为最后的质量并不理想。
这是名称检查线程上的代码。
<?php
$query = mysql_query("SELECT * FROM `lists` WHERE id = '$id'");
while($row = mysql_fetch_assoc($query)) {
$id = $row['id'];
$list = $row['list'];
foreach(explode("\n", $list) as $listItem) {
checkname_RS(trim($listItem));
}
}
这是检查的功能。
<?php
function checkname_RS($name) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://services.runescape.com/m=hiscore/compare.ws?user1=" . $name);
curl_setopt($ch, CURLOPT_HTTPGET, TRUE);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
$output = curl_exec($ch);
if (stristr($output,"Skill Stats")) {
mysql_query("INSERT INTO names (name, plat, status) VALUES ('$name', 'Runescape', '0')") or die(mysql_error());
}
if (stristr($output,"Member Rankings")) {
mysql_query("INSERT INTO names (name, plat, status) VALUES ('$name', 'Runescape', '1')") or die(mysql_error());
}
curl_close($ch);
}
最佳答案
你真的不需要做任何特别的事情来实现这一点。由于您已经只是保持连接打开并在文档底部转储数据,因此您应该能够在每个项目或每个 n 项目之后将更多 javascript 转储到客户端。
因此您可以在文档中的某个位置转储如下所示的一些 html:
<div id="progressMessage"></div>
<ul id="availableNames"></ul>
然后你的线程只需要输出 js 来更新 View ,例如(为简单起见使用 jQuery):
$("#progressMessage").text("1 of 5999");
$("#availableNames").append("<li>matchedName</li>");
加载/隐藏进度条也是如此,js在客户端收到它之前不会运行,所以最终效果就像一个进度条。
关于php - 如何越来越多地显示数据库结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17757779/