[PHP][Cookie]建立購物車

閱讀時間約 2 分鐘

購物車(Shopping cart)是採購商品時,很重要的工具。

此篇是使用Cookie建立購物車。

從HTML的下拉式選單選擇商品,並輸入數量,然後加入購物車。而在購物車中,可以刪除商品。

底下是HTML的下拉式選單程式碼:

<select name="Item">
<option value="S001">桌上型電腦 - $32000</option>
<option value="S002">筆記型電腦 - $27000</option>
<option value="S003">智慧型手機 - $21000</option>
</select>


底下是PHP程式碼:

$id = $_POST["Item"];  // 取得選擇商品


將選購的商品儲存到Cookie

setcookie($id."[ID]", $id, time()+3600);


接著在購物車頁面,將儲存在Cookie的選購商品取出:

// 取出所有陣列Cookie
while ( list($arr, $value) = each($_COOKIE) ) {
// 檢查COOKIE名稱是否存在,且為陣列
if ( isset($_COOKIE[$arr]) &&
is_array($_COOKIE[$arr]) ) {
while ( list($name, $value)=each($_COOKIE[$arr])) {
// 使用顯示內容
}
}
}


底下是HTML的刪除商品程式碼:

<tr bgcolor='".$color."'><td>
<a href='delete.php?Id=".$arr."'>刪除</a></td>


底下是PHP程式碼:

$id = $_GET["Id"];  // 取得URL參數
if ( isset($_COOKIE[$id]) ) { // 檢查Cookie是否存在
// 存在, 刪除陣列Cookie
while ( list($name, $value) = each($_COOKIE[$id]) )
setcookie($id."[".$name."]", "", time()-3600);
}


