将表中的user_id传递给另一个页面

时间:2014-08-15 23:40:13

标签: php html

我有一个我在表格中报告的用户列表。第一列包含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)上时,没有任何反应。该应用程序似乎没有尝试执行任何操作。我错过了什么? - 谢谢。

2 个答案:

答案 0 :(得分:0)

  1. 您正在混合使用PHP和JS。在onclick处理程序中调用的函数必须是JS,它不能是php。

  2. 通过网址传递ID有什么问题?这显然是唯一简单实用的解决方案。替代方案是:

    • 使用Cookie,但如果用户在您的网站上打开多个标签/窗口,或者想要为该页面添加书签,或者在重新启动浏览器后重新打开,那就太乱了。这真的没什么帮助。

    • 使用某种指向用户ID的其他ID,但只是添加了另一个图层。

  3. 除非您告诉我们您为什么不想通过网址传递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

获取ID

如果您愿意并且能够使用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>