Сортировка данных по значению (и использование цвета) в php - PullRequest
0 голосов
/ 11 июля 2011

У меня есть диаграмма и текстовый файл, который принимает некоторые данные.Я хотел бы упорядочить имеющиеся у меня данные, поместив пользователя с самым высоким показателем в верхней части таблицы и закрасив все в своем ряду синим цветом.Есть идеи, как я мог это сделать?

файл один:

<!doctype html public "-//W3C//DTD HTML 4.0 //EN">
<html>
<head>
<title>High Score</title>
</head>
<body>
form action="data.php" method="POST">
    <table border="1">
    <tr><td>Player Name</td><td><input type="text" name="name"</td></tr>
    <tr><td>Score</td><td><input type="text" name="score"</td></tr>
    <tr><td colspan="2" align="center"><input type="submit"></td></tr>
    </table>
</form>
</body>
</html>

Data.php:

<?php
$name = $_POST['name'];
$score = $_POST['score'];
$DOC_ROOT = $_SERVER['DOCUMENT_ROOT'];

@ $fp = fopen("$DOC_ROOT/../phpdata/highscore.txt","ab");

    if(!$fp) {
    echo 'Error: Cannot open file.';
    exit;
    }

    fwrite($fp, $name."|".$score."\n");
    ?>

    <?php
    $DOC_ROOT = $_SERVER['DOCUMENT_ROOT'];
    $players = file("$DOC_ROOT/../phpdata/highscore.txt");

    echo "<table border='2'>";
    echo "<tr> <td>Name</td>  <td>Score</td> </tr>";
    for($i = 0; $i < sizeof($players); $i++) {
    list($name,$score) = explode('|', $players[$i]);
    echo '<tr><td>'.$name.'</td><td>'.$score.'</td></tr>';
    }
    echo '</table>';
?>

1 Ответ

1 голос
/ 11 июля 2011

Форматирование всех игроков / результатов в массивы, такие как array('name' => 'Bob', 'score' => 42):

foreach ($players as &$player) {
    list($name, $score) = explode('|', $player);
    $player = compact('name', 'score');
}
unset($player);

Сортировка массива по результату (синтаксис PHP 5.3):

usort($players, function ($a, $b) { return $b['score'] - $a['score']; });

Выведите результаты, установив класс в первой строке:

$first = true;
foreach ($players as $player) {
    $class = $first ? ' class="highlight"' : null;
    $first = false;
    printf('<tr%s><td>%s</td><td>%s</td></tr>', $class, htmlspecialchars($player['name']), htmlspecialchars($player['score']));
}

Теперь выделите этот класс с помощью CSS (или сделайте это прямо в HTML, или что-то еще, что вы хотите сделать).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...