我试图在用户每次点击类别后将内容添加到数组中,但由于某种原因,它不断替换数组中的所有内容。我不知道我哪里出错了。我尝试过"谷歌搜索"它,我找到的每个示例看起来都与我写的相似。请帮忙!
这些函数存储在核心中.php
function getStoreBacktrace($cat) {
include("config.php");
$backtrace = array();
if ($cat != 0) {
array_push($backtrace, $cat);
}
if (count($backtrace != 0)) {
foreach($backtrace as $c){
echo getBackCatName($c);
}
}
print_r($backtrace); // Put this to see what output is
}
function getBackCatName($c) {
include("config.php");
$query = 'SELECT * FROM `home_store_cats` WHERE `id`="'.$c.'"';
$r_query = mysql_query($query);
$result = mysql_fetch_array($r_query);
echo ' > <a href="?cat='.$result['id'].'">'.$result['name'].'</a>';
}
此函数打印出用户可以单击的链接列表
function getStoreCat($cat) {
include("config.php");
$query = 'SELECT * FROM `home_store_cats` WHERE `main`="'.$cat.'" ORDER BY `name` ASC';
$r_query = mysql_query($query);
echo '<ul>';
while ($result = mysql_fetch_array($r_query)) {
echo '<li>';
echo '<a href="?cat='.$result['id'].'">'.$result['name'].'</a>';
echo '</li>';
}
echo '</ul>';
}
它在商店里被调用.php
<?php
include("config.php");
include("core.php");
$backtrace = array();
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<title><?php echo getSiteTitle().' :: '.getSiteSlogan(); ?></title>
</head>
<body>
<table width="100%">
<tr>
<td colspan="2">
<!-- Backtrace -->
<a href="store.php">Home</a>
<?php echo getStoreBacktrace($cat, $backtrace); ?>
</td>
</tr>
<tr>
<td>
<!-- Categories -->
<table>
<tr>
<td><?php echo getStoreCat($cat); ?></td>
</tr>
</table>
</td>
<td>
<!-- Products -->
<table>
<tr>
<?php echo getStoreProducts($cat); ?>
</tr>
</table>
</td>
</tr>
</table>
</body>
</html>
现在,每当用户单击由该功能创建的链接时getStoreCat($cat)
它都会刷新页面,其中包含要单击的新链接和要显示的新产品,具体取决于他们选择$cat
。 我想将$cat
推送到 $backtrace
数组。
就在这里:
$backtrace = array();
您正在有效地为每次调用 getStoreBacktrace()
重置数组。
编辑:
感谢您解决您的问题。现在很明显,问题是您需要通过多个页面视图使$backtrace
持久化。使用会话执行此操作:
页面模板
<?php
session_start(); // enable sessions
include("config.php");
include("core.php");
?>
<!DOCTYPE html>
etc...
函数定义
<?php
function getStoreBacktrace($cat) {
include_once("config.php"); // use include_once() to prevent possible errors
if (!isset($_SESSION['backtrace']))
$_SESSION['backtrace']= array();
if ($cat != 0) {
array_push($_SESSION['backtrace'], $cat);
}
...
每次调用getStoreBacktrace时,您都会在$backtrace中实例化一个全新的数组。