我正在创建一个游戏,当计时器结束时,用户可以输入他们的名字。我使用 AJAX 将名称和分数传递给 PHP 文件。该 PHP 文件将其添加到 XML 文件中。我循环遍历它以创建一个保存分数的表,然后将其返回到 AJAX,然后使用 jQuery 将其输出到屏幕上。我现在所有这些工作都很好。
我想要完成的是: 1. 将分数添加到 XML 文件后,我想根据分数按降序对节点进行排序 2. 然后我想用值按顺序填充表。我还想将其限制为仅前 10 名。
基本上,我在提出解决方案时遇到的问题是订购。一旦对 XML 进行排序,填充表并将其限制为 10 应该非常简单。关于我应该如何做到这一点的任何建议?
XML: http: //people.rit.edu/lxl1500/Prog4/Project%202/scoreboard.xml
jQuery Ajax 调用:
function addScore(score,name){
var url = 'scoreboard.php';
$.post(url,{Score:score, Name:name},function(data){
$('#score').html(data).show();
});
}
记分牌.php:
<?php
$score = $_POST['Score'];
$name = $_POST['Name'];
if($name == ''){
$name = 'Player'.rand(0,5000);
}
$scoreboard = new domDocument;
$scoreboard->load('scoreboard.xml');
$root=$scoreboard->documentElement;
$entry = $scoreboard->createElement('entry');
$userScore = $scoreboard->createElement('score',$score);
$userName = $scoreboard->createElement('name',$name);
$entry->appendChild($userName);
$entry->appendChild($userScore);
$root->appendChild($entry);
$scoreboard->save('scoreboard.xml');
$scores = $scoreboard->getElementsByTagName('entry');
$string = '<table id="score-table" cellspacing="10"><tbody><tr><th align="left">User</th><th align="left">Score</th></tr>';
foreach($scores as $score){
$getScore = $score->getElementsByTagName('score')->item(0)->nodeValue;
$getPlayer = $score->getElementsByTagName('name')->item(0)->nodeValue;
$string.="<tr><td>$getPlayer</td><td>$getScore</td></tr>";
}
$string.='</tbody></table>';
echo $string;
?>
任何帮助将不胜感激!谢谢。