8會員
119Content count
嗨,我是一名程式設計師,會在這分享開發與學習紀錄。
留言0
查看全部
發表第一個留言支持創作者!
小黑與程式的邂逅 的其他內容
檔案屬性 filetype(string):回傳參數檔案的種類字串,可能的回傳值有:fifo、char、dir、block、link、file和unknown,如果有錯誤回傳false。 fileatime(string):回傳參數檔案的最後存取時間,單位是UNIX的時間戳記,如果錯誤回傳fal
路徑處理 basename(string [.string]):回傳第一個參數路徑字串的檔案名稱,包含副檔案,如果有第二個參數字串,就會在檔案名稱刪除此字串,例如:刪除副檔名".php"。 dirname(string):回傳參數路徑字串中的路徑。 realpath(string):回傳參數路
HTTP通訊協定不會持續保持連線和保留客戶端的使用者狀態,因此需要將使用者狀態傳遞下去,以便保留使用者狀態,稱為「狀態管理」(State Management)。 客戶端: 此部份是將資料存在使用者電腦或HTML網頁或標籤中,以便傳遞。常用方法如下: 表單欄位:使用HTML表單欄位內容傳遞資料
為了加速網頁存取,因此都會將網頁內容保留在快取空間(Cache)的資料夾或磁碟。也就是說,當你在瀏覽網頁時,瀏覽的網頁內容會被保留在你電腦裡的快取空間(Cache),在你重複瀏覽到相同網頁時,瀏覽器會先到快取空間尋找有沒有該網頁的的檔案,如果有就直接取用,不會再次下載網頁內容。 但當網頁內容有保密
可以使用$_SERVER取得Web伺服器的系統資訊,常用變數名稱如下: GATEWAY_INTERFACE:伺服器CGI版本。 PHP_SELF:目前執行PHP程式的檔案名稱。 DOCUMENT_ROOT:目前執行PHP程式的根目錄。 QUERY_STRING:URL參數的資料。 REMO
$GLOBALS:包含目前執行PHP程式的所有全域變數,其鍵值是全域變數名稱。 $_SERVER:Web伺服器的變數,屬於目前PHP程式執行環境的相關資料。 $_GET:儲存HTTP GET方法傳入PHP程式表單欄位值或URL參數的結合陣列,其鍵值是欄位或參數名稱。 $_POST:儲存HT
檔案屬性 filetype(string):回傳參數檔案的種類字串,可能的回傳值有:fifo、char、dir、block、link、file和unknown,如果有錯誤回傳false。 fileatime(string):回傳參數檔案的最後存取時間,單位是UNIX的時間戳記,如果錯誤回傳fal
路徑處理 basename(string [.string]):回傳第一個參數路徑字串的檔案名稱,包含副檔案,如果有第二個參數字串,就會在檔案名稱刪除此字串,例如:刪除副檔名".php"。 dirname(string):回傳參數路徑字串中的路徑。 realpath(string):回傳參數路
HTTP通訊協定不會持續保持連線和保留客戶端的使用者狀態,因此需要將使用者狀態傳遞下去,以便保留使用者狀態,稱為「狀態管理」(State Management)。 客戶端: 此部份是將資料存在使用者電腦或HTML網頁或標籤中,以便傳遞。常用方法如下: 表單欄位:使用HTML表單欄位內容傳遞資料
為了加速網頁存取,因此都會將網頁內容保留在快取空間(Cache)的資料夾或磁碟。也就是說,當你在瀏覽網頁時,瀏覽的網頁內容會被保留在你電腦裡的快取空間(Cache),在你重複瀏覽到相同網頁時,瀏覽器會先到快取空間尋找有沒有該網頁的的檔案,如果有就直接取用,不會再次下載網頁內容。 但當網頁內容有保密
可以使用$_SERVER取得Web伺服器的系統資訊,常用變數名稱如下: GATEWAY_INTERFACE:伺服器CGI版本。 PHP_SELF:目前執行PHP程式的檔案名稱。 DOCUMENT_ROOT:目前執行PHP程式的根目錄。 QUERY_STRING:URL參數的資料。 REMO
$GLOBALS:包含目前執行PHP程式的所有全域變數,其鍵值是全域變數名稱。 $_SERVER:Web伺服器的變數,屬於目前PHP程式執行環境的相關資料。 $_GET:儲存HTTP GET方法傳入PHP程式表單欄位值或URL參數的結合陣列,其鍵值是欄位或參數名稱。 $_POST:儲存HT
你可能也想看
Thumbnail
重點摘要: 1.9 月降息 2 碼、進一步暗示年內還有 50 bp 降息 2.SEP 上修失業率預期,但快速的降息速率將有助失業率觸頂 3.未來幾個月經濟數據將繼續轉弱,經濟復甦的時點或是 1Q25 季底附近
Thumbnail
近期的「貼文發佈流程 & 版型大更新」功能大家使用了嗎? 新版式整體視覺上「更加凸顯圖片」,為了搭配這次的更新,我們推出首次貼文策展 ❤️ 使用貼文功能並完成這次的指定任務,還有機會獲得富士即可拍,讓你的美好回憶都可以用即可拍珍藏!
Thumbnail
今天是撰寫PHP程式的第3天,遇見了第一個新的BUG。狀況是連上Database後,企圖將資料增加到資料庫裡。 然而卻出現「Fatal error: Uncaught mysqli_sql_exception: Unknown column 'username' in 'field list' i
Thumbnail
這支 PHP 的小程式,輸入時間,會顯示回傳的時間: 放在 command line 執行,如下: $ php cst.php “2018–04–01 00:00:00 cst” 多了 14 小時,好神奇。 追 PHP Source 好了,看問題在哪。找到這支定義時區的設定: timezonemap
E 本筆記參考: 1. https://hivenson.pixnet.net/blog/post/191702742
取得2021年11月共有幾天: $total_days = cal_days_in_month(CAL_GREGORIAN, 11, 2021);   // $total_days=30 本筆記參考: 1. https://www.codegrepper.com/code-examples/php
  // $data is a two-dimensional array array_multisort(array_column($data, 'column_name'), SORT_ASC, $data); array_multisort(array_column($data, 'colum
Thumbnail
四捨五入到小數點後第二位,並自動補0到小數點後第二位: sprintf("%.2f", round($num,2)) 本筆記參考: 1. https://www.cnblogs.com/ryanzheng/p/12292852.html
Laravel 透過request()->ip拿到的ip不是client real ip,原來是因為前面有一層cloudflare,解決方法如下,改用下面這段script來取ip: E 可以包成helper function方便使用。 值得一提的是,HTTP_CF_CONNECTING_IP有可能
在PHP 7 版本之前,?: 這種寫法稱為,「Ternary Operator」: $data = isset($data) ? $data : 'hello'; PHP 7 之後,??這種寫法稱為「Null Coalescing Operator」: $data = $data ?? 'hell
Thumbnail
A. 安裝APPSERV 至官網下載https://www.appserv.org/en/ 最新版本APPSERV8.6.0並直接安裝: 安裝完包含預設五個資料夾: 請於【www】內加入網頁內容,預設首頁index.php。 於瀏覽器網址輸入【localhost】即可檢視到預設的首頁: B.
Thumbnail
重點摘要: 1.9 月降息 2 碼、進一步暗示年內還有 50 bp 降息 2.SEP 上修失業率預期,但快速的降息速率將有助失業率觸頂 3.未來幾個月經濟數據將繼續轉弱,經濟復甦的時點或是 1Q25 季底附近
Thumbnail
近期的「貼文發佈流程 & 版型大更新」功能大家使用了嗎? 新版式整體視覺上「更加凸顯圖片」,為了搭配這次的更新,我們推出首次貼文策展 ❤️ 使用貼文功能並完成這次的指定任務,還有機會獲得富士即可拍,讓你的美好回憶都可以用即可拍珍藏!
Thumbnail
今天是撰寫PHP程式的第3天,遇見了第一個新的BUG。狀況是連上Database後,企圖將資料增加到資料庫裡。 然而卻出現「Fatal error: Uncaught mysqli_sql_exception: Unknown column 'username' in 'field list' i
Thumbnail
這支 PHP 的小程式,輸入時間,會顯示回傳的時間: 放在 command line 執行,如下: $ php cst.php “2018–04–01 00:00:00 cst” 多了 14 小時,好神奇。 追 PHP Source 好了,看問題在哪。找到這支定義時區的設定: timezonemap
E 本筆記參考: 1. https://hivenson.pixnet.net/blog/post/191702742
取得2021年11月共有幾天: $total_days = cal_days_in_month(CAL_GREGORIAN, 11, 2021);   // $total_days=30 本筆記參考: 1. https://www.codegrepper.com/code-examples/php
  // $data is a two-dimensional array array_multisort(array_column($data, 'column_name'), SORT_ASC, $data); array_multisort(array_column($data, 'colum
Thumbnail
四捨五入到小數點後第二位,並自動補0到小數點後第二位: sprintf("%.2f", round($num,2)) 本筆記參考: 1. https://www.cnblogs.com/ryanzheng/p/12292852.html
Laravel 透過request()->ip拿到的ip不是client real ip,原來是因為前面有一層cloudflare,解決方法如下,改用下面這段script來取ip: E 可以包成helper function方便使用。 值得一提的是,HTTP_CF_CONNECTING_IP有可能
在PHP 7 版本之前,?: 這種寫法稱為,「Ternary Operator」: $data = isset($data) ? $data : 'hello'; PHP 7 之後,??這種寫法稱為「Null Coalescing Operator」: $data = $data ?? 'hell
Thumbnail
A. 安裝APPSERV 至官網下載https://www.appserv.org/en/ 最新版本APPSERV8.6.0並直接安裝: 安裝完包含預設五個資料夾: 請於【www】內加入網頁內容,預設首頁index.php。 於瀏覽器網址輸入【localhost】即可檢視到預設的首頁: B.