社交网络墙发布逻辑不起作用

时间:2012-07-29 22:12:32

标签: php jquery mysql

通过屏幕截图和下面的代码,我试图将“删除按钮”仅显示给墙贴的所有者。我以Michael Grigsby的身份登录,你可以从屏幕截图中看出,第一个墙贴是隐藏“删除按钮”,但其余部分甚至显示在我不应该拥有的Mike Wyatt帖子上。 / p>

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

enter image description here

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 } ?>

2 个答案:

答案 0 :(得分:3)

我在看这个:

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

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

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

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

答案 1 :(得分:3)

#delPost表示您正在使用id="delPost"。但是,HTML要求ID是唯一的。您可能希望改为使用class="delPost".delPost