3

我正在做一个项目,我使用数据库来存储一些书籍信息。第一步,我将数据库中的所有图书 ID 放入一个数组中,并使用该数组创建一个图像列表。这是我从数组 $book_list 生成变量 $previous_index 和 $next_index 的程序,其中 $book_list 存储整个数据库中书籍的所有 ID:

while($row = mysqli_fetch_array($sql)) {
    $current_index = find_array_index($current_id,$book_list); 
    $next_index = $current_index + 1;
    $previous_index = $current_index - 1;
    // previous key / returns false if result found at first key
    if ($previous_index >= 0) {
        $previous_id = $book_list[$previous_index];
    }
    else {
        $previous_id = 'Null';
    }
    // previous key / returns false if result found at first key
    if ($next_index <= sizeof($book_list)) {
        $next_id = $g_list[$next_index];
    }
    else {
        $next_id = 'Null';
    }

当用户点击图片列表时,他们会被引导到另一个页面,比如详情页,里面会显示这本书的所有细节,比如价格、作者……而且,我还设计了两个按钮,上一本书和下一本书,这样用户就可以移动到下一本书而无需返回主列表。我尝试使用序列化方法将数组 $book_list 传递给详细信息页面:

// pass global array between pages
$global_array = urlencode(serialize($book_list));
$link = 'book_detail.php?id=' . $current_id . '&array=' . $global_array ;

并在详细页面中获取数组的内容:

print_r(unserialize(urldecode(stripslashes($_GET['array'])))); 

但是,它在 print_r 函数中没有显示任何内容。

我的程序有问题吗?是否有另一种方法可以满足我的要求,而无需在几个 php 页面之间传递数组?

如果有人能给我提示,不胜感激。

4

4 回答 4

2

做这个...

<?php
session_start();

然后在会话变量中创建你的数组

$_SESSION['bookarray'] = '...';

只要您致电,就可以在所有其他页面上访问

session_start()

在页面顶部。

于 2013-07-18T16:33:40.163 回答
0

感谢大家!我可以通过使用 $SESSION 来解决这个问题。也许我错过了 session_start(); 在每页的最顶部。

于 2013-07-18T17:05:32.657 回答
0

如果它是所有书籍的列表,您为什么还要将其传递给用户?如果列表包含特定过滤器,则用户选择将其存储在会话中或将过滤器添加到链接。无论哪种方式,您都应该使链接看起来像book_detail.php?id=X,并在用户要求时选择带有 id X 的书的详细信息,并从那里创建到其他两个位置的链接(对 db 的简单查询将拉出这两行并且只有它们)。

于 2013-07-18T16:36:46.230 回答
0

您不能使用 $_SESSION[] 传递它吗?

于 2013-07-18T16:29:07.903 回答