2014-03-24 3 views
0

이 질문에 나를 도울 수있는 사람이 있습니까? 내 웹 페이지에서 "즐겨 찾기"기능을 만들려고합니다. 방문자는 다른 제품 페이지를보고 한 제품을 즐겨 찾기로 선택할 수 있습니다. 페이지 상단에 이미지가 있습니다. 방문자가이 이미지를 클릭하면 페이지가이 코드 라인로드 : 제품 페이지에 내가 표시 몇 가지를 필요로하기 때문에세션을 사용하여 즐겨 찾기를 저장하는 방법은 무엇입니까?

<?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; 
} 
?> 

이 코드는 다른 sessionvalues을 만듭니다.

제품 페이지 상단에 제목이 있습니다. 제목 옆에는 별이 표시됩니다 (이미지에는 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에 완벽하게 변경 (동일한 별이지만 색상으로 표시되므로 방문자는 표시 함을 알고 있습니다). 그러나 다른 제품을 클릭하고이 이미지를 즐겨 찾기로 표시하자마자 이미지 src가 원하는대로 변경되지만 이전에 표시된 다른 제품은 잊어 버리게됩니다. 오른쪽의 목록에는 모든 고유 한 이름이 들어 있으며 표시되어있는 모든 제품을 기억하지만 이미지는 기억하지 않습니다. 이미지는 마지막 제품 만 인식합니다. 새로운 제품이 표시 되 자마자 다른 모든 이미지의 표시가 해제됩니다.

무엇이 여기에 있습니까? 마크 된 제품의 수에 관계없이 이미지를 어떻게 표시 할 수 있습니까?

답변

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'; 
     } 
?> 

그게 문제를 해결했습니다!

0

레이블로 작업 할 때 이미지 배열을 만들고 모든 소스를 추가해야합니다. 루프 함수 (foreach 또는 원하는대로)로 표시하십시오.

+0

그래서 내 모든 제품 또는 2 개의 이미지에 대한 배열을 만들어야합니까? 지금 당장 계속하는 법을 모르겠다. –

+0

관련 소스 코드를 게시하지 않았으므로 당신을 도울 수 없습니다. 이미지 처리를위한 PHP 코드 (또는 HTML)가 없습니다. –

+0

이미지를 호출하는 유일한 것은 '' –

관련 문제