0

これはかなりまっすぐな気がします。私は次のような $_GET を持っています:

$cameFromCat = $_GET['cat'];
echo $cameFromCat;

これにより、予想どおり「カード」が読み上げられるため、後で次のように求めます。

if ($_POST['submission'] == "Continue Shopping") {

    Header("location: index.php?cat=" . $cameFromCat);

}

リンクから に移動しindex.php?cat=ます。「Cards」は読み上げません。ただし、var を次のようにハードコーディングすると、次のようになります。

 $cameFromCat = "Cards";

リンクから index.php?cat=Cards に移動します

それは私をひどく怒らせています。私は何を間違っていますか?

更新:周囲のコード:

$cart = $_SESSION['cart'];
$cameFromCat = $_GET['cat'];
$cameFromPage = $_GET['pagenum'];
$action = $_GET['action'];
$cardqty2 = $_POST['var'];

switch ($action) {
case 'add':
    if ($cart) {
        for ($i = 1; $i <= $cardqty2; $i++) {
            $cart .= ','.$_GET['id'];
        }
    } else {
        $cart = $_GET['id'];
        for ($i = 2; $i <= $cardqty2; $i++) {
            $cart .= ','.$_GET['id'];
        }
    }
    break;
case 'delete':
    if ($cart) {
        $items = explode(',',$cart);
        $newcart = '';
        foreach ($items as $item) {
            if ($_GET['id'] != $item) {
                if ($newcart != '') {
                    $newcart .= ','.$item;
                } else {
                    $newcart = $item;
                }
            }
        }
        $cart = $newcart;
    }
    break;
case 'update':

    if ($_POST['submission'] == "Update") {

    if ($cart) {
        $newcart = '';
        foreach ($_POST as $key=>$value) {
            if (stristr($key,'qty')) {
                $id = str_replace('qty','',$key);
                $items = ($newcart != '') ? explode(',',$newcart) : explode(',',$cart);
                $newcart = '';
                foreach ($items as $item) {
                    if ($id != $item) {
                        if ($newcart != '') {
                            $newcart .= ','.$item;
                        } else {
                            $newcart = $item;
                        }
                    }
                }
                for ($i=1;$i<=$value;$i++) {
                    if ($newcart != '') {
                        $newcart .= ','.$id;
                    } else {
                        $newcart = $id;
                    }
                }
            }
        }
    }
    $cart = $newcart;
    break;

}

if ($_POST['submission'] == "Checkout") {

 Header("Location: address.php");

}

if ($_POST['submission'] == "Continue Shopping") {

 Header("location: index.php?cat=" . $cameFromCat);

}

}

4

2 に答える 2

1

すべての POST および GET 値がスクリプトに適切に送信されていることを確認します。

// check if GET['cat'] isset
if(!isset($_GET['cat'])) {
    die('GET.cat not set');
}

// check if POST['submissuion'] isset    
if(!isset($_POST['submission'])) {
   die('POST.submission not set');
}

$cameFromCat = $_GET['cat'];
echo $cameFromCat;

if ($_POST['submission'] == "Continue Shopping") {
    Header("location: index.php?cat=" . $cameFromCat);
}
于 2013-04-24T21:42:05.067 に答える
0

問題はスイッチの状態に関連していると思います。

コードのこの部分を見てください。

case 'update':

    if ($_POST['submission'] == "Update") {

    if ($cart) {
        $newcart = '';
        foreach ($_POST as $key=>$value) {
            if (stristr($key,'qty')) {
                $id = str_replace('qty','',$key);
                $items = ($newcart != '') ? explode(',',$newcart) : explode(',',$cart);
                $newcart = '';
                foreach ($items as $item) {
                    if ($id != $item) {
                        if ($newcart != '') {
                            $newcart .= ','.$item;
                        } else {
                            $newcart = $item;
                        }
                    }
                }
                for ($i=1;$i<=$value;$i++) {
                    if ($newcart != '') {
                        $newcart .= ','.$id;
                    } else {
                        $newcart = $id;
                    }
                }
            }
        }
    }
    $cart = $newcart;
    break;

}

休憩; の中にありますif ($_POST['submission'] == "Update")

もう 1 つの問題は、switch ステートメントを囲む}が1 つ欠落していることです。

私の修飾された推測は、コードを次のように変更することです。

case 'update':
    if ($_POST['submission'] == "Update") {

    if ($cart) {
        $newcart = '';
        foreach ($_POST as $key=>$value) {
            if (stristr($key,'qty')) {
                $id = str_replace('qty','',$key);
                $items = ($newcart != '') ? explode(',',$newcart) : explode(',',$cart);
                $newcart = '';
                foreach ($items as $item) {
                    if ($id != $item) {
                        if ($newcart != '') {
                            $newcart .= ','.$item;
                        } else {
                            $newcart = $item;
                        }
                    }
                }
                for ($i=1;$i<=$value;$i++) {
                    if ($newcart != '') {
                        $newcart .= ','.$id;
                    } else {
                        $newcart = $id;
                    }
                }
            }
        }
    }
    $cart = $newcart;

    }
    break;
}
于 2013-04-24T22:09:52.643 に答える