0

注文ページ:このページでは、顧客はさまざまな外国語やその他のオプションで名刺注文を追加することができます。

ユーザーがボタンをクリックしてカードを追加すると、JavaScript が一連のフォーム フィールドを追加し、それらに一意の名前属性を与えるために、フィールドの各グループの名前の末尾にカウンター変数を追加するだけです。それらをセッション変数の一意のグループとして保存できます。各フォーム フィールドには異なる名前が付いていますが、最後に同じカウンター番号が付けられているため、それらが一緒に属していることがわかります。

これらは、ユーザーがフォームを送信して次のページに移動するときに保存しているセッション変数です。

  • $_SESSION[数量 1] = 500
  • $_SESSION[language1] = 韓国語
  • $_SESSION[数量 2] = 250
  • $_SESSION[language2] = 中国語

チェックアウト ページ:このページでは、注文したカードごとに情報をエコーアウトしたいと考えています。

チェックアウトページのセッション変数の最後に同じ番号を持つすべてのセッション変数をエコーアウトしようとしています。これまでのところ、foreach ループを使用してすべてのセッション変数をエコーアウトしていますが、名前の末尾に「1」があるもの、または名前の末尾に「2」があるもののみをエコーアウトしようとしています。などをまとめてグループ化します。

理想的には、次のようなものが欲しいです:

注文 #1、
数量: 500、
カードの言語: 韓国語

注文 #2、
数量: 250、
カードの言語: 中国語

チェックアウト ページでこれらの動的セッション変数をエコーし​​てグループ化するにはどうすればよいですか?

4

3 に答える 3

4

このような方法でセッションに保存してみませんか?

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

その後、チェックアウトページでの繰り返しは簡単になります

于 2010-02-04T09:46:37.373 に答える
3

代わりに保存するときにセッションを再構築します。

  • $_SESSION[注文][1][数量] = 500
  • $_SESSION[order][1][language] = 韓国語
  • $_SESSION[注文][2][数量] = 250
  • $_SESSION[注文][2][言語] = 中国語

そうすれば、foreach()onorderを使用してすべてをきれいに取得できます。

于 2010-02-04T09:45:59.307 に答える
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特定の順序で並べたい場合は、並べ替える必要がある場合があります。サブ配列をソートして、フィールドを特定の順序に並べる必要がある場合があります。

于 2010-02-04T09:44:32.880 に答える