从一页检索变量以显示在 PHP 中的第二页
Retrieve variable from one page to display on second page in PHP
我有一个 "standings" table,它通过 mysql 查询对团队进行 1-42 的排名。我想要做的是从第一页检索排名,以通过 php 显示在每个团队的页面上。我能够通过 team.php link 使用第二个 GET 方法使它工作,但是 url 中的排名和团队 ID 似乎不正确。
这是我在排名页面上的当前代码:
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];
我有一个 "standings" table,它通过 mysql 查询对团队进行 1-42 的排名。我想要做的是从第一页检索排名,以通过 php 显示在每个团队的页面上。我能够通过 team.php link 使用第二个 GET 方法使它工作,但是 url 中的排名和团队 ID 似乎不正确。
这是我在排名页面上的当前代码:
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];