我有一个我在表格中报告的用户列表。第一列包含user_id,我想将其传递给另一个显示用户详细信息的页面。我不想通过带有$ _GET的URL传递它。我该怎么做呢?我只能使用HTML& PHP。我看到的一个帖子似乎是在正确的轨道上,但我无法让它工作。这就是我所拥有的:
<h1>Maintain Users</h1>
<div id="ir-report">
<table class="table">
<tr class = "table tr">
<th class="table th">User Id</th>
<th>Username</th>
<th>Name</th>
<th>Email</th>
<th>Activated?</th>
<th>Type</th>
<th>Account Nbr</th>
</tr>
<?php while ($row = mysqli_fetch_assoc($query))
{?>
<tr class="table tr">
<td class ="table td" onclick="submit_id($row['user_id'])"><img src="images\editpensil.jpg" alt="UserId" width="25" height="25"></td>
<td><?php echo $row['username'] ?></td>
<td><?php echo $row['first_name'] ?></td>
<td><?php echo $row['email'] ?></td>
<td><?php echo $row['active'] ?></td>
<td><?php echo $row['type'] ?></td>
<td><?php echo $row['acct_nbr'] ?></td>
</tr>
<?php } ?>
</table>
</div>
我期待发生的事情是&#34;点击&#34;将调用函数submit_id($ var)。为了测试这是否有效,我的功能暂时非常简单:
function submit_id($var) {
header('Location: index.php');
exit();
}
但是当我在编辑图标(editpensil.jpg)上时,没有任何反应。该应用程序似乎没有尝试执行任何操作。我错过了什么? - 谢谢。
答案 0 :(得分:0)
您正在混合使用PHP和JS。在onclick
处理程序中调用的函数必须是JS,它不能是php。
通过网址传递ID有什么问题?这显然是唯一简单实用的解决方案。替代方案是:
使用Cookie,但如果用户在您的网站上打开多个标签/窗口,或者想要为该页面添加书签,或者在重新启动浏览器后重新打开,那就太乱了。这真的没什么帮助。
使用某种指向用户ID的其他ID,但只是添加了另一个图层。
除非您告诉我们您为什么不想通过网址传递ID,否则很难提出任何建议。
答案 1 :(得分:0)
您无法从onclick
属性或任何其他on
属性调用PHP函数。这些函数必须是Javascript函数。
如果你确实需要/想要不通过GET传递id,你可以将表格包裹在<form>
中,action
设置为你要发送给它的页面,并带有{ {1}} method
和隐藏的输入字段。我知道你的问题说你只能使用HTML和PHP;没有Javascript,你真正做到这一点的唯一方法是在表单/表格中添加一个按钮。您可以使用CSS来设置样式,使其看起来像一个链接,或任何非按钮之类的。
没有Javascript的示例:
POST
点击该按钮后,表单将发布到<form action="index.php" method="post">
<tr class="table tr">
<td class ="table td">
<img src="images\editpensil.jpg" alt="UserId" width="25" height="25">
</td>
<td><?php echo $row['username'] ?></td>
<td><?php echo $row['first_name'] ?></td>
<td><?php echo $row['email'] ?></td>
<td><?php echo $row['active'] ?></td>
<td><?php echo $row['type'] ?></td>
<td><?php echo $row['acct_nbr'] ?></td>
<td><input type="submit" value="Link to" /></td>
</tr>
<input type="hidden" name="user_id" value="<?php echo $row['user_id'] ?>" />
</form>
,您可以通过index.php
如果您愿意并且能够使用Javascript,您应该能够执行以下HTML / PHP:
$_POST['user_id']
以下Javascript,虽然这只适用于IE9 +:
<form action="index.php" method="post" id="user_form_<?php echo $row['user_id'] ?>">
<tr class="table tr">
<td class ="table td user_id_link" data-userid="<?php echo $row['user_id'] ?>">
<img src="images\editpensil.jpg" alt="UserId" width="25" height="25">
</td>
<td><?php echo $row['username'] ?></td>
<td><?php echo $row['first_name'] ?></td>
<td><?php echo $row['email'] ?></td>
<td><?php echo $row['active'] ?></td>
<td><?php echo $row['type'] ?></td>
<td><?php echo $row['acct_nbr'] ?></td>
</tr>
<input type="hidden" name="user_id" value="<?php echo $row['user_id'] ?>" />
</form>
或更清晰的jQuery版本,它具有更好的浏览器兼容性,对于Web开发人员来说确实是一个非常宝贵的工具包:
HTML / PHP:
var links = document.getElementsByClassName('user_id_link');
for (link in links) {
link.addEventListener('click', function() {
var formId = 'user_form_' + this.userid;
document.getElementById(formId).submit();
}, false);
}
的Javascript / jQuery的:
<form action="index.php" method="post">
<tr class="table tr">
<td class ="table td user-id-link">
<img src="images\editpensil.jpg" alt="UserId" width="25" height="25">
</td>
<td><?php echo $row['username'] ?></td>
<td><?php echo $row['first_name'] ?></td>
<td><?php echo $row['email'] ?></td>
<td><?php echo $row['active'] ?></td>
<td><?php echo $row['type'] ?></td>
<td><?php echo $row['acct_nbr'] ?></td>
</tr>
<input type="hidden" name="user_id" value="<?php echo $row['user_id'] ?>" />
</form>