php - 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'];
}
}
我在这个网站上搜索了很长时间,并且有几件事有所帮助,但最后我仍然无法传递特定的“查看配置文件”按钮值。任何帮助都会很棒。谢谢
解决方案
通过将 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 来提取数据的“记录”,然后当您单击按钮以“查看更多”时动态显示在框或页面上。但是,该示例将超出此问题的范围;)
推荐阅读
- google-sheets - 在一页数据洞察中过滤单个表
- windows - procdump 转储是否显示由于需求分页而从未加载的页面?
- html - 从 Boostrap 3 迁移的 Bootstrap 4 网格布局问题
- asp.net-core-3.1 - 使用依赖注入从 serilog .Net Core Web API 读取 InMemory 日志
- android - 无法在锁屏或应用程序处于后台时显示闹钟播放 ui
- sql - 在 Laravel 中使用 Eloquent 在模型中应用语句
- pandas - 平均熊猫数据框:重新采样,插值?
- hibernate - 以前有人处理过这个错误吗?(org.hibernate.action.internal.EntityActionVetoException:EntityInsertAction 被否决)
- matlab - Matlab中ARIMA-GARCH模型的滚动窗口预测
- mysql - SQL将别名写入永久列?