PDA

View Full Version : بدست آوردن آیتم های اضافه شده به سبد خرید در این کد



abbas3zaar
جمعه 11 فروردین 1396, 00:57 صبح
سلام
آیتم ها به سبد خرید اضافه میشن فقط مونده با زدن دکمه "ثبت سفارش" مقادیر (جمع کل، آیتم های سبد) در جدول ذخیره شن

در کد زیر در قسمت case insert میخوام مقادیر سشن cart_item رو insert کنم به جدول





<?phpsession_start();require_once("includes/dbcontroller.php");$db_handle = new DBController();if(!empty($_GET["action"])) {switch($_GET["action"]) { case "add": if(!empty($_POST["quantity"])) { $productByCode = $db_handle->runQuery("SELECT * FROM tbl_foods WHERE food_code='" . $_GET["code"] . "'"); $itemArray = array($productByCode[0]["food_code"]=>array('name'=>$productByCode[0]["food_name"], 'code'=>$productByCode[0]["food_code"], 'quantity'=>$_POST["quantity"], 'price'=>$productByCode[0]["food_price"])); if(!empty($_SESSION["cart_item"])) { if(in_array($productByCode[0]["food_code"],array_keys($_SESSION["cart_item"]))) { foreach($_SESSION["cart_item"] as $k => $v) { if($productByCode[0]["food_code"] == $k) { if(empty($_SESSION["cart_item"][$k]["quantity"])) { $_SESSION["cart_item"][$k]["quantity"] = 0; } $_SESSION["cart_item"][$k]["quantity"] += $_POST["quantity"]; } } } else { $_SESSION["cart_item"] = array_merge($_SESSION["cart_item"],$itemArray); } } else { $_SESSION["cart_item"] = $itemArray; } } break; case "insert":
break;


case "remove": if(!empty($_SESSION["cart_item"])) { foreach($_SESSION["cart_item"] as $k => $v) { if($_GET["code"] == $k) unset($_SESSION["cart_item"][$k]); if(empty($_SESSION["cart_item"])) unset($_SESSION["cart_item"]); } } break; case "empty": unset($_SESSION["cart_item"]); break; }}
?>






اینم کد های مربوط به سبد خریده






<form method="post" action="orders.php?action=success">
<?phpif(isset($_SESSION["cart_item"])){ $item_total = 0;?> <button type="submit" class="btn btn-success">ثبت سفارش</button><table class="table"><tbody>
<tr><th style="text-align:center;"><strong>نام</strong></th><th style="text-align:center;"><strong>تعداد</strong></th><th style="text-align:center;"><strong>قیمت</strong></th><th style="text-align:center;"></th></tr> <?php foreach ($_SESSION["cart_item"] as $item){ ?> <tr> <td style="text-align:center;"><strong><?php echo $item["name"]; ?></strong></td> <td style="text-align:center;"><?php echo $item["quantity"]; ?></td> <td style="text-align:center;"><?php echo $item["price"]; ?></td> <td style="text-align:center;"><a href="orders.php?action=remove&code=<?php echo $item["code"]; ?>" class="btnRemoveAction">حذف</a></td> </tr> <?php $item_total += ($item["price"]*$item["quantity"]); } ?>
<tr class="col-md-12"><td align=center style="font-weight:bold;color:green;font-size:15px;"><strong style="color:red;">مبلغ قابل پرداخت: </strong> <?php echo $item_total." تومان"; ?>
</td>
</tr><tr class="col-md-12"><td align=center><a id="btnEmpty" href="orders.php?action=empty">خالی کردن سبد</a>

</td>
</tr></tbody></table> <?php}?>

abbas3zaar
جمعه 11 فروردین 1396, 19:00 عصر
کسی نبود؟
فقط میخوام یکی کد رو بررسی کنه و بهم بگه چجوری آیتم های اضافه شده در سمت چپ عکس که نام غذا و تعداش و مبلغ کل هست رو به دست بیارم. در فایل php پیوست شده بالای صفحه کدهای cart_item هست که داخل سشن ذخیره شدن.

در قسمت case "remove" که برای حذف آیتم از سبد
قسمت case "empty" خالی کردن سبد
یه قسمت هم به نام case "success" میخوام که داخلش آیتم های سبد خرید بدست بیارم و insert کنم

اون آیتم ها رو میخوام داخل بخش case "success"درست کنم

