【问题标题】:Retrieve variable from one page to display on second page in PHP从一页检索变量以显示在 PHP 的第二页上
【发布时间】:2016-06-20 00:06:22
【问题描述】:

我有一个“排名”表,它通过 mysql 查询对 1-42 的团队进行排名。我想要做的是从第一页检索排名以通过 php 显示在每个团队的页面上。我能够通过 team.php 链接使用第二个 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 变量以显示该团队的排名,这很好用。但是,有没有更好的方法来检索排名变量而不通过 h​​ref 发送它?所以我可以改变这个:

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>";
}

【问题讨论】:

  • 你可以只设置一个会话变量
  • 我已尝试这样做,但变量在 team.php 页面上为每个团队显示相同的排名“42”。

标签: php mysql session get rank


【解决方案1】:

实际上,您尝试的方式是正确的。但是,如果您仍在寻找替代方法,一种方法是将每个团队的排名存储在单独的会话变量中...类似于$_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];

【讨论】:

  • 你的替代方法是我想的方向。但是,当我回显 $rank 时,它不会返回任何数据。
  • 你是否在两个页面的开头都设置了session_start()??
  • 是的,如果我放入一些基本的测试数据,会话会进行通信。
  • 我在 $_SESSION['$teamid'] = $rank 中添加了引号,它会显示数据。但它仍然为每个团队的排名返回“42”。所以我相信每次 for 循环运行时变量仍然被覆盖。
  • 你添加的引号是错误的..查看我的答案并像我一样添加它们
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多