我试图创建一个小型的书签'我网站的功能。用户可以点击" .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);
});
});
以下是&#34; addBookmark.php&#34;:
的代码 <?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。
我的问题是,只有当一个项目被加入书签时,此脚本才有效。当有多个书签产品时,我只会获得上次加入书签的产品名称,而不是我收藏的所有内容。
例如,在点击如下的bookmarkButton类之后,而不是获取多个产品ID:数组中的0,1,2,3。我只得到最后点击的那个,即6.
我现在已经研究了一段时间了,我似乎无法看清我做错了什么。
答案 0 :(得分:0)
如果您发布了“rid”,脚本只会回显产品名称。
你也可以像这样写:
if (isset($_SESSION['ridArray'], $_POST['rid']) && is_array($_SESSION['ridArray'])) {
首先检查isset()。您还可以另外检查
... && count($_SESSION['ridArray'] > 0)
答案 1 :(得分:0)
我认为您的会话不会自动启动(是否可以在php.ini中设置自动启动,但默认情况下不会启动),所以
<?php
session_start();
其他想法:
SELECT * FROM示例WHERE id = $ x
你听说过SQL注入吗?
ps:不需要二次检查(之前已经检查过),第一个条件是第二个
is_array($ _ SESSION ['ridArray'])&amp;&amp; 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'];
}
}
?>