plague
شنبه 12 فروردین 1396, 17:47 عصر
اگه بخای اینجوری بپرسی خیلی از سوالات بی جواب میمونه شاید 1-2 بار کسی پیدا بشه ولی بقیه مواقع یا جواب نمیگیری یا خیلی طول میکشه
اول اینکه کدت رو نزار برای دانلود که شخصا کد کسی رو دانلود نمیکنم
دوم اینکه انتظار داری ما همه کدهات رو بخونیم وببینیم چی به چیه ... کدی که اینجا میزاری باید کوتاه و مشخص باشه (دقیقا اون قسمتی که مشکل داری )
سوم اینکه سوالاتت خیلی غیر فنی و کلی و گسترده هستن من وقت ندارم به شما بگم چجوری سبد خرید بنویسی
ولی اگه خودت بری جلو و مثلا کد حذف کردن رو بزاری بپرسی این سشن رو دارم چجوری ازش آیتم حذف کنم میتونم راهنماییت کنم
چهارم اینکه انتظار نداشته باش کسی برات کد بنویسه شما خودت باید بنویسی ما میتونیم برات رفع اشکال کنیم

abbas3zaar
شنبه 12 فروردین 1396, 22:50 عصر
اگه بخای اینجوری بپرسی خیلی از سوالات بی جواب میمونه شاید 1-2 بار کسی پیدا بشه ولی بقیه مواقع یا جواب نمیگیری یا خیلی طول میکشه
اول اینکه کدت رو نزار برای دانلود که شخصا کد کسی رو دانلود نمیکنم
دوم اینکه انتظار داری ما همه کدهات رو بخونیم وببینیم چی به چیه ... کدی که اینجا میزاری باید کوتاه و مشخص باشه (دقیقا اون قسمتی که مشکل داری )
سوم اینکه سوالاتت خیلی غیر فنی و کلی و گسترده هستن من وقت ندارم به شما بگم چجوری سبد خرید بنویسی
ولی اگه خودت بری جلو و مثلا کد حذف کردن رو بزاری بپرسی این سشن رو دارم چجوری ازش آیتم حذف کنم میتونم راهنماییت کنم
چهارم اینکه انتظار نداشته باش کسی برات کد بنویسه شما خودت باید بنویسی ما میتونیم برات رفع اشکال کنیم


پست اول رو ویرایش کردم. خب اینجوری بهتره؟

plague
شنبه 12 فروردین 1396, 23:44 عصر
خب مشکلت چیه الان ؟ از تو سشن بخون محصولات رو بریز تو دیتابیس نیاز نداری پستشون کنی !
کدت رو هم مرتب کن که قابل خوندن باشه

abbas3zaar
یک شنبه 13 فروردین 1396, 00:00 صبح
دو تا جدول دارم.

جدول orders
جدول order_items

در جدول orders فیلد های زیر رو دارم:

id
customer_id شماره مشتری
total_price جمع کل سفارش
created تاریخ ایجاد سفارش
status وضعیت سفارش

در جدول order_items فیلد های زیر رو دارم:

id
order_id شماره سفارشی که در جدول orders ثبت میشه
product_id نام محصول
quantity تعداد محصول

با درج در جدول orders مشکلی ندارم

برای مثال:
در سبد خرید
محصول شماره 1 تعداد 5 عدد انتخاب شده
محصول شماره 2 تعداد 3 عدد انتخاب شده
فقط مشکلم اینه که وقتی کوئری سفارش در جدول orders درج میشه، در جدول order_items هم:

order_id شماره سفارشی که در جدول orders ثبت میشه
product_id نام محصول
quantity تعداد محصول

درج بشه. در مقال بالا گفتم که برای مثال 5 عدد از محصول شماره 1 انتخاب شد و محصول شماره 2 تعداد 3 عدد انتخاب شد، پس توی جدول order_items باید 5 تا رکورد برای محصول شماره 1 و 3 تا رکورد برای محصول شماره 2 ثبت بشه. درج کردن همین قسمت رو مشکل دارم



در کد زیر آیتم های سبد خرید و تعدادشون نمایش داده میشن:




<?php foreach ($_SESSION["cart_item"] as $item){?><tr><td style="text-align:center;"><strong><?php echo $item["name"]; ?></strong></td><td style="text-align:center;"><?php echo $item["quantity"]; ?></td><td style="text-align:center;"><?php echo $item["price"]; ?></td><td style="text-align:center;"><a href="orders.php?action=remove&code=<?php echo $item["code"]; ?>" class="btnRemoveAction">حذف</a></td></tr><?php$item_total += ($item["price"]*$item["quantity"]);}?>

