mysql — извлекает переменную с одной страницы для отображения на второй странице в переполнении стека

У меня есть таблица «Турнирная таблица», которая ранжирует команды с 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>";
}

0

Решение

На самом деле, способ, которым вы пытались, верен. Но, если вы все еще ищете альтернативу, один метод будет хранить каждое командное звание в отдельной переменной сеанса … что-то вроде $_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];
2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]