我正在创建一个表格,当用户点击按钮时,我希望它打开一个名为player_profile的php文件,该页面将调用该特定播放器的更多信息。
当涉及到通过页面传递变量时,我知道这些行中的某些东西都可以工作。
//On page 1
$_SESSION['varname'] = $var_value;
//On page 2
$var_value = $_SESSION['varname'];
然而,当我将它添加到按钮时,php文件不会加载。下面是我的代码,没有传递一个有效的变量。
<?php
$result = mysql_query("SELECT *, CONCAT(FirstName,' ', LastName) AS Name FROM Player WHERE TeamID = '$TeamID' ORDER BY LastName ASC");
echo "<table id='customers' border='1'>
<tr>
<th>PlayerID</th>
<th>Name</th>
<th>Position</th>
<th>Tries</th>
<th>Tackles</th>
<th>Turnovers</th>
<th> Info </th>
</tr>";
while($row = mysql_fetch_array($result))
{
echo "<tr>";
echo "<td>" . $row["PlayerID"] . "</td>";
echo "<td>" . $row["Name"] . "</td>";
echo "<td>" . $row['Position'] . "</td>";
echo "<td>" . $row['Tries'] . "</td>";
echo "<td>" . $row['Tackles'] . "</td>";
echo "<td>" . $row['Turnovers'] . "</td>";
echo "<td><form action=player_profile.php>
<input name=id type=hidden value='".$row['PlayerID']."';>
<input type=submit name=submit value=info>
</form></td>";
echo "</tr>";
echo "</tr>";
}
echo "</table>";
?>
上面的代码非常适合显示表格并将我带到player_profile页面。但是如果将按钮更改为页面下方的代码,以便我可以传递一个不加载的变量
echo "<td><form action=player_profile.php>
<input name=id type=hidden value='".$row['PlayerID']."';>
$_SESSION['varname'] = ".$row['PlayerID'].";
<input type=submit name=submit value=info>
</form></td>";
echo "</tr>";
答案 0 :(得分:2)
不要使用会话传递参数。它打破了用户期望页面运行的方式。
使用$_GET
参数:
<a href="player_profile.php?id=1235">John</a>
然后在player_profile.php
做:
$id = isset($_GET["id"]) ? $_GET["id"] : false;
if ($id === false) {
exit("missing input");
}
// etc
在这里使用会话的问题是,如果有人打开两个不同的玩家档案,他可以期待看到什么?如果他刷新其中一个会怎么样?
更高级且参与的参数传递方式使用URL重写来获得外观漂亮的URL,如:
<a href="/player/1234/John/profile">John</a>
答案 1 :(得分:1)
您有代码尝试在回显中设置会话。你想要它分开:
echo "<td><form action=player_profile.php>
<input name=id type=hidden value='".$row['PlayerID']."'>
<input type=submit name=submit value=info>
</form></td>";
echo "</tr>";
如果你想访问player_profile.php上的PlayerID变量,你只需使用:
$var_value = $_GET['id'];
你也可以在那时将它放入会话变量中,但我不知道为什么你需要它。