plague
یک شنبه 13 فروردین 1396, 00:14 صبح
ببین نمیتونی برسونی درست که مشکلت چیه هی من باید یکم یکم از زیر زبونت بکشم بیرون !
خب ریختن تو تیبل اردر آیتم رو مشکل داری
اول اینکه 5 تا رکورد لازم نیست بریزی بلکه فقط یک رکورد میریزی به ازای غذا و فیلد تعداد رو میزاری 5 برای اون رکورد
دیگه مشکلت کجاشه ؟
سشن رو میندازی توی یک حلقه همونجوری که اینجا برای نمایش سبد خرید گزاشتی و بعد توی حلقه بجای چاپشون میریزی تو دیتابیس

دقیق بگو مشکلت چیه کلی گویی نکن وگرنه تا چند روز آینده باید بشینیم اینجا

abbas3zaar
یک شنبه 13 فروردین 1396, 00:57 صبح
ببین نمیتونی برسونی درست که مشکلت چیه هی من باید یکم یکم از زیر زبونت بکشم بیرون !
خب ریختن تو تیبل اردر آیتم رو مشکل داری
اول اینکه 5 تا رکورد لازم نیست بریزی بلکه فقط یک رکورد میریزی به ازای غذا و فیلد تعداد رو میزاری 5 برای اون رکورد
دیگه مشکلت کجاشه ؟
سشن رو میندازی توی یک حلقه همونجوری که اینجا برای نمایش سبد خرید گزاشتی و بعد توی حلقه بجای چاپشون میریزی تو دیتابیس

دقیق بگو مشکلت چیه کلی گویی نکن وگرنه تا چند روز آینده باید بشینیم اینجا


در کد زیر وقتی آدرس صفحه orders.php?action=success میشه کد زیر اجرا میشه







<?phpif(!empty($_GET["action"])){switch($_GET["action"]){case "success":
$pro = new foods();$pro->order_insert($item_total);
if ($pro) {echo "سفارش ثبت شد";unset($_SESSION["cart_item"]);} else {echo "خطا در ثبت سفارش رخ داد";}break;}}?>



و در کد بالا در کلاس foods تابع order_insert اجرا میشه

اینم کدهای داخل تابع order_insert




public function order_insert($item_total){$query = "INSERT INTO orders (total_price,customer_id,created,status) VALUES ('$item_total',1,'".date("Y-m-d H:i:s")."',1)";$do = mysql_query($query);return $do;}



خب اینجا در جدول orders فقط insert میشه
من نمیتونم جزئیات سبد خرید رو بدست بیارم

اون قسمت که گفتی :::: اول اینکه 5 تا رکورد لازم نیست بریزی بلکه فقط یک رکورد میریزی به ازای غذا و فیلد تعداد رو میزاری 5 برای اون رکورد


این قسمت رو من اشتباه نوشتم. بله همین که شما گفتی رو منظورم بود

abbas3zaar
یک شنبه 13 فروردین 1396, 01:16 صبح
برای مثال در سبد خرید این محصولات رو اضافه میکنم

http://uupload.ir/files/fy3i_11111.jpg


نوشابه 2 تا
فلافل 3 تا
جمع مبلغ 12500 تومان

شد

و با زدن دکمه ثبت سفارش در جدول زیر درج میشه

http://uupload.ir/files/bwsl_34534535.jpg


فقط من نمیتونم در جدول order_item (عکس زیر) نام غذا ها و تعدادشون رو بدست بیارم

http://uupload.ir/files/eqh6_5555555.jpg


اینم کد درج


http://uupload.ir/files/047q_300.jpg



http://uupload.ir/files/f68s_22222222.jpg



فقط مونده کدهای بخش جزئیات سبد رو در جدول order_items ذخیزه کنم. فقط اینو مشکل داارم و کدش رو نمیدونم







.

plague
یک شنبه 13 فروردین 1396, 02:45 صبح
چرا نمیتونی ؟ ساده ومشخصه وقتی که اردر رو ریختی تو دیتبایس میتونی یه تابع دیگه بسازی به این شکل و این رو فراخانی کنی تا آیتم ها رو بریزه تو دیتبایس



public function order_item_insert($session , $order_id ){
foreach( $session as $item )
{
$query = "INSERT INTO orders_items (order_id , food_id , quantity ) VALUES ('$order_id','".$item['food_id']."' , '".$item['quantity']."')";
mysql_query($query);
}

}
لطفا توجه داشته باش که من این کد رو همینجوری برای راهنمایی و آشنایی با روش کد نویسی نوشتم نه اینکه دقیقا این کده و این رو کپی کن !