2016-02-26 17 views
-1

我有一個有趣的問題即時消息面臨。我有6個不同的項目在一個頁面上出售,而不是使每個項目的詳細視圖 6個不同的頁面我想使用PHP將所有6個項目鏈接從第一頁重定向到單詳細視圖頁和剛剛更新,這取決於被點擊PHP更改不同鏈接的會話數據

項目鏈接的詳細視圖頁面的圖片,描述和標題因此,代碼

<?php $merchandiseData = array('TITLE', 'DESCRIPTION', 'IMG_LINK'); 
     $_SESSION['merchandise'] = $merchandiseData; ?> 

<button onClick="window.location='item.html';" class="button"type="button">Add to Cart</button> 

<?php $merchandiseData = array('TITLE_2', 'DESCRIPTION_2', 'LINK_2'); 
     $_SESSION['merchandise'] = $merchandiseData; ?> 

<button onClick="window.location='item.html';" class="button">Add to Cart</button> 

所以基本上,這一代碼進入6次,6個不同鏈接的第二頁簡單從$ _SESSION ['merchandise']獲取數據;和回聲的出來的文檔

<p class="item-name"><?php echo $_SESSION['merchandise'][0] ?></p> 
<div class="picture" style="background-image: url(<?php echo $_SESSION['merchandise'][2] ?>)"></div> 
<p class="description"><?php echo $_SESSION['merchandise'][1]; session_destroy(); ?></p> 

所以我的問題是,$ merchandiseData將正常工作,當我點擊鏈接,但6個環節我點擊總是每一個導致同一圖像鏈接,標題,和描述,以及我傳遞給頁面上會話的最後一個數據數組。所以在上面我給出的例子中,即使我點擊第一個按鈕,它仍然會輸出第二個按鈕的數據,我不知道爲什麼?

任何幫助將不勝感激!或者,如果使用jquery或javascript id更容易的方式來做到這一點,愛知道!

+0

哦,連自己都不知道從哪裏開始 - 嘗試將服務器端代碼之間的差異谷歌和客戶端代碼。不要將會話用於此任務,只要使用GET參數來區分產品 –

+0

,那麼每次您將會話數據設置爲相同的變量時,它都會寫入以前的數據。最後設置的數據將用於該會話變量。 $ _SESSION ['merchandise'] ='data1'; $ _SESSION ['merchandise'] ='data2'; $ _SESSION ['merchandise'] ='data3'; 如果您打印$ _SESSION ['merchandise'],它總是顯示'data3'。 –

回答

0

您出現該問題的原因是因爲您將商品價值存儲在同一個會話變量中,因此您將覆蓋初始值並僅存儲最後一個值。如果你不介意嘗試這個辦法:

<?php $merchandiseData = array('TITLE', 'DESCRIPTION', 'IMG_LINK'); 
     $_SESSION['m1'] = $merchandiseData; ?> 

<button onClick="window.location='item.html?id=m1';" class="button"type="button">Add to Cart</button> 

<?php $merchandiseData = array('TITLE_2', 'DESCRIPTION_2', 'LINK_2'); 
     $_SESSION['m2'] = $merchandiseData; ?> 

<button onClick="window.location='item.html?id=m2';" class="button">Add to Cart</button> 

然後在第二頁你做這樣的事情:

<?php $id = $_GET['id']; ?> 
<p class="item-name"><?php echo $_SESSION[$id][0] ?></p> 
<div class="picture" style="background-image: url(<?php echo $_SESSION[$id][2] ?>)"></div> 
<p class="description"><?php echo $_SESSION[$id][1]; session_destroy(); ?></p> 
+0

非常感謝你的工作,我沒有想到我的會話被覆蓋,但這是非常有意義的! –

0

發生這種情況是因爲您的PHP代碼編譯1次。如果您在文件中編寫例如 ;

$_SESSION['test'] = 1; 
$_SESSION['test'] = 2; 

,並試圖讓$_SESSION['test'],你會得到2.因爲你會重寫您的會話。我認爲你需要這樣做幫助PHP腳本,或通過Ajax。