有没有人可以帮我解决这个问题? 我正在尝试在我的网页上创建“收藏夹”功能。访问者可以看到不同的产品页面,并选择一个产品作为收藏。在页面顶部是一个图像。当访问者单击此图像时,将使用以下代码行加载页面:
<?php
session_start();
ini_set('display_errors', 1);
error_reporting(E_ALL);
define("PRODUCTNAME", 1);
define("inURL", 1);
if ($_SERVER['REQUEST_METHOD'] == 'POST')
{
if (isset($_POST['productname']))
{
AddToCart();
}
}
function AddToCart()
{
$cart = isset($_SESSION['cart']) ? $_SESSION['cart'] : '';
$itemcount = isset($_SESSION['itemcount']) ? $_SESSION['itemcount'] : 0;
$event = $_POST['productname'];
$savelink = $_POST['url'];
$cart[PRODUCTNAME][$itemcount] = array('eventnaam' => $event, 'savelink' => $savelink, 'favSRC' => 'favJA');
$itemcount = $itemcount + 1;
$_SESSION['cart'] = $cart;
$_SESSION['itemcount'] = $itemcount;
header('Location: ' . $_POST['url']);
exit;
}
?>
此代码创建不同的会话值,因为在产品页面上我需要显示一些内容。
在产品页面的顶部有标题。标题旁边会显示一个星形(带有src=favNEE.png
的图像,一个没有颜色的星形)。在页面的右侧,在另一个div
中显示标记产品列表。可以单击此文本(产品名称),以便访问者再次访问产品页面。产品页面的代码:
<?php
session_start();
ini_set('display_errors', 1);
error_reporting(E_ALL);
define("PRODUCTNAME", 1);
$cart = isset($_SESSION['cart']) ? $_SESSION['cart'] : '';
$itemcount = isset($_SESSION['itemcount']) ? $_SESSION['itemcount'] : 0;
$strHTML = "";
if ($itemcount == 0)
{
$strHTML = "<font class='bewaardeItems'>U heeft nog geen evenementen aangeklikt. </font>";
$imageSRC = 'favNEE';
}
else
{
$strHTML = "<div style=\"overflow:auto; height=358px;\">"."\n";
$strHTML .= "<table border=\"0\" cellpadding=\"3\" cellspacing=\"2\" width=\"100%\">"."\n";
for ($i=0; $i<$itemcount; $i++)
{
$strHTML .= "<tr>"."\n";
$strHTML .= "<td><a href='".$cart[PRODUCTNAME][$i]['savelink']."' class='bewaardeItems'>".$cart[PRODUCTNAME][$i]['eventnaam']."</a></td>"."\n";
$strHTML .= "</tr>"."\n";
if ($cart[PRODUCTNAME][$i]['favSRC'] == "favJA" && $cart[PRODUCTNAME][$i] ['eventnaam'] == "Blackout") {
$imageSRC = 'favJA';
}
else {
$imageSRC = 'favNEE';
}
}
$strHTML .= "</table>"."\n";
$strHTML .= "</div>"."\n";
};
?>
以上代码有效,我可以将多个产品标记为收藏,所有唯一名称在页面右侧显示为文本,图像src完全更改为favJA
(同一颗星但颜色为,所以访问者知道它被标记了)。但是,只要我点击另一个产品并将其标记为favit,它就会根据需要更改图像src,但会忘记之前标记的其他产品。右侧的列表包含所有唯一名称,它会记住所有标记的产品,但图像不会。图像仅识别最后一个产品。一旦新产品被标记,它就会标记所有其他图像。
我在这里缺少什么?无论标记的产品数量是多少,我如何保持图像标记?
答案 0 :(得分:0)
当您使用标签时,您需要制作一系列图像,并将所有图像添加到其中。并将它们显示在循环函数(foreach
或任何你想要的东西)
答案 1 :(得分:0)
所以我创建了一个解决方法。我已在代码中添加了新的SESSION
值,其中包含产品页面的名称和图片的值。
<?php
session_start();
ini_set('display_errors', 1);
error_reporting(E_ALL);
define("PRODUCTNAME", 1);
define("inURL", 1);
if ($_SERVER['REQUEST_METHOD'] == 'POST')
{
if (isset($_POST['productname']))
{
AddToCart();
}
}
function AddToCart()
{
$cart = isset($_SESSION['cart']) ? $_SESSION['cart'] : '';
$itemcount = isset($_SESSION['itemcount']) ? $_SESSION['itemcount'] : 0;
$event = $_POST['productname'];
$savelink = $_POST['url'];
$longeventname = $_POST['longeventname'];
$favIMGsrc = 'favJA';
$cart[PRODUCTNAME][$itemcount] = array('eventnaam' => $event, 'savelink' => $savelink);
$itemcount = $itemcount + 1;
$_SESSION['cart'] = $cart;
$_SESSION['event_url_'.$longeventname] = $favIMGsrc;
$_SESSION['itemcount'] = $itemcount;
header('Location: ' . $_POST['url']);
exit;
}
?>
在产品页面上,只需调用session
,然后让php比较它的值即可。如果值与YES匹配,则img src
设置为YES。如果该值返回NO,则img src
设置为NO。
<?php
session_start();
ini_set('display_errors', 1);
error_reporting(E_ALL);
define("PRODUCTNAME", 1);
$cart = isset($_SESSION['cart']) ? $_SESSION['cart'] : '';
$eventURL = isset($_SESSION['event_url_blackout']) ? $_SESSION['event_url_blackout'] : '';
$itemcount = isset($_SESSION['itemcount']) ? $_SESSION['itemcount'] : 0;
$strHTML = "";
if ($itemcount == 0)
{
$strHTML = "<font class='bewaardeItems'>U heeft nog geen evenementen aangeklikt. </font>";
$imageSRC = 'favNEE';
}
else
{
$strHTML = "<div style=\"overflow:auto; height=358px;\">"."\n";
$strHTML .= "<table border=\"0\" cellpadding=\"3\" cellspacing=\"2\" width=\"100%\">"."\n";
for ($i=0; $i<$itemcount; $i++)
{
$strHTML .= "<tr>"."\n";
$strHTML .= "<td><a href='".$cart[PRODUCTNAME][$i]['savelink']."' class='bewaardeItems'>".$cart[PRODUCTNAME][$i]['eventnaam']."</a></td>"."\n";
$strHTML .= "</tr>"."\n";
}
$strHTML .= "</table>"."\n";
$strHTML .= "</div>"."\n";
};
if ($eventURL == "favJA"){
$imageSRC = 'favJA';
} else {
$imageSRC = 'favNEE';
}
?>
解决了这个问题!