0

ショッピングカートを持っています。カートにアイテムを追加したり、数量を変更したり、アイテムを削除したりすると、カートが空になります。最初のショッピングカートのコードは次のとおりです。

編集:

<?php 
session_start();
require "C:/xampp/...../DButils.php";
require "C:/xampp/..../functions.php";
$msg = '';
if(isset($_REQUEST['command']) && isset($_REQUEST['pid'])>0)
 {
    remove_product($_REQUEST['pid']);
}
else if(isset($_REQUEST['command']) && $_REQUEST['command'] == 'clear'){
    unset($_SESSION['cart']);
}
else if(isset($_REQUEST['command']) && $_REQUEST['command'] == 'update'){
    $max=count($_SESSION['cart']);
    for($i=0;$i<$max;$i++){
        $pid=$_SESSION['cart'][$i]['productid'];
        $q=intval($_REQUEST['product'.$pid]);
        if($q>0 && $q<=999){
            $_SESSION['cart'][$i]['qty']=$q;
        }
        else{
            $msg='Some proudcts not updated!, quantity must be a number between 1 and 999';
        }
    }
}

 ?>
4

4 に答える 4

0

isset()機能を正しく使用していません。これは、値の文字列ではなく、ブール値 true または false を返します。あなたがおそらくやろうとしていることは次のとおりです。

else if(isset($_REQUEST['command']) && $_REQUEST['command'] == 'clear'){

...と...

else if(isset($_REQUEST['command']) && $_REQUEST['command'] == 'update'){

これらの変更がなければ、true/false が「クリア」または「更新」と等しくならないため、これらのコード ブロックを実行することはできません。

于 2013-02-11T17:56:42.227 に答える
0
if(isset($_REQUEST['command']) && $_REQUEST['command']=='add' && $_REQUEST['productid']>0)
{
    remove_product($_REQUEST['pid']);
}

商品を追加したいときに商品を削除しようとしているようです。

また、@cillosisが言及したように

else if(isset($_REQUEST['command'])=='update'){

常に false と評価されます。これは、isset() が BOOLEAN 値 (true、false、1、0) のみを返し、条件を評価しているためです。文字列「update」に変更すると、テストは毎回失敗します。

質問のコードを更新して、指摘されたエラーを削除すると、質問への回答が容易になる場合があります。現在書かれているため、解読するのはかなり困難です。

于 2013-02-11T18:12:19.767 に答える
0

サーバー言語(php)が指定されたディレクトリを理解していないことを私が知っていることから、requireのような有効なディレクトリを作成してみてくださいprojectName/functions.php;。それも役立つことを願っています。

于 2013-08-30T11:41:25.047 に答える