假設有商品數據表、用戶數據表
當我要製作購物車
我要顯示購物車所以有個購物車數據表
用戶的行為是加入這個商品進去購物車
但是我在購物車我要怎麼顯示才對?
我想到兩種方法
第一個是用戶加入之後順便帶入該商品的名稱等資訊到購物車數據表
然後再根據用戶的ID去撈他的購物車
但這方法假設商品改了資訊,所有東西也要跟著改
第二個方法是只帶入兩種值
一個是商品ID,一個是用戶的ID
但商品ID裡面有包括商品名稱 圖示
那這樣我要怎麼將購物車顯示?我能抓到的數據只有商品ID、用戶ID
我要怎麼關聯到另一個數據表?
根據商品ID,去抓商品數據表,再將商品資訊顯示?
這樣就不會有源頭修改商品資訊的更新問題
但這個方法我不知道怎麼顯示?
我是偏向第二種
但方式可能是迴圈裡面又一個迴圈
我需要更好的方式
使用Sql的join就行
例如我有3張表User(用戶).Cart(購物車).Goods(商品)
User
uid | name |
---|---|
1 | 1號用戶 |
2 | 2號用戶 |
Goods
gid | gname |
---|---|
1 | 巧克力 |
2 | 棉花糖 |
Cart
cid | uid | gid |
---|---|---|
1 | 1 | 1 |
2 | 1 | 2 |
3 | 2 | 2 |
然後Sql Join起來
SELCT c.id,u.name,g.gname FROM Cart AS c
LEFT JOIN Goods AS g ON c.gid=g.gid
LEFT JOIN User AS u ON c.uid=u.uid
拉出來後應該會變這樣
cid | uname | gname |
---|---|---|
1 | 1號用戶 | 巧克力 |
2 | 1號用戶 | 棉花糖 |
3 | 2號用戶 | 棉花糖 |
我這樣寫但是沒有出現東西?
SELECT b.icon, b.name FROM user_cart as c
LEFT JOIN product as b ON c.prod_id = b.prod_id
LEFT JOIN user AS a ON a.id = c.id
我想印出 product b 的 icon, name
這樣寫我發現沒有東西?
確定數據表有資料
asys0512
你的資料行名稱和資料也給一下吧!!
這樣看不出來@@
user 有 id
user_cart 有 prod_id, id
product 有 prod_id, name, icon
我顯示是這樣寫
<? while($row = mysqli_fetch_array($data, MYSQL_ASSOC)){?>
<?=$row['name'];?>
<?}?>
我的 mysql 查詢是
SELECT b.icon, b.name FROM user_cart as c
LEFT JOIN product AS b ON c.prod_id = b.id
Where c.user_id= '{$_SESSION["user-id"]}'
又或者是
SELECT b.* FROM product as b
LEFT JOIN user_cart as c ON c.prod_id = b.prod_id
LEFT JOIN user AS a ON a.id = c.id
WHERE c.id = '{$_SESSION["user-id"]}'
確定 $_SESSION["user-id"]
正確,也確定資料表數據是對的
我的資料庫結構
https://imgur.com/a/BrEOuNt
asys0512
http://sqlfiddle.com/#!9/258118/4
看起來是對的
還是你有表沒資料或是你查的user-id沒資料
可以去你的phpmyAdmin直接執行sql看看
asys0512
你的
SELECT b.icon, b.name FROM user_cart as c
LEFT JOIN product AS b ON c.prod_id = b.id
Where c.user_id= '{$_SESSION["user-id"]}'
product也有id?
不是應該是b.prod_id?
我用 sql 查詢是有的
SELECT * FROM user_cart as c
LEFT JOIN product AS b ON c.prod_id = b.prod_id
Where c.id = '16'
好怪喔,看來是顯示的代碼有問題?
asys0512
開發程式常遇到!XD
以後記得都記得都先執行SQL看看
不然看不出是程式還是SQL問題
感謝