ช่วยดู code shopping cart ของผมหน่อยนะครับ มันมีปัญหาตอนคำนวณสินค้า T_T
ตอนนี้ ยังไม่ได้เลยครับ T_T
ช่วยผมหน่อยนะครับ
ขอบคุณล่วงหน้าครับ T_T
Date :
2009-11-30 14:12:04
By :
yomaster
T_T
Date :
2009-11-30 17:09:36
By :
yomaster
มึนกับคำถาม มึนกับโค้ด มึนกับรูป
- ใส่ session_start() ยัง
- เคยทดสอบ echo $sess_xx ยัง เวลาย้อนกลับมาดู ว่ามีค่ารึเปล่า
- your_cart.php ให้โค้ดมาไม่หมดใช่มะ ผมก็เลยมึน คุณกด submit ไปไหนแล้วทำไรต่อ
- อื่นๆ อีก อธิบายไม่ถูก
ถ้ายังไม่ได้ดึกๆ ผมจะลองเอาโค้ดไปลงทดสอบให้ครับ แต่ช่วยแก้ไขโพสให้หน่อย ส่งโค้ดมาให้ครบด้วย
Date :
2009-11-30 17:58:14
By :
xbeginner01
คือ
session เนี่ย
ผม เก็บไว้ใน ไฟล์ index.php ครับ
ผมอาศัย การ include ไฟล์ต่างๆ เหล่านี้ เข้าไป ใน index อีกทีหนึ่งครับ
ที่บอกก็คือ ตอนแรกมันแสดงสินค้า (ดังรูปที่ 1)
แต่พอ ผมกด ปุ่มคำนวณสินค้า มันก็จะ ไม่แสดงจำนวนสินค้า มาให้ (ดังรูปที่ 2)
ส่วนโค้ด ในแต่ละ ไฟล์ นั้น
มีโค้ด แค่นั้น ครับผม
นอกนั้นเป็น code HTML ธรรมดา ครับผม ไม่มีโค้ด PHP ครับ
ลอง ทดสอบ ของจริงได้ที่
http://gogreenoff.dyndns.org/shop/index.php
สมาชิก เข้าระบบ ใช้
ชื่อผุ้ใช้ : abc
pass : 1234
จำเป็นต้อง เข้าระบบนะครับ เพราะว่า ผมยังไม่ได้ทำ cart ให้กับ บุคคลทั่วไปครับ
ลองดูนะครับ
ขอบคุณครับ
Date :
2009-11-30 18:44:48
By :
yomaster
สุดยอดจริงๆ ไม่หวงโค้ดเลย ให้มาหมดเลย
เว็บสวยจัง ใช้ theme หรือเขียน css เองหมดเหรอครับ ยืมไปใช้ได้มั้ยเอ่ย
แต่ตอนนี้ยังไม่ได้ใช้ หรอก เผื่อจะใช้ นะครับ หุ หุ ผมอ่อนหัดเรื่อง design ครับ
slogan: ทำให้ได้ไม่ยาก แต่ทำให้สวยนะยาก
แนะนำครับ ajax shopping cart ของเว็บนี้ ก็โอเคนะครับ ดีกว่าใช้แบบธรรมดา
Date :
2009-11-30 18:52:50
By :
DownsTream
ลองเรียกใช้ session แบบอื่นดูครับ ปัญหาคือค่า session ไม่ขึ้น
$sess_id เปลี่ยนเป็น $_SESSION[sess_id]
$sess_code เปลี่ยนเป็น $_SESSION[sess_code]
$sess_name เปลี่ยนเป็น $_SESSION[sess_name]
$sess_price เปลี่ยนเป็น $_SESSION[sess_price]
$sess_num เปลี่ยนเป็น $_SESSION[sess_num]
เรียกใช้ array แบบนี้ $_SESSION[sess_xxx][x]
เก็บค่าเพิ่ม แบบนี้ $_SESSION[sess_xxx][]
Date :
2009-11-30 19:33:37
By :
xbeginner01
อีกอย่างน่าจะเป็น เพราะ session_register ด้วย
session_register("sess_id");
session_register("sess_code");
session_register("sess_name");
session_register("sess_price");
session_register("sess_discount");
session_register("sess_num");
เหมือนมันจะรีเซสทุกครั้งที่เรียกใช้เลยน่ะ ค่าเก่าๆหายไปหมด -..-
เปลี่ยนเป้นใช้ $_SESSION[sess_id] แบบนี้จะดีกว่า
ไม่รู้มาก่อนว่า session ก็เก็บเป็น array ได้เหมือนกัน
Date :
2009-11-30 19:42:42
By :
xbeginner01
ขอบคุณมากครับผม
พรุ่งนี้จะลองเอาโค้ดไปปรับดูนะครับ
วันนี้ตาลายแล้วๆ
คุณ ดาวน์สตรีมครับ
ผมไม่หวงครับ เอาไปได้เลยครับ แต่ผมลบออกไปแล้ว เพราะคิดว่าคุณเอาไปแล้วแหล่ะ แต่ถ้ายัง ก็เมี้ยวๆ มาได้ครับ
ปล.ผมใช้ ซีเอสเอส ของคนอื่นอีกทีน่ะครับ
แต่หน้าเว็บก็ทำเองครับ
ผมก็ประเภทเดียวกันครับ คือ
โค้ด(พอ)ได้
ดีไซน์ บ่ได้เรื่อง 555
Date :
2009-11-30 23:37:24
By :
yomaster
เอ่อ ผมยิ่งตาลายไปกันใหญ่เลยครับ
ผมเปลี่ยนจาก session_register มาเป็น $_session[] แล้วครับ
ตอน add สินค้า ตอนแรก ได้ครับ แต่พอกดปุ่มคำนวณ ก็เป็น 00 เหมือนเดิมครับผม
ผม ใช้มันไม่ถูกแน่ๆ เลยครับ
รบกวน อีกสักครั้งนะครับ
ช่วยดูให้หน่อยนะครับ
Code add_to_cart.php ตัวนี้ไม่มีปัญหาอะไรครับ (PHP)
<?php
$PID=$_REQUEST[PID];
$_SESSION[sess_id];
$_SESSION[sess_code];
$_SESSION[sess_name];
$_SESSION[sess_price];
$_SESSION[sess_discount];
$_SESSION[sess_num];
if(count($_SESSION[sess_id])=="0"){
$check=1;
}elseif(!in_array($PID,$_SESSION[sess_id])){
$check=1;
}
if($check==1){
$addcart="SELECT * FROM product WHERE p_id='$PID' ";
$qaddcart=mysql_db_query($dbname,$addcart);
$rs=mysql_fetch_array($qaddcart);
$_SESSION[sess_id][]=$rs[p_id];
$_SESSION[sess_code][]=$rs[p_code];
$_SESSION[sess_name][]=$rs[p_name];
$_SESSION[sess_discount][]=$rs[p_discount];
$_SESSION[sess_price][]=$rs[p_price];
$_SESSION[sess_num][]=1;
}
echo"หากหน้าเพจไม่ refresh กรุณา<a href='?p=your_cart'>คลิกที่นี่</a>";
echo"<meta http-equiv=\"refresh\" content=\"0;URL=?p=your_cart\" />";
?>
โค้ดด้านบน ถ้าผมใส่ $_session ผิด รบกวนบอกด้วยนะครับ
Code cal_cart.php มันมามีปัญหาตัวนี้เหมือนกันเลยครับ (PHP)
<?php
if(count($id_del)==0){
$id_del=array();
}
for($i=0;$i<count($_SESSION[sess_id]);$i++){
if(!in_array($_SESSION[sess_id][$i],$id_del)){
$temp_id[]=$_SESSION[sess_id][$i];
$temp_code[]=$_SESSION[sess_code][$i];
$temp_name[]=$_SESSION[sess_name][$i];
$temp_price[]=$_SESSION[sess_price][$i];
$temp_discount[]=$_SESSION[sess_discount][$i];
$temp_num[]=$_SESSION[prd_num][$i];
}
}
$sess_id=$temp_id;
$sess_code=$temp_code;
$sess_name=$temp_name;
$sess_price=$temp_price;
$sess_discount=$temp_discount;
$sess_num=$temp_num;
if($calculate){
echo"<meta http-equiv=\"refresh\" content=\"0;URL=?p=your_cart\" />";
}elseif($complete){
echo"<meta http-equiv=\"refresh\" content=\"0;URL=?p=your_cart_order\" />";
}elseif($continuebuy){
echo"<meta http-equiv=\"refresh\" content=\"0;URL=?p=product\" />";
}
?>
โค้ด ตัวนี้ ผมวางตำแหน่ง $_session ผิดตรงไหนบ้างครับ
ผมไม่ค่อยเข้าใจเท่าไหร่ T_T
รบกวนช่วยดูให้ผมอีกสักรอบนะครับ
ขอบคุณครับผม
Date :
2009-12-02 18:17:10
By :
yomaster
เฮ่อออ
ผมว่าจะเปลี่ยนมาเก็บ สินค้า ลง ตาราง temp_order ก่อนดีกว่า
ตัดปัญหา session ไปซะเลย จะดีกว่าไหมครับ
รบกวนแนะนำทีครับ
Date :
2009-12-02 18:20:51
By :
yomaster
Code (PHP)
<?php
$PID=$_REQUEST[PID];
$addcart="SELECT * FROM product WHERE p_id='$PID' ";
$qaddcart=mysql_db_query($dbname,$addcart);
$rs=mysql_fetch_array($qaddcart);
$_SESSION[sess_id][]=$rs[p_id];
$_SESSION[sess_code][]=$rs[p_code];
$_SESSION[sess_name][]=$rs[p_name];
$_SESSION[sess_discount][]=$rs[p_discount];
$_SESSION[sess_price][]=$rs[p_price];
$_SESSION[sess_num][]=1;
echo"หากหน้าเพจไม่ refresh กรุณา<a href='?p=your_cart'>คลิกที่นี่</a>";
echo"<meta http-equiv=\"refresh\" content=\"0;URL=?p=your_cart\" />";
?>
ลองแบบนี้ดูครับ
Date :
2009-12-02 21:26:47
By :
xbeginner01
ขอบคุณคุณ xbeginner01 มากๆ ครับ
ตอนนี้ ผมเปลี่ยนมาบันทึกลงตาราง temp ก่อนแล้วครับ บันทึก ดึงข้อมูลได้ ลบ ข้อมูลได้ แต่ติดปัญหา ตอน แก้ไข จำนวนวันครับ
ผมดูตัวอย่าง โค้ด แก้ไขข้อมูลหลายๆ เรคอร์ดพร้อมกัน https://www.thaicreate.com/php/php-mysql-multiple-rows-update-edit-record.html
และ โค้ด ลบข้อมูลหลายๆ เรคอร์ดพร้อมกัน https://www.thaicreate.com/php/php-mysql-multiple-checkbox-delete-record.html
ลบข้อมูลได้ แต่ติดปัญหาตรงแก้ไขครับ
ดูจากโค้ดแก้ไขแล้ว เอามาปรับไม่ถูกจริงๆ ครับ
โค้ดที่ผมปรับๆ มาใช้นะครับ
Code (PHP)
<?php
$complete=$_REQUEST[complete];
$calculate=$_REQUEST[calculate];
$continuebuy=$_REQUEST[continuebuy];
$id_del=$_REQUEST[id_del];
$prd_num=$_REQUEST[prd_num];
$ot_id=$_REQUEST[ot_id];
$hdnLine=$_REQUEST[hdnLine];
for($i=0;$i<count($id_del);$i++){
if($id_del[$i]!=""){
$delp="DELETE FROM orders_temp WHERE ot_id='$id_del[$i]' ";
$qdelp=mysql_db_query($dbname,$delp);
}
}
for($x=0;$x<count($ot_id);$x++){
$upp="UPDATE orders_temp SET ot_p_qty='$prd_num' WHERE ot_id='$ot_id[$x]' ";
$qupp=mysql_db_query($dbname,$upp);
}
if($calculate){
echo"<meta http-equiv=\"refresh\" content=\"0;URL=?p=your_cart\" />";
}elseif($complete){
echo"<meta http-equiv=\"refresh\" content=\"0;URL=?p=your_cart_order\" />";
}elseif($continuebuy){
echo"<meta http-equiv=\"refresh\" content=\"0;URL=?p=product\" />";
}
?>
หน้า your_cart จะเป็น
Code (PHP)
<form action="?p=cal_cart" method="post" name="calculator" id="calculator">
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="5%" height="22" align="center" class="table_title"><strong>ลบ</strong></td>
<td width="46%" class="table_title"><strong>สินค้า</strong></td>
<td width="15%" align="center" class="table_title"><strong>จำนวน</strong></td>
<td width="12%" align="left" class="table_title"><strong>ราคา/หน่วย</strong></td>
<td width="11%" align="left" class="table_title"><strong>ส่วนลด</strong></td>
<td width="11%" align="left" class="table_title"><strong>รวม</strong></td>
</tr>
<?php
while($fshp=mysql_fetch_array($qshp)){
$p_id=$fshp[p_id];
$p_code=$fshp[p_code];
$p_name=$fshp[p_name];
$ot_id=$fshp[ot_id];
$ot_p_qty=$fshp[ot_p_qty];
$ot_p_price=$fshp[ot_p_price];
$ot_p_discount=$fshp[ot_p_discount];
//คำนวณราคาสินค้า
$total_unit=$ot_p_price*$ot_p_qty;
$discount=($total_unit*$ot_p_discount)/100;
$total_unit2=$total_unit-$discount;
$total=$total+$total_unit2;
?>
<tr>
<td align="center" class="quote_title"><input name="id_del[]" type="checkbox" id="id_del[]" value="<?=$ot_id;?>" /></td>
<td height="22" class="quote_title"><a href="product_detail.php?id=<?=$p_id;?>" target="_blank" title="คลิกเพื่อดูรายละเอียดสินค้า">[<?=$p_code;?>] <?=$p_name;?></a></td>
<td align="center" class="quote_title"><input name="prd_num[]" type="text" id="prd_num[]" value="<?=$ot_p_qty;?>" size="5" maxlength="3" style="text-align:center">
<input name="ot_id" type="hidden" id="ot_id" value="<?=$ot_id;?>" /></td>
<td align="left" class="quote_title"><? echo number_format($ot_p_price,2);?></td>
<td align="left" class="quote_title"><? echo number_format($discount,2);?></td>
<td align="left" class="quote_title"><font color="#0000FF"><? echo number_format($total_unit2,2);?></font></td>
</tr>
<?php
} //while
?>
<tr>
<td height="22" colspan="4" align="right" class="table_title"><strong>ราคารวมทั้งหมด</strong></td>
<td colspan="2" align="center" class="table_title"><strong><font color="#FF0000"><? echo number_format($total,2);?></font> บาท </strong></td>
</tr>
<tr>
<td height="22" colspan="6" align="right"><input name="hdnLine" type="hidden" id="hdnLine" value="<?=$n;?>" />
<input name="calculate" type="submit" id="calculate" value="คำนวณราคาสินค้า" />
<input name="continuebuy" type="submit" id="continuebuy" value="ซื้อสินค้าต่อ" />
<input name="complete" type="submit" id="complete" value="ยืนยันสั่งซื้อสินค้า" /></td>
</tr>
</table>
</form>
ติดตรง UPDATE ครับ ผมต้องใช้ แบบไหนครับ
รบกวนอีกครั้งนะครับ
Date :
2009-12-02 21:44:19
By :
yomaster
คือ ตอนแรกก็เขียน แบบที่คุณ xbeginner01 บอกเลยครับ
คือ เพิ่ม $prd_num[$x] เข้าไป แต่ก็ไม่ได้อ่ะครับ คือ จำนวนไม่เปลี่ยนครับ
ก็เลย งงไปเลยครับ
ผมใส่ prd_num[] แบบนี้นะครับ
ลองดูจากโค้ด ด้านบนนะครับ
รบกวนอีกรอบนะครับ
ขอบคุณครับ
Date :
2009-12-02 21:55:25
By :
yomaster
Code (PHP)
$complete=$_REQUEST[complete];
$calculate=$_REQUEST[calculate];
$continuebuy=$_REQUEST[continuebuy];
$id_del=$_REQUEST[id_del];
$prd_num=$_REQUEST[prd_num];
$ot_id=$_REQUEST[ot_id];
$hdnLine=$_REQUEST[hdnLine];
echo "เช็คจำนวน ".count($prd_num)."<br>";
for($i=0; $i<count($prd_num);$i++){
echo "$i : value ".$prd_num[$i]." id :".$ot_id[$i]."<BR>";
}
ลองเช็คก่อนครับว่ามีค่าเปล่า
Code (PHP)
$upp="UPDATE orders_temp SET ot_p_qty='$prd_num[$x]' WHERE ot_id='$ot_id[$x]' ";
mysql_query($upp) or die(mysql_error());
echo $upp."<br>"; // ขอดูผลอันนี้หน่อยครับ
Date :
2009-12-02 22:14:23
By :
xbeginner01
$upp มีค่าเท่ากับ UPDATE orders_temp SET ot_p_qty='1' WHERE ot_id='4'
บรรทัดเดียว
ส่วน จำนวน prd_num มีค่าเท่ากับ
จำนวน prd_num=30 : value1 id :41 : value1 id :2 : value1 id :
แบบนี้อ่ะครับ
ถ้ามีสินค้าชิ้นเดียว จะแสดง แบบนี้
prd_num เท่ากับ
จำนวน prd_num=10 : value1 id :2
$upp เท่ากับ
UPDATE orders_temp SET ot_p_qty='1' WHERE ot_id='2'
/////
จำนวน prd_num=2
0 : value 2 id : 2
1 : value 3 id :
$qupp = 11
Date :
2009-12-02 22:24:31
By :
yomaster
ง่ะ
ผมหาจุดผิดพลาดเจอแล้วครับพี่
ตรง ot_id ผมลืมใส่ [] เพิ่มเข้าไปครับ
^-^
ตอนนี้ ได้แล้วครับผม
ขอบคุณ พี่ xbeginner01 มากๆ ครับ
Date :
2009-12-02 22:46:41
By :
yomaster
พรุ่งนี้ จะมาให้ +1 เพิ่มนะครับ วันนี้ หมดโควต้า แล้วครับ ^-^
Date :
2009-12-02 22:53:29
By :
yomaster
+1 ให้คุณ xbeginner01 แล้วนะขอรับ ^-^
Date :
2009-12-03 08:55:31
By :
yomaster
Load balance : Server 01