首页 > 解决方案 > PHP POST 值来自用 While 循环创建的

问题描述

我正在尝试创建一个页面,该页面显示与作为数据库中主键的帐号相关联的按钮。当我单击按钮时,我希望该按钮获取其值并将其分配给一个变量,该变量可用于将信息加载到将在单击按钮后加载的配置文件页面中。

单击按钮后,我想加载一个配置文件页面,该页面使用值 (acc_ID) 从数据库加载每个配置文件属性(名称、位置等)。我已经具备执行此操作的功能,因为我已将其设置为当用户登录时,他们会看到他们的信息填充在他们的个人资料页面中。

到目前为止,我有一个 While 循环,它使用所有玩家帐号和“查看个人资料”按钮填充表格。每个按钮都分配有玩家帐号作为值,也是名称的一部分。

$query = "SELECT * FROM player";
$result = mysqli_query($conn, $query);
echo "<table>
<tr>
<th>View Profile</th>
<th>Acct Id</th>
</tr>";
while($row = mysqli_fetch_array($result))
{
echo" <form action='php/createPlayerProfilesList.php'>";
echo "<tr>";
echo"<td> <input type='submit' name='submit-'.$row[acc_ID].'' value='View 
Profile - $row[acc_ID]'>   </input> </td>";
echo "<td class='viewProfile'><input name='player[]' class='getPlayerId' 
readonly type='text' value='". $row['acc_ID'] ."' > " . $row['acc_ID'] . " 
</input></td>";
echo "<td>" . $row['player_FName'] . "</td>";
echo "<td>" . $row['player_LName'] . "</td>";
echo "</tr>";
echo "</form>";
}
echo "</table>";

我想不通的是如何在我点击他们特定的查看个人资料按钮后将球员个人资料信息显示到个人资料模板中,该按钮将我带到 profile.php 模板。我知道如何根据 acc_ID 将信息加载到配置文件模板中,因为当他们登录时它会这样做,但我无法弄清楚这一点。

这是根据 acc_ID 是 SESSION 变量填充模板的配置文件代码示例。

session_start();
include("navbarphp.php");

if($_SESSION['person_type'] == 'P'){
$acct_ID = $_SESSION['acc_ID'];
$query = "SELECT * FROM player WHERE acc_ID = '$acct_ID'";
$result = mysqli_query($conn, $query);
while($row = $result->fetch_assoc()){
            $location = $row['player_location'];
            $fname = $row['player_FName'];
            $lname = $row['player_LName'];
            $school = $row['high_school'];
            $gpa = $row['GPA'];
            $bio = $row['BIO'];
            $pos = $row['position'];
            }
}

我在这个网站上搜索了很长时间,并且有几件事有所帮助,但最后我仍然无法传递特定的“查看配置文件”按钮值。任何帮助都会很棒。谢谢

标签: phphtmlprofile

解决方案


通过将 html 输出调整为以下格式,您可能会获得更好的运气:

while($row = mysqli_fetch_array($result))
{
    echo '<tr>';
    echo '<td><form action="php/createPlayerProfilesList.php">';
    echo '<input type="hidden" name="playerId" value="'. $row['acc_ID'] .'">';
    echo '<input type="submit" name="submit" value="View Profile - '. $row['acc_ID'] .'">';
    echo '</form></td>';
    echo '<td>'. $row['player_FName'] .'</td>';
    echo '<td>'. $row['player_LName'] .'</td>';
    echo '</tr>';
}

这样做是将元素拉入form表格单元格中,因为您现在拥有它的位置包装了表格行(这是错误的 html)。然后,您将 acc_ID 放入隐藏的输入字段中,您将使用该字段来提取数据。

在您的 createPlayerProfilesList.php 脚本中,您可以像这样使用它:

<?php
if (!empty($_POST['playerId'])) {
    // ... pull from db based on value in $_POST['playerId']
    $acct_ID = (int)$_POST['playerId'];
    // ...
}
?>

这当然是您可以执行此操作的方法之一的简短示例。例如,现在使用的另一种方法是通过样式化元素并使用带有 ajax 的 javascript 来提取数据的“记录”,然后当您单击按钮以“查看更多”时动态显示在框或页面上。但是,该示例将超出此问题的范围;)


推荐阅读