У меня есть таблица «Турнирная таблица», которая ранжирует команды с 1 по 42 через запрос MySQL. То, что я пытаюсь сделать, это получить рейтинг с первой страницы, чтобы отобразить на странице каждой команды с помощью php. Я смог заставить это работать, используя второй метод GET по ссылке team.php, но это не совсем правильно, если иметь ранг в URL вместе с идентификатором команды.
Вот мой текущий код на странице турнирной таблицы:
for($i = 0; $i < $rows; $i++) {
$result->data_seek($i);
$row = $result->fetch_array(MYSQLI_NUM);
$rank = $row[12];
$teamid = $row[0];
echo "<tr>";
echo "<td class='rank'>" . $rank . "</td>";
echo "<td class='left'><a href='team.php?team_id=$teamid&rank=$rank'>$row[1]</a></td>";
for($j = 2; $j < 11; $j++) echo "<td>$row[$j]</td>";
echo "</tr>";
}
А затем страница отдельной команды:
$teamid = $_GET['team_id'];
$rank = $_GET["rank"];
Затем я просто отображаю переменную $ rank, чтобы отобразить ранг этой команды, что прекрасно работает. Однако, есть ли лучший способ получить переменную ранга, не отправляя ее через href? Так что я мог бы изменить это:
echo "<td class='left'><a href='team.php?team_id=$teamid&rank=$rank'>$row[1]</a></td>";
Вернуться к:
echo "<td class='left'><a href='team.php?team_id=$teamid'>$row[1]</a></td>";
При получении звания по-другому?
Должен отметить, что я также пытался использовать переменную SESSION для получения ранга с первой страницы. Однако на странице каждого пользователя отображается рейтинг «42», поскольку цикл for перезаписывает переменную SESSION до последней строки. Как показано ниже:
session_start();
for($i = 0; $i < $rows; $i++) {
$result->data_seek($i);
$row = $result->fetch_array(MYSQLI_NUM);
$_SESSION["rank"] = $row[12];
$teamid = $row[0];
echo "<tr>";
echo "<td class='rank'>" . $_SESSION["rank"] . "</td>";
echo "<td class='left'><a href='team.php?team_id=$teamid'>$row[1]</a></td>";
for($j = 2; $j < 11; $j++) echo "<td>$row[$j]</td>";
echo "</tr>";
}
На самом деле, способ, которым вы пытались, верен. Но, если вы все еще ищете альтернативу, один метод будет хранить каждое командное звание в отдельной переменной сеанса … что-то вроде $_SESSION[$teamid] = $rank
;
for($i = 0; $i < $rows; $i++) {
$result->data_seek($i);
$row = $result->fetch_array(MYSQLI_NUM);
$rank = $row[12];
$teamid = $row[0];
$_SESSION[$teamid] = $rank;
echo "<tr>";
echo "<td class='rank'>" . $rank . "</td>";
echo "<td class='left'><a href='team.php?team_id=$teamid'>$row[1]</a></td>";
for($j = 2; $j < 11; $j++) echo "<td>$row[$j]</td>";
echo "</tr>";
}
Тогда на вашей отдельной странице вы можете попробовать что-то вроде:
$teamid = $_GET['team_id'];
$rank = $_SESSION[$teamid];
Других решений пока нет …