0

我试图为我的网站创建一个小的“书签”功能。用户可以单击“.bookmarkButton”,它将执行以下脚本:

<!--Add To Bookmarks--> 
        $(".bookmarkButton").click(function() {
            var pid=$(this).closest('div').attr('id');
            $('#noBookmark').hide(); 
            $.post('bookmarks/addBookmark.php', 'rid=' + pid, function (addBookmark) {
              $("#bookmarkResults").add(addBookmark);
           });  
       });

这是“addBookmark.php”的代码:

    <?php

session_start();

if (isset($_SESSION['ridArray']) && count($_SESSION['ridArray'] > 0)){
    addBookmark();

} else if (isset($_POST['rid']) && !isset($_SESSION['ridArray'])) { 
    $_SESSION['ridArray'] = array(); 
    addBookmark(); 
}


function addBookmark() {  
    if (is_array($_SESSION['ridArray']) && isset($_SESSION['ridArray']) && isset( $_POST['rid']) ) { 
            array_push($_SESSION['ridArray'], $_POST['rid']); //push the id value from post to the session array
            //$_SESSION['ridArrayClean'] = array_unique($_SESSION['ridArray']); //remove duplicates
            print_r($_SESSION['ridArray']); 

            foreach($_SESSION['ridArray'] as $x) {
                // Get all the data from the "example" table
                $result = mysql_query("SELECT * FROM example WHERE id = $x") 
                or die(mysql_error()); 
                $row = mysql_fetch_array( $result );
                echo $row['productname'];
    }}}

    ?>

该变量$_SESSION['ridArray']保存具有已累积的所有 id 的数组。

我的问题是该脚本仅在为一项添加书签时才有效。当有多个产品加入书签时,我只会得到最后加入书签的产品名称,而不是我加入书签的所有东西。

因此,例如,在单击这样的书签按钮类后,而不是获取多个产品 ID:数组中的 0,1,2,3。我只得到最后点击的那个,即 6。

我已经研究了一段时间了,我似乎看不出我做错了什么。

4

2 回答 2

0

The script only echos the productnames, if you posted a "rid".

Also you could write the if like this:

if (isset($_SESSION['ridArray'], $_POST['rid']) && is_array($_SESSION['ridArray'])) { 

Checking isset() first. Also you could additionally check for

... && count($_SESSION['ridArray'] > 0)
于 2012-01-28T07:22:02.057 回答
0

我认为您的会话不会自动启动(是否可以在 php.ini 中设置其自动启动,但默认情况下不会),所以

<?php
session_start();

其他想法:

SELECT * FROM 示例 WHERE id = $x

你听说过 SQL 注入吗?

ps:不需要二次检查(之前检查过)并且从第一个条件开始遵循第二个条件

is_array($_SESSION['ridArray']) && isset($_SESSION['ridArray'])

我会把它写成

<?php
session_start();
if (isset($_POST['rid'])) { 
    addBookmark(intval($_POST['rid'])); 
}


function addBookmark($rid) {  
     $_SESSION['ridArray'][] = $rid; 
     $_SESSION['ridArray'] = array_unique($_SESSION['ridArray']);

     foreach($_SESSION['ridArray'] as $x) {
         $result = mysql_query("SELECT * FROM example WHERE id = '$x'") 
                   or die(mysql_error()); 
         $row = mysql_fetch_array( $result );
         echo $row['productname'];
     }
}
?>
于 2012-01-28T08:06:58.460 回答