0

通过屏幕截图和下面的代码,我试图让“删除按钮”只显示给墙帖的所有者。我以 Michael Grigsby 的身份登录,您可以从屏幕截图中看出,第一个墙帖隐藏了“删除按钮”,但即使涉及到我不应该拥有的 Mike Wyatt 帖子,其余的也会显示。

我无法弄清楚为什么会这样。我有两种可能;要么我必须在 jQuery 中遍历墙上的帖子,要么我的 SQL 语句写得不正确。关于为什么这样做的任何想法?

在此处输入图像描述

PHP 和 jQuery 代码:

<?php   $this->load->helper('date');
        $userid = $this->session->userdata('userid');
        $query  = $this->db->query("SELECT * FROM churchMembers WHERE cMuserId = '{$userid}'");
        $row = $query->row();
        if ($query->num_rows() != 0) {
        $membersChurchId = $row->cMchurchId;
        $query2 = $this->db->query("SELECT wp.idwallPosts, wp.entryData, wp.entryCreationDateTime, u.firstname, u.lastname, u.userid, u.defaultImgURI FROM users u
                                   INNER JOIN wallPosts wp ON wp.postingUserid = u.userid
                                   WHERE wp.wpChurchId = '{$membersChurchId}' ORDER BY wp.idwallPosts DESC LIMIT 200");
foreach ($query2->result() as $row) { ?>
    <?php // the following php is the bootstrapper for the wall
        if ($userid != $row->userid) { ?>
            <script type="text/javascript">
                $(document).ready(function() {
                    $("#delPost").remove();
                });
            </script>
<?php } ?>
4

2 回答 2

3

我正在看这个:

$("#delPost").remove();

...并认为您可能id="delPost"对每个项目都有。关于属性的一个常见误解id是你可以重用它们,但你不能。每个页面只能有一个元素id="delPost"验证您的 HTML 会显示错误)。

无论如何,您的脚本只读取第一个,如演示所示。每个 id 必须是唯一的,您可能想要切换到class并重新考虑您的逻辑,但这并没有太大意义,因为在该循环中,一旦隐藏一个元素,它们就会全部是因为您的选择器不是很特定的(适用于与您的选择器匹配的每个元素,循环/重复该脚本是多余的)。

有很多方法可以解决这个问题,但我建议:不要使用 javascript 隐藏或删除它们,而不要使用 PHP 代码输出它们。

于 2012-07-29T22:18:49.337 回答
3

#delPost表示您正在使用id="delPost". 然而,HTML 要求 ID 是唯一的。您可能想使用class="delPost"and.delPost来代替。

于 2012-07-29T22:18:52.010 回答