|
|
|
ต้องการบันทึกข้อมูลราคาการสั่งซื้อทั้งหมดลงฐานข้อมูล PHP |
|
|
|
|
|
|
|
คือผมต้องการบันทึกค่าราคารวมจากหน้า cart_member.php ไปลงในตาราง tb_order ครับ
มันจะมี3หน้าครับ
หน้า cart_member.php ไปหน้า cofirm.php แล้วก็ไป saveorder.php\
cart_member.php
<?php
error_reporting( error_reporting() & ~E_NOTICE );
session_start();
$p_id = $_REQUEST['p_id'];
$act = $_REQUEST['act'];
if($act=='add' && !empty($p_id))
{
if(!isset($_SESSION['shopping_cart']))
{
$_SESSION['shopping_cart']=array();
}else{
}
if(isset($_SESSION['shopping_cart'][$p_id]))
{
$_SESSION['shopping_cart'][$p_id]++;
}
else
{
$_SESSION['shopping_cart'][$p_id]=1;
}
}
if($act=='remove' && !empty($p_id)) //ยกเลิกการสั่งซื้อ
{
unset($_SESSION['shopping_cart'][$p_id]);
}
if($act=='update')
{
$amount_array = $_POST['amount'];
foreach($amount_array as $p_id=>$amount)
{
$_SESSION['shopping_cart'][$p_id]=$amount;
}
}
if($act=='Cancel-Cart'){
unset($_SESSION['shopping_cart']);
}
?>
<?php include('h.php');?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<style type="text/css">
input[type=number]{
width:40px;
text-align:center;
color:red;
font-weight:600;
}
</style>
</head>
<body>
<div class="container">
<div class="row">
<?php include('banner.php');?>
</div>
<div class="row">
<div class="col-md-12">
<?php include('navbar_member.php');?>
</div>
</div>
</div>
<body>
<div class="container">
<div class="row">
<div class="col-md-3"></div>
<div class="col-md-7">
<form id="frmcart" name="frmcart" method="post" action="?act=update">
<table width="100%" border="0" align="center" class="table table-hover">
<tr>
<td height="40" colspan="6" align="center" bgcolor="#CCCCCC"><strong><b>ตะกร้าสินค้า</span></strong></td>
</tr>
<tr>
<td align="center" bgcolor="#EAEAEA"><strong>No.</strong></td>
<td align="center" bgcolor="#EAEAEA"><strong>สินค้า</strong></td>
<td align="center" bgcolor="#EAEAEA"><strong>ราคา</strong></td>
<td align="center" bgcolor="#EAEAEA"><strong>จำนวน</strong></td>
<td align="center" bgcolor="#EAEAEA"><strong>รวม/รายการ</strong></td>
<td align="center" bgcolor="#EAEAEA"><strong>ลบ</strong></td>
</tr>
<?php
if(!empty($_SESSION['shopping_cart']))
{
require_once('Connections/condb.php');
foreach($_SESSION['shopping_cart'] as $p_id=>$p_qty)
{
$sql = "select * from tbl_product where p_id=$p_id";
$query = mysql_db_query($database_condb, $sql);
while($row = mysql_fetch_array($query))
{
$sum = $row['p_price'] * $p_qty;
$total += $sum;
echo "<tr>";
echo "<td>";
echo $i += 1;
echo ".";
echo "</td>";
echo "<td width='334'>"." " . $row["p_name"] . "</td>";
echo "<td width='100' align='right'>" . number_format($row["p_price"],2) . "</td>";
echo "<td width='57' align='right'>";
echo "<input type='text' name='amount[$p_id]' value='$p_qty' size='2'/></td>";
echo "<td width='100' align='right'>" .number_format($sum,2)."</td>";
echo "<td width='100' align='center'><a href='cart.php?p_id=$p_id&act=remove' class='btn btn-danger btn-xs'>ลบ</a></td>";
echo "</tr>";
}
}
echo "<tr>";
echo "<td colspan='4' bgcolor='#CEE7FF' align='right'>Total</td>";
echo "<td align='right' bgcolor='#CEE7FF'>";
echo "<b>";
echo number_format($total,2);
echo "</b>";
echo "</td>";
echo "<td align='left' bgcolor='#CEE7FF'></td>";
echo "</tr>";
}
?>
<tr>
<td></td>
<td colspan="5" align="right">
<a href="cart.php?act=Cancel-Cart" class="btn btn-danger"> ยกเลิกตะกร้าสินค้า </a>
<button type="submit" name="button" id="button" class="btn btn-warning"> คำนวณราคาใหม่ </button>
<button type="button" name="Submit2" onclick="window.location='confirm.php';" class="btn btn-primary">
<span class="glyphicon glyphicon-shopping-cart"> </span> สั่งซื้อ </button>
<br><br>
<a href="how-to-buy_member.php"> <span class='glyphicon glyphicon-barcode'> </span> วิธีชำระเงิน </a>
</td>
</tr>
</form>
</div>
</div>
</div>
</body>
</html>
cofirm.php
<?php
error_reporting( error_reporting() & ~E_NOTICE );
session_start();
?>
<?php include('h.php');?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<style type="text/css">
input[type=number]{
width:40px;
text-align:center;
color:red;
font-weight:600;
}
</style>
</head>
<body>
<div class="container">
<div class="row">
<?php include('banner.php');?>
</div>
<div class="row">
<div class="col-md-12">
<?php include('navbar_member.php');?>
</div>
</div>
</div>
<div class="container">
<div class="row">
<div class="col-md-2"></div>
<div class="col-md-8">
<table width="700" border="1" align="center" class="table">
<tr>
<td width="1558" colspan="5" align="center">
<strong>สั่งซื้อสินค้า</strong></td>
</tr>
<tr class="success">
<td align="center">ลำดับ</td>
<td align="center">สินค้า</td>
<td align="center">ราคา</td>
<td align="center">จำนวน</td>
<td align="center">รวม/รายการ</td>
</tr>
<?php
require_once('Connections/condb.php');
$total=0;
foreach($_SESSION['shopping_cart'] as $p_id=>$p_qty)
{
$sql = "select * from tbl_product where p_id=$p_id";
$query = mysql_db_query($database_condb, $sql);
$row = mysql_fetch_array($query);
$sum = $row['p_price']*$p_qty;
$total += $sum;
echo "<tr>";
echo "<td align='center'>";
echo $i += 1;
echo "</td>";
echo "<td>" . $row["p_name"] . "</td>";
echo "<td align='right'>" .number_format($row['p_price'],2) ."</td>";
echo "<td align='right'>$p_qty</td>";
echo "<td align='right'>".number_format($sum,2)."</td>";
echo "</tr>";
}
echo "<tr>";
echo "<td align='right' colspan='4'><b>รวม</b></td>";
echo "<td align='right'>"."<b>".number_format($total,2)."</b>"."</td>";
echo "</tr>";
?>
</table>
</div>
</div>
</div>
<div class="container">
<div class="row">
<div class="col-md-4"></div>
<div class="col-md-5" style="background-color:#f4f4f4">
<h3 align="center" style="color:green">
<span class="glyphicon glyphicon-shopping-cart"> </span>
ที่อยู่ในการส่งสินค้า </h3>
<form name="formlogin" action="saveorder.php" method="POST" id="login" class="form-horizontal">
<div class="form-group">
<div class="col-sm-12">
<input type="text" name="name" class="form-control" required placeholder="ชื่อ-สกุล" />
</div>
</div>
<div class="form-group">
<div class="col-sm-12">
<textarea name="address" class="form-control" rows="3" required placeholder="ที่อยู่ในการส่งสินค้า"></textarea>
</div>
</div>
<div class="form-group">
<div class="col-sm-12">
<input type="text" name="phone" class="form-control" required placeholder="เบอร์โทรศัพท์" />
</div>
</div>
<div class="form-group">
<div class="col-sm-12">
<input type="email" name="email" class="form-control" required placeholder="อีเมล์" />
</div>
</div>
<div class="form-group">
<div class="col-sm-12">
<td align="right" >หลักฐานการโอนเงิน :</td>
<input name="slip" type="file" required class="bg-warning" id="slip" size="40" />
</div>
</div>
<div class="form-group">
<div class="col-sm-12" align="center">
<button type="submit" class="btn btn-primary" id="btn">
ยืนยันสั่งซื้อ </button>
</div>
</div>
</form>
</div>
</div>
</div>
</body>
</html>
saveorder.php
<?php
error_reporting( error_reporting() & ~E_NOTICE );
session_start();
/*
echo "<pre>";
print_r($_SESSION);
echo "<hr>";
print_r($_POST);
echo "</pre>";
*/
?>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Confirm</title>
</head>
<body>
<!--สร้างตัวแปรสำหรับบันทึกการสั่งซื้อ -->
<?php
require_once('Connections/condb.php');
//Set ว/ด/ป เวลา ให้เป็นของประเทศไทย
date_default_timezone_set('Asia/Bangkok');
//สร้างตัวแปรวันที่เพื่อเอาไปตั้งชื่อไฟล์ที่อัพโหลด
$date1 = date("Ymd_His");
//สร้างตัวแปรสุ่มตัวเลขเพื่อเอาไปตั้งชื่อไฟล์ที่อัพโหลดไม่ให้ชื่อไฟล์ซ้ำกัน
$numrand = (mt_rand());
$name = $_POST["name"];
$address = $_POST["address"];
$email = $_POST["email"];
$phone = $_POST["phone"];
$total = ;
$order_date = date("Y-m-d H:i:s");
$status = 1;
$slip = (isset($_POST['slip']) ? $_POST['slip'] : '');
$parcel_number =0;
$upload=$_FILES['slip'];
if($upload <> '')
$path="pimg/";
$type = strrchr($_FILES['slip']['name'],".");
$newname ='slip'.$numrand.$date1.$type;
$path_copy=$path.$newname;
$path_link="pimg/".$newname;
move_uploaded_file($_FILES['slip']['tmp_name'],$path_copy);
//บันทึกการสั่งซื้อลงใน order_detail
mysql_db_query($database_condb, "BEGIN");
$sql1 = "INSERT INTO tb_order VALUES
(NULL,
'$name',
'$address',
'$email',
'$phone',
'$total',
'$status',
'$order_date',
'$newname',
'$parcel_number'
)";
$query1 = mysql_db_query($database_condb, $sql1) or die ("Error in query: $sql1 " . mysql_error());
$sql2 = "SELECT MAX(order_id) AS order_id FROM tb_order WHERE phone='$phone'";
$query2 = mysql_db_query($database_condb, $sql2);
$row = mysql_fetch_array($query2);
$order_id = $row['order_id'];
foreach($_SESSION['shopping_cart'] as $p_id=>$p_qty)
{
$sql3 = "SELECT * FROM tbl_product where p_id=$p_id";
$query3 = mysql_db_query($database_condb, $sql3);
$row3 = mysql_fetch_array($query3);
$total=$row3['p_price']*$p_qty;
// $p_name = $row2['p_name'];
$sql4 = "INSERT INTO tb_order_detail
values(null,
'$order_id',
'$p_id',
'$p_qty',
'$total')";
$query4 = mysql_db_query($database_condb, $sql4);
}
if($query1 && $query4){
mysql_db_query($database_condb, "COMMIT");
$msg = "บันทึกข้อมูลเรียบร้อยแล้ว ";
foreach($_SESSION['shopping_cart'] as $p_id)
{
unset($_SESSION['shopping_cart']);
}
}
else{
mysql_db_query($database_condb, "ROLLBACK");
$msg = "บันทึกข้อมูลไม่สำเร็จ กรุณาติดต่อเจ้าหน้าที่ค่ะ ";
}
mysql_close($condb);
?>
<script type="text/javascript">
alert("<?php echo $msg;?>");
window.location ='index_member.php';
</script>
</body>
</html>
Tag : PHP, MySQL, jQuery, Appserv
|
ประวัติการแก้ไข 2021-01-13 14:38:18 2021-01-13 14:39:08
|
|
|
|
|
Date :
2021-01-13 14:36:38 |
By :
gadiaw24 |
View :
1743 |
Reply :
15 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ไม่ใบ้ให้หน่อยหรือครับว่าติดปัญหาตรงไหน มีแจ้ง error ว่าอะไรหรือไม่
ถ้าให้อ่านทั้งหมดอาจใช้เวลานาน หรือไม่เจอปัญหา
จากที่ดูคร่าวๆ ใน saveorder.php มีการบันทึกราคารวม ($total) จาก statement ใน $sql4 ลงในตาราง tb_order_detail และข้อมูลการสั่งซื้อลงใน tb_order (จาก $sql1) ถ้าปัญหาคือไม่เข้าฐานข้อมูลต้องไล่เช็คจาก user input แต่ถ้ามี error ระหว่างขั้นตอนก็ต้องดูที่ error เพื่อแก้ไขได้ตรงจุดครับ
|
|
|
|
|
Date :
2021-01-13 15:18:07 |
By :
lakornworld |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
มี 3 หน้า... รับทราบครับ
|
|
|
|
|
Date :
2021-01-13 15:47:54 |
By :
mr.v |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
cart_member.php
จะเป็นข้อมูล session หรือ ตารางเก็บข้อมูลชั่วคราว ให้ดึงข้อมูลของผู้ใช้นั้นๆมาแสดง
แล้วก็เลือกรายการที่ต้องการครับ แล้วส่ง POST ไปหน้ายืนยันได้เลย ค่าที่เลือกก็จะส่งไปทั้งหมด
cofirm.php
หน้ายืนยัน จะเป็นการเลือกที่อยู่ ถ้าเป็นล็อกอินก็ดึงฐานข้อมูลมาใส่ INPUT
แต่ถ้าไม่ได้ล็อกอิน ก็ให้ผู้ใช้กรอก ค่าจาก cart ก็จะแสดงใน form นี้ด้วยเพื่อยืนยันว่าถูกต้อง
จากนั้นก็ SUBMIT ทั้งหมดไปแบบ POST เช่นกัน
saveorder.php
หน้านี้ไม่ต้องทำอะไรมาก เก็บข้อมูลที่ POST เข้ามาทั้งหมดใส่ฐานข้อมูลไปเลยครับ
|
|
|
|
|
Date :
2021-01-14 09:05:58 |
By :
{Cyberman} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@กระบี่อยู่ที่ใจ
1, 2, 3 สำคัญมาก คุณสรุป ข้ามข้อไหนไปหรือเปล่าครับ?
|
|
|
|
|
Date :
2021-01-15 15:51:04 |
By :
ผ่านมา |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ศิลปะ การซื้อ อย่าคิดเอาเองเออเอง
ปีหนึ่งผมขาย F22 ได้ 100 ลำ พ่วงด้วย F35 อีก 50 ลำ
ผมไม่เคยคิดจะเข้าไป บริษัทหรอก ไม่สนใจว่า ผู้บริหารระดับสูง/ผู้จัดการโรงงาน/พนักงาน
อยากเล่าต่อนะแต่ไม่มีเวลา...
|
|
|
|
|
Date :
2021-01-15 16:00:12 |
By :
ผ่านมา |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ไหนๆก็กลายเป็นกระทู้บอกเล่าแล้ว ก็มาเล่าสัพเพเหระหน่อยนึงละกัน
ไม่กี่วันมานี้ ง่วนทำโปรแกรมตัวนี้อยู่ https://github.com/Rundiz/phpswitch
เอาไว้สั่งสลับรุ่น php ผ่าน command line พร้อม restart web server (Apache) ให้เสร็จ
(IIS ไม่รู้วิธีเลยไม่ได้ทำ, ทำเฉพาะที่มีให้ลอง)
รู้สึกว่า .NET + C# เขียนยากมากกก
ยกตัวอย่าง json งี้ ทาง PHP เราแค่ json_encode, json_decode แล้วพร้อมใช้เลย สบายๆ.
เจอ C# เข้าไป System.Text.Json ต้องมาสร้าง class รับ แล้วงง มะงุ มะงาหรา กับ JsonElement อีก เพราะมันเอามา foreach ไม่ได้ง่ายๆ
กว่าจะได้ปาไปเป็นวัน 555
แล้วยังตกม้าตายกับ glob ซึ่งทั้ง PHP และ Python มันเขียนง่ายๆสั้นๆมากเลย
แต่นี่ฝั่งนั้นเหมือนจะไม่รองรับหรือไงเนี่ย เอา pattern เดียวกันมันทำงานไม่ได้ และบาง package เอามาทำงานได้แต่ผลลัพธ์หาไม่เจอ ทั้งที่ 2 ภาษาอื่นหาเจอ...
รู้สึก PHP จะเป็นอะไรที่ง่ายสุดละ แล้วก็มีความสามารถมากพอต้องการด้วย ไม่ง่อย
|
|
|
|
|
Date :
2021-01-16 05:20:49 |
By :
mr.v |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
เราก็แหย่ คุณกระบี่อยู่ที่ใจ ไปเล่นฯอย่างนั้นแหละ เกิดมาเป็นคน มันต้องรองรับทุกฯสถานะการณ์ได้
ไม่ว่า จะดีหรือร้าย ตัวของเราเองต้องผ่านมันไปให้ได้
@mv ภาษาอะไรมันก็ไม่แตกต่างกัน ถ้ายังใช้ได้ก็ใช้ไป อย่าไปสนคำตัดสินใจของคนอื่น
ร้อยคนก็ร้อยความคิด อีกคนบอกว่าลึก อีกคนบอกว่าตื้น ก็ว่ากันไปครับ
นี่ C# Return เป็น โครตพ่อ เจสัน ด้วยซ้ำไปครับ
จริงฯ เขียนง่ายกว่านี้ เป็น
Code (C#)
ACCode = (string?)fields["ACCode"],
Code (C#)
List<ACTab> lst = new List<ACTab>();
dynamic results = null;
using (var cn = SexyDatabase.SexyConnection(forceOpen: true)) {
var result = cn.QueryMultipleAsync(query.ToString());
results = await result.Result.ReadAsync();
}
foreach (dynamic row in results) {
var fields = row as IDictionary<string, object>; //row.Cast<IDictionary<string, object>>()
var s = new ACTab {
Id = (int)fields["Id"],
ACCode = (string)fields["ACCode"] ?? default,
ACTitle = (string)fields["ACTitle"] ?? default,
ACTitle2 = (string)fields["ACTitle2"] ?? default,
ACCum_Amt = (decimal)(fields["ACCum_Amt"] ?? default),
ACFlag = (string)fields["ACFlag"] ?? default,
Project = (string)fields["Project"] ?? default,
Hold = (string)fields["Hold"] ?? default,
string1 = (string)fields["OrgName"] ?? default,
string2 = (string)fields["OrgName2"] ?? default,
};
lst.Add(s);
}
return Ok(lst);
ปล. ภาษาอะไร มันก็งดงาม เหมือนผู้หญิง งามแตกต่างกันไป มีโหนกมีนูน เหมือนกัน
|
|
|
|
|
Date :
2021-01-16 12:01:05 |
By :
ผ่านมา |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@กระบี่อยู่ที่ใจ
อย่าไปคิดอะไรมาก ไม่มีอะไรหรอก มันก็แค่คำสัพหยอกเล่นฯ
|
|
|
|
|
Date :
2021-01-16 12:04:23 |
By :
ผ่านมา |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
พวกตระกูล คอมไพล์ ยังติดนิสัย ใช้หน่วยความจำให้น้อยที่สุด เขาเลยแบ่งคลาส ที่จะใช้แยกออกจากกัน ให้มากที่สุด
เพื่อประโยชน์ในการคอมไพล์ให้เล็กที่สุด จะได้นำไปใช้ที่ไหนก็ได้ มันเลยต้องรู้ว่า คำสั่งไหนทำอะไร อยู่ที่ไหน ( กูจำไม่หมดโว้ย 55555)
แต่ php เขาทำสำหรับ web server เปิดทุกอย่างไว้รอ request ที่เข้ามา เลยมีมันหมดทุกความต้องการ ไม่ต้องคอมไพล์ให้เล็กหรืออะไรให้มันยุ่งยาก อยากได้อะไรมีให้หมด ใช้คำสั่งน้อยกว่า เลยจำได้ง่ายกว่า 5555 โคตรชอบเลย
ผมเขียน delhi ถ้าไม่ได้เขียนมานาน ไม่ได้สร้าง component เอาไว้เยอะ ก็เลิกเขียนเหมือนกัน ตอนนี้ก็ห่างๆ ไปมากแล้ว
ส่วน vs นี่แทบไม่ได้จับเลย เหลืออยู่เจ้่า 2 เจ้า ยังทนความเร้ารื้อของเราได้อยู่ไม่ยอมเปลี่ยนเป็น web service 55555
พูดง่ายๆ มาคุยกับผม ผมจับใช้ web service หมดล่ะตอนนี้ ก็ผมเก่งผมชำนาญ 555555 อย่างอื่นจำคำสั่ง จำ library ไม่ค่อยได้แล้ว
ต้องถาม พ่อกูร์ฯ แม่ย่าฮ์ ตลอด งานก็ช้า ไม่ทันกิน ตอนนี้โปรแกรมอื่นๆ มีแต่ algorithm อยู่เท่านั้น ส่วนชุดคำสั่งโยนทิ้งแม่น้ำไปเกือบหมด
|
|
|
|
|
Date :
2021-01-17 09:39:13 |
By :
Chaidhanan |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Chaidhanan
กระผมรับรู้ถึงความอ่อนโยน ความเมตตา ของท่านมหาปราชญ์ ปะปนไป ในทุกฯคำนั้น ครับผม
|
|
|
|
|
Date :
2021-01-17 10:49:30 |
By :
ผ่านมา |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@เดียว เจ้าของกระทู้ คุณอยากรู้อะไรเพิ่มเติมอีกไหม?
|
|
|
|
|
Date :
2021-01-17 10:51:11 |
By :
ผ่านมา |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
คอมไพล์เล็กสุด แต่ว่า ผม build ทั้งสำหรับ win64 linux64 เอาแบบไม่ต้องพึ่งคลาสภายนอกเลย ใช้ .NET5 แตกไฟล์ใช้ได้เลย ก็ปาเข้าไป 60 MB แว้ว
ของเก่า build ใช้ .NET Framework 4.x ต้องทำงานบน Windows build ออกมาเล็กนิดเดียว ไม่ถึง MB.
|
|
|
|
|
Date :
2021-01-17 10:54:11 |
By :
mr.v |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ในทางทฤษฏีและในทางปฏิบัติ มันมักจะสวนทางกันเสมอ
จุดยืนชีวิต จุดยืนของตัวเราเอง ก็เช่นเดียวกัน มันต้องมีหลักยึด
ยึดหมายถึงว่า ต้องมีช่วงระยะเวลาของมัน ดีที่สุดไม่มี แย่ที่สุดกลับกลายเป็นทางเลือกที่ดี ณ. เวลานั้นฯ
|
|
|
|
|
Date :
2021-01-17 11:05:07 |
By :
ผ่านมา |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ผ่านไป 4 วัน จขกท.อาจกำลังซุ่มดูและยังงงๆ อยู่ เพราะไม่รู้จะเอาคำตอบไหนไปแก้งาน มาแบบยำรวมมิตร
จขกท. ยังสบายดีไหมครับ ขอเสียงหน่อย
|
|
|
|
|
Date :
2021-01-17 12:21:44 |
By :
lakornworld |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Load balance : Server 02
|