|
|
|
ถ้าต้องการจะนำรายการข้อมูลทั้งหมดบน Session ไปบันทึกลงบน Database นี่มีวิธีทำอย่างไรบ้างครับ |
|
|
|
|
|
|
|
Code (PHP)
<center>
<?php session_start(); ?>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Cart</title>
<?php
$conn = mysql_connect("localhost","root","");mysql_select_db("z", $conn);ini_set('display_errors', false);
?>
</head>
<body>
<?php
$product_id = $_GET[id]; //รับ ID จาก URL
$action = $_GET[action]; //รับค่าเพิ่มหรือลดจาก URL
//ไม่มีรายการแสดงเออเร่อ
if($product_id && !productExists($product_id)) {
die("Error. Product Doesn't Exist");
}
switch($action) { //เลือกทำ
case "add":
$_SESSION['cart'][$product_id]++; //เพิ่ม
break;
case "remove":
$_SESSION['cart'][$product_id]--; //ลด
if($_SESSION['cart'][$product_id] == 0) unset($_SESSION['cart'][$product_id]); //ถ้า 0 ก็ล้างค่า
break;
case "empty":
unset($_SESSION['cart']); //ล้างค้า
break;
}
?>
<?php
if($_SESSION['cart']) { //ถ้าตะกร้าว่าง
//แสดงตระกร้า
echo "<table border=\"4\" padding=\"3\" width=\"40%\">"; //แสดงเป็น HTML
//ทำซ้ำผ่านตะกร้า, $product_id เป็น key และ $quantity ตัวแปร
foreach($_SESSION['cart'] as $product_id => $quantity) {
//รับชื่อคำอธิบายและราคาจากฐานข้อมูล
//sprintf ใช้เพื่อให้แน่ใจว่า product_id $ ถูกแทรกลงในแบบสอบถามเป็นจำนวน
$sql = sprintf("SELECT name, description, price FROM php_shop_products WHERE id = %d;",$product_id);
$result = mysql_query($sql);
//แสดงเฉพาะแถวหากมีผลิตภัณฑ์
if(mysql_num_rows($result) > 0) {
list($name, $description, $price) = mysql_fetch_row($result);
$line_cost = $price * $quantity; //ราคา
$total = $total + $line_cost; //ราคารวม
echo "<tr>";
//แสดงข้อมูลในตารางนี้
echo "<td align=\"center\">$name</td>";
//คำสั่งเพิ่มและลบ
echo "<td align=\"center\">$quantity <a href=\"$_SERVER[PHP_SELF]?action=remove&id=$product_id\">X</a> <a href=\"$_SERVER[PHP_SELF]?action=add&id=$product_id\">+</a></td>";
echo "<td align=\"center\">$line_cost</td>";
echo "</tr>";
}
}
//แสดงผลรวม
echo "<tr>";
echo "<td colspan=\"2\" align=\"right\">Total</td>";
echo "<td align=\"right\">$total</td>";
echo "</tr>";
//เตือนล้างตะกร้า
echo "<tr>";
echo "<td colspan=\"3\" align=\"right\"><a href=\"$_SERVER[PHP_SELF]?action=empty\" onclick=\"return confirm('Are you sure?');\">Empty Cart</a></td>";
echo "</tr>";
echo "</table>";
}else{
//เมื่อไม่มีสินค้าแสดง
echo "ไม่มีสินค้าในตะกร้า.";
}
//ฟังก์ชั่นเพื่อตรวจสอบว่าสินค้ามีอยู่
function productExists($product_id) {
//ใช้ sprintf เพื่อให้แน่ใจว่า product_id $ ถูกแทรกลงในแบบสอบถามเป็นจำนวน
$sql = sprintf("SELECT * FROM php_shop_products WHERE id = %d;",
$product_id);
return mysql_num_rows(mysql_query($sql)) > 0;
}
?>
<a href="products.php">ทำการซื้อต่อ</a>
</body>
</html>
</center>
Tag : PHP, MySQL
|
ประวัติการแก้ไข 2010-11-25 18:15:33
|
|
|
|
|
Date :
2010-11-25 18:12:32 |
By :
zegend |
View :
1174 |
Reply :
3 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Code (PHP)
$data = serialize($_SESSION);
$now = time();
// update session
$sql = "INSERT INTO sessions VALUES('".session_id()."', '{$data}', $now)";
if ( ! mysql_query($sql))
{
$sql = "UPDATE session SET data='{$data}', last_access={$now} WHERE id='".session_id()."'";
mysql_query($sql);
}
|
ประวัติการแก้ไข 2010-11-25 19:03:36
|
|
|
|
Date :
2010-11-25 19:00:01 |
By :
pjgunner.com |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ค่าของ $data มันเป็นแบบนี้อะครับ
a:1:{s:4:"cart";a:2:{i:1;i:10;i:2;i:10;}}
มันจะบันทึกลงฐานข้อมูลได้ไหมครับ
คือจากที่ลองคิวรี่อินเสิทมันเออเร่อ
ออกมาแบบนี้ครับ
Not Query : INSERT INTO sessions VALUES('9laf7dq8mhujakb2bbf3c4rfp6', 'a:1:{s:4:"cart";a:2:{i:1;i:11;i:2;i:10;}}')
|
ประวัติการแก้ไข 2010-11-25 19:58:40 2010-11-25 19:59:29 2010-11-25 20:14:51
|
|
|
|
Date :
2010-11-25 19:57:58 |
By :
zegend |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ลืมไปคับ
$data = mysql_real_escape_string(serialize($_SESSION));
เวลาดึงออกมาให้ใช้
unserialized() กลับมาเป็น array ด้วยนะคับ
|
|
|
|
|
Date :
2010-11-25 20:40:37 |
By :
pjgunner.com |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Load balance : Server 00
|