b>向你的頁面增加鏈接
上面的add字段應該是一個鏈接,用來將商品放到迷你購物籃中。使用$PHP_SELF將這個鏈接指向它自已。然後向它增加商品信息。這裡是商品1的例子。
$#@60;A HREF=DownloadFilesa2000-09-08$#@60;$echo $PHP_SELF;?$#@62;?id=1&price=25&basket=Mouse"$#@62;add$#@60;/A$#@62;
商品的名稱能夠包含空格,所以將它放在鏈接的最後。Get方法好象對這個很挑剔。
准備迷你購物籃
為了代碼重用,讓我們創建一個額外的文件minibasket.inc。我使用.inc擴展名來標識我的包括文件。使用這個外部文件的原因是,盡管你將使用session變量來傳遞給購物籃,代碼仍然需要有效。這個文件將包含顯示迷你購物籃的代碼,也包話增加項目的函數。實現它的最好的地方是將 $#@60;?php include ("minibasket.inc"); ?$#@62; 命令放在你需要的地方。
minibasket.inc的邏輯
花些時間考慮一下這個。迷你購物籃應該是個什麼樣子,它需要些什麼特性?這裡顯示的迷你購物籃應該看上去象這樣:
# Name Price
1 Mouse 25.00
3 Game 75.00
Total 100.00
你可以很容易的通過使用一個外部樣式表格式化這個輸出。可是,它不應該太大。這個迷你購物籃是一個信息,然而它不應該成為你所顯示頁面的焦點。這個文件的邏輯非常簡單。檢查是否需要增加一個新的項目。
如果true,增加項目在加入中,它要檢查復重的記錄,通過更新數量和價格來更新存在的記錄。
片段1。檢查將要增加的新的項目,這是一個正常的IF語句,用於檢查$basket變量的值。
$#@60;?php if ($basket!=""){//向籃子中加入項目} ?$#@62;
片段2。在浏覽器中顯示籃子 $#@60;?php if ($ses_basket_items$#@62;0){ // 如果在籃子中有項目
for ($basket_counter=0;$basket_counter$#@60;$ses_basket_items;$basket_counter++){ // 遍歷籃子,打印出每一行 // 你當然可以用格表來格式化顯示 // 需要通過格式化來顯示價格的分值。如果沒有格式化,則.00是不會顯示出來的
$price=sprintf("%01.2f",$ses_basket_price[$basket_counter]);
$amount=$ses_basket_amount[$basket_counter];
$name=$ses_basket_name[$basket_counter];
echo "$amount $name $price";
echo "$#@60;BR$#@62;
"; }} else { // 在籃子中沒有商品 // 設置項目計數為0,且清除所有的變量 // 這是一個清除處? 它防止人們得到舊的數組
$ses_basket_items=0;
unset($ses_basket_name);
unset($ses_basket_amount);
unset($ses_basket_price);
unset($ses_basket_id); }
?$#@62; 這段代碼不會產生任何結果。項目還沒有被填充,籃子總是空的,所以籃子不會被顯示。那麼讓我們向這個籃子中加些項目吧。