New Ribbon
用Canva設計超快超質感(第2版):商業設計、簡報、影片、網頁、電子書與AI應用最速技 AI繪圖工具 × AI視覺設計平台,從圖像生成到專業設計! 最強職場助攻!ChatGPT + AI 高效工作術 短影音制霸:打造TikTok、YT Shorts、IG Reels成功方程式與AI高效創作力 Canva+AI創意設計與品牌應用250招:從商業技巧、社群祕技到AI圖文影音特效 快快樂樂學威力導演2024.影音剪輯與AI精彩創作 Power Automate自動化超效率工作術 Midjourney AI圖像魔導書:搭配ChatGPT魔法加倍 超人氣FB+IG+LINE社群經營與行銷力(第二版) 翻倍效率工作術:不會就太可惜的 Excel × ChatGPT 自動化應用 AppInventor2零基礎入門班中文版(第六版) Python零基礎入門班(第四版) C語言學習聖經 用Canva設計超快超質感:平面、網頁、電子書、簡報、影片製作與AI繪圖最速技 PHP8/MySQL網頁程式設計自學聖經 翻倍效率工作術 - 不會就太可惜的Power BI大數據視覺圖表設計與分析(第三版) 社群經營一定要會的影音剪輯與動畫製作術 Notion高效管理250招:筆記×資料庫×團隊協作,數位生活與工作最佳幫手 Office 2021高效實用範例必修16課(附500分鐘影音教學/範例檔) Excel自學聖經(第二版):從完整入門到職場活用的技巧與實例大全

 

  關於挑戰PHP5的購物車問題

Allison Chuo

Allison Chuo
更新時間:2009/12/13 下午 10:48:09

 

目前使用購物車的範例來修改練習,但是按下加入購物車時,跑不出加入的產品資料,只能顯示目前購物車內沒有產品

cartProduct.php
if(!is_object($cart))
{
$cart = new wfCart();
}

// 加入購物車button,新增選擇產品至購物車,判斷$_POST["cartaction"]
if(isset($_POST["cartaction"]) && ($_POST["cartaction"]=="add"))
{
$cart->add_item($_POST['pid'],$_POST['qy'],$_POST['price'],$_POST['pname']);

header("Location: cartMy.php");
}

echo "<form name='formToCartMy' method='post' action=''>";
echo "<input name='pname' type='' id='pid' value='".$row_RecProduct["pid"]."'>";
echo "<input name='pname' type='' id='pname' value='".$row_RecProduct["pname"]."'>";
        echo "<input name='price' type='' id='price' value='".$row_RecProduct["price"]."'>";
        echo "<input name='qy' type='' id='qy' value='1'>";//default buy value is one.
        echo "<input name='cartaction' type='' id='cartaction' value='add'>";
echo "<input type='submit' name='button3' id='button3' value='加入購物車'>";
        echo "<input type='button' name='button4' id='button4' value='回上一頁' onClick='window.history.back();'>";
    echo "</form>";
-----------------------------
libShoppingCart.php


function get_contents()
{
$items = array();
//使用foreach將items中的每筆資料暫存於item中,最後將資料回存至items
foreach($this->items as $tmp_item)
{
        $item = FALSE;//將item歸零
$item['id'] = $tmp_item;
$item['qty'] = $this->itemqtys[$tmp_item];
$item['price'] = $this->itemprices[$tmp_item];
$item['info'] = $this->iteminfo[$tmp_item];
$item['subtotal'] = $item['qty'] * $item['price'];
                $items[] = $item;
}
return $items;
}

// 新增產品至購物車 adds an item to cart
// 從cartProduct導入 產品編號 數量 價錢 產品名稱
function add_item($itemid,$qty=1,$price = FALSE, $info = FALSE)
{
// 判斷購物車中是否有此筆資料,如果有則更新數量,沒有則新增產品資料到購物車的陣列之中
if($this->itemqtys[$itemid] > 0)
    {
$this->itemqtys[$itemid] = $qty + $this->itemqtys[$itemid];
$this->_update_total();
}
else
{
$this->items[]=$itemid;
$this->itemqtys[$itemid] = $qty;
$this->itemprices[$itemid] = $price;
$this->iteminfo[$itemid] = $info;
}

$this->_update_total();
}
function _update_total()
{
        $this->itemcount = 0; //itemcount計次用
$this->total = 0;
            if(sizeof($this->items > 0)) //sizeof()計算指定陣列中的元素項目
{
foreach($this->items as $item) // 計算購物車內不含運費之總金額
{
$this->total = $this->total + ($this->itemprices[$item] * $this->itemqtys[$item]);
$this->itemcount++;
}
}
if($this->total >= 1000)
{
$this->deliverfee = 0;
}
else
{
$this->deliverfee = 500;
}
$this->grandtotal = $this->total+$this->deliverfee;
}

麻煩老師幫忙解答,完整檔案以mail至您的信箱,謝謝!

Allison Chuo

Allison Chuo
更新時間:2009/12/14 上午 11:14:19

 

今天有再去trace程式,發現在我修改的cart.php中的$cart->itemcount > 0,這段無法載入輸入的筆數,有在上面加上foreach去列印,確定值有存在,但是在$cart->itemcount值無法載入,請問這是什麼問題呢?

謝謝!

Allison Chuo

Allison Chuo
更新時間:2009/12/14 下午 12:18:06

 

如果將if(!is_object($cart)) $cart = new wfCart(); 修改為

if(is_object($cart))
{
foreach($_SESSION['cart'] as $itemName=>$itemValue)
{
if(!is_Array($itemValue))
{
echo "true<br/>";
echo $itemName." ".$itemValue."<br />";
}
else
{
echo $itemName."<br />";
foreach($itemValue as $arrVal)
{
echo $arrVal."<br />";
}
}
}
}
else
{
foreach($_SESSION['cart'] as $itemName=>$itemValue)
{
if(!is_Array($itemValue))
{
echo "false<br/>";
echo $itemName." ".$itemValue."<br />";
}
else
{
echo $itemName."<br />";
foreach($itemValue as $arrVal)
{
echo $arrVal."<br />";
}
}
}
//$cart = new wfCart();
}

則出現
false
__PHP_Incomplete_Class_Name wfCart
false
itemcount 0
false
total 0
false
deliverfee 0
false
grandtotal 0
itemprices
itemqtys
iteminfo

Fatal error: main() [<a href='function.main'>function.main</a>]: The script tried to execute a method or access a property of an incomplete object. Please ensure that the class definition "wfCart" of the object you are trying to operate on was loaded _before_ unserialize() gets called or provide a __autoload() function to load the class definition in C:\WebApps\wamp\www\ingle\cartProduct.php on line 73




 

 

Re:關於挑戰PHP5的購物車問題

請輸入姓名。

已超出字元數目的最大值。


請輸入電子郵件。

格式無效。


請輸入內容。