如何将项目/帖子添加到收藏夹

时间:2015-12-14 22:34:34

标签: php jquery mysql ajax database

我正在尝试创建一个按钮,允许用户使用php和jquery(ajax)来收藏某些帖子。我一直试图在这里使用This answer来使它全部正常工作,但是我在获取特定于帖子的帖子ID方面遇到了问题,而且它总是给出了帖子ID要在页面上加载的最后一篇文章。这是我的代码,但我怀疑我可能只是在修改它时犯了错误。

我有3张桌子;用户,帖子和收藏夹。在用户中我有用户名密码和ID,帖子我有id(和内容),在收藏夹中我有id,userid和postid。 Jquery的:

<script>
    $(document).ready(function() {
    $('.favourite').on('click', null, function() {
    var _this = $(this);
    var postid = _this.data('$postid');
    $.ajax({
      type     : 'POST',
      url      : '/add.php',
      dataType : 'json',
      data     : '$postid='+ postid,
      complete : function(data) {
           if(_this.siblings('.favourite'))
           {
             _this.html('<img src="add2.png" />');
           }
           else
           {
             _this.html('<img src="add1.png />');
           }
        }
        });
    });
});
</script>

主PHP(index.php):

    <?php
    $getposts = mysql_query("SELECT * FROM Posts ORDER BY id DESC") or die(mysql_query());
    while ($row = mysql_fetch_assoc($getposts))
    {
    $id = $row['id'];
    $user = $_SESSION['user'];
    $findid = mysql_query("select * from Users where username='$user'");

    if ($rows = mysql_fetch_assoc($findid));
    {
        $userid= $rows['id'];
        $postid= $id;
    }
    echo '<a href="#" class="favourite" data-id="' . $postid . '"><img src="add1.png" /></a>';
    }
    ?>

(还有其他代码,但与本节无关。)

add.php:

    <?php
    session_start();
    require_once('connect.php');

    $userid = $_SESSION['$id'];
    $postid = $_SESSION['$postid'];

    $query_favorite = "SELECT userid, postid FROM Favourites";
    $favorite = mysql_query($query_favorite) or die(mysql_error());
    $row_favorite = mysql_fetch_assoc($favorite);
    $totalRows_favorite = mysql_num_rows($favorite);

    if(in_array($_POST['id'], $row_favorite))
    {
    $Del="DELETE FROM Favourites WHERE userid='$userid' AND postid='$postid'";
    $result = mysql_query($Del);

    }
    else
    {
    $Add = "INSERT INTO Favourites (userid, postid) VALUES ('$userid', '$postid')";
    $result = mysql_query($Add);
    }

    ?>

提前感谢您的任何帮助!

1 个答案:

答案 0 :(得分:1)

在main.php中,您使用的是data-id="' . $postid . '"。 哪个将postId插入到HTML中,对吧?

但是在您的Javascript中,您尝试使用

获取此数据元素
  1. var postid = _this.data('$postid');
  2. data : '$postid='+ postid,
  3. 而不是

    1. var post_id = _this.data('id');
    2. data : 'id='+ post_id,
    3. 因为您的数据属性不是data-$postid,而是data-id

      add.php中的相同错误:

      1. $userid = $_SESSION['$id'];
      2. $postid = $_SESSION['$postid'];
      3. 没有单身:

        1. $userid = $_SESSION[$id];
        2. $postid = $_SESSION[$postid];
        3. 因为,当你单引号变量时,它的字符串为“$ id”, 这不是$ _SESSION。

          并且您必须使用您的AJAX请求从$id数据发送中获取$_POST(postid)。缺少的代码是:json_decode传入POST并获取id,然后使用它......

          调试提示:

          1. 测试数据是否已插入HTML
          2. var_dump($_POST);添加到add.php以查看AJAX请求发布的数据。 “id”应该是其中的一部分。
          3. json_decode()传入的$_POST获取ID
          4. 然后将其用于其他变量