2010-02-04 33 views
0

訂單頁面:在此頁面上,客戶可以選擇添加具有不同外語和其他選項的名片訂單。如何在PHP中回顯動態會話變量?

當用戶點擊一個按鈕添加額外的卡時,javaScript會添加一系列表單字段,並且爲了給它們賦予唯一的名稱屬性,我只是在每個組的名稱末尾添加一個計數器變量所以我可以將它們保存爲一組獨特的會話變量,其中每個表單字段具有不同的名稱,但末尾具有相同的計數器編號,因此我知道它們屬於一個整體。

這些會話變量我 節約當用戶提交表單 去到下一個頁面:

  • $ _SESSION [數量1] = 500
  • $ _SESSION [LANGUAGE1] =韓國
  • $ _SESSION [quantity2] = 250
  • $ _SESSION [LANGUAGE2] =中國

結帳頁面:在此頁面上,我希望它能夠爲每個訂購的不同卡片回顯信息。

我想在會話變量結束時在結帳頁面上使用相同數字回顯所有會話變量。到目前爲止,我使用的是一個foreach循環來回顯所有會話變量,但我試圖只回顯名稱末尾帶有'1'或名稱末尾帶有'2'的那些等等,並將它們組合在一起。

因此理想情況下,我想是這樣的:

令#1,
數量:500,
卡上語言:韓語

訂單#2,
數量:250 ,
卡上語言:中文

我可以在結帳頁面上回顯並分組這些動態會話變量嗎?

回答

3

重組:

  • $ _SESSION [爲了] [1] [數量] = 500
  • $ _SESSION [爲了] [1] [語言] =韓國
  • $ _SESSION [爲了] [2] [數量] = 250
  • $ _SESSION [爲了] [2] [語言] =中國

這樣,你可以在使用乾淨利落。

+0

我喜歡這個主意。我設法按照您的建議保存會話,但我不太清楚如何編寫foreach循環以及「order」的含義。我無法在php.net – zeckdude 2010-02-04 10:51:35

+0

'foreach($ _ SESSION ['order'] as order){...}' – 2010-02-04 11:03:03

+0

找到這個函數我想我需要在foreach循環中放入一個foreach循環。謝謝! – zeckdude 2010-02-04 11:15:46

1

分組字段相對容易。只需循環遍歷它們,在最後拉出數字並將它們分組到另一個數組中。

$vars = array(); 
foreach ($_SESSION as $k => $v) { 
    if (preg_match('!\d+$!', $k, $matches)) { 
    $number = $matches[0]; 
    if (array_key_exists($number, $vars)) { 
     $vars[$number][$k] = $v; 
    } else { 
     $vars[$number] = array($k => $v); 
    } 
    } 
} 
print_r($vars); 

要顯示他們遍歷$vars,做你需要做什麼。如果您想按特定順序排列,您可能需要對$vars進行排序。您可能需要對子數組進行排序才能將字段按特定順序排列。保存到它時,您的會話,而不是

4

爲什麼不以這種方式存儲會話?

$_SESSION[orders] => array(
    [0]=>array(
    'quantity'=>1, 
    'language'=>'Korean' 
    ), 
    [1]=>array(
    'quantity'=>2, 
    'language'=>'Chinese' 
    ), 
) 

然後結帳網頁上的迭代將是簡單