php


إليكم برمجة سلة تسوق php

فكرتنا اليوم بتعتمد على الجلسات ومصفوفة متعددة الاتجاهات=> بتوقع هيك تفسيرها بالعربي

بحيث يتم تسجيل مصفوفة سله التسوق داخل السيشن حتى ينهي الزائر التسوق تحفظ في قاعدة البيانات

بسم الله نبدا

سوف نقوم بعمل دالة اضافة عنصر الى سله التسوق وشرحها كالاتي :

الشرح داخل الكود عبار عن كومنتات

كود PHP:
/*$pid=ايدي المنتج الذي نريد اضافته
$qty=  الكمية التي اضافها الزيون من هذه السلعة
*/
function add($pid,$qty){
/*الجملة الشرطية الاولى  نتاكد اذا كان موجود SESSION['basket'] في الجلسة
اذا لم تكن موجودة نقوم باضافتها وتعريف مصفوفة داخلها ونقوم باضافة ايدي المنتج والكمية كالاتي
$_SESSION['basket'][0]['productid']=$pid

[0]تعني انه اول منتج تتم اضافته بالسله
['productid'] تعني ايدي المنتج للعنصر 0 */

if(!isset($_SESSION['basket'])){
$_SESSION['basket']=array();
$_SESSION['basket'][0]['productid']=$pid;
$_SESSION['basket'][0]['qty']=$qty;
echo 
'تم اضافة السلعة';
}
/*اذا لم تكن السلعة الاولى نقوم بالتاكد اذا كانت موجودة سابقا
 واذا لم تكن موجودة نقوم باضافتها في اخر المصوفة*/
else {
/* في هذا الشرط سوف نتاكد اذا كان المنتج موجود سابقا في السلة ونقوم بتحديث الكمية
 عن طريق الدالة الاتية في نفس الكلاس سوف نقوم بشرحها لاحقا ان شاء الله*/
if($this->isexist($pid,$qty)){
echo 
'تم اتحديث الكمية';
}
/*اذا لم تكن السلعة مضافة سابقا نقوم هنا باضافتها في اخر المصفوفة كالاتي*/
else{
$m=$_SESSION['basket'];
$max=count($m);
$_SESSION['basket'][$max]['productid']=$pid;
$_SESSION['basket'][$max]['qty']=$qty;
echo 
'تم اضافة السلعة';
}
}


ننتقل الى الدالة التاليه التي تتاكد اذا كان المنتج موجود سابقا داخل السلة

كود PHP:
/*في هذه الدالة نقوم بالتاكد اذا كان المنتج موجود سابقا لتحديث كميته وارجاع صحيح
اما اذا لم يكن موجود يتم ارجاع خطا */
function isexist($pid,$qty) {
$m=$_SESSION['basket'];
$max=count($m);
for(
$i=0;$i<$max;$i++){
if(
$pid==$_SESSION['basket'][$i]['productid']){
$_SESSION['basket'][$i]['qty']=$qty;
return 
true;break;}
}
return 
false;} 
الى هنا ننتهي من اضافة المنتج

طريقة حذف المنتج من سلة التسوق تكون بهذه الدالة

كود PHP:
/*نقوم بهذه الدالة البحث عن المنتج عن طريق الايدي
اذا كان في المصفوفة يتم حذفه 
واعادة ترتيب المصفوفة عن طريق الدالة array_values()*/
function delete($pid){
$m=$_SESSION['basket'];
$max=count($m);
for(
$i=0;$i<$max;$i++){
if(
$pid==$_SESSION['basket'][$i]['productid']){
unset(
$_SESSION['basket'][$i]);
$_SESSION['basket']=array_values($_SESSION['basket']);$_SESSION['basket'.'num']-=1;break;}
}

هكذا ننتهي من حذف منتج منا لمصفوفة
ننتقل الى تعديل كمية السلعة عن طريق الدالة الاتية

كود PHP:
/*نقوم هنا بالبحث عن المنتج وتعديل الكمية
واذا كانت الكمية تساوي صفر يتم حذفها*/
function modify($pid,$qty){
$m=$_SESSION['basket'];
$max=count($m);
if(
$qty>0){
for(
$i=0;$i<$max;$i++){
if(
$pid==$_SESSION['basket'][$i]['productid']){
$_SESSION['basket'][$i]['qty']=$qty;break;}
}
}
else 
$this->delete($pid);



الى هنا قمنا باكمال الاضافة والحذف والتعديل على سلة التسوق

يبقى لنا كيفيه استرجاع البيانات وكيفيه حفظ الطلبية للزائر داخل قاعدة البيانات

بالنسبة لحفظ المصفوفه في قاعدة البيانات نستخدم الاتي

كود PHP:
              $basket=serialize($_SESSION['basket']); 
بالنسبة لعرض البضاعة
يتم كالاتي :

كود PHP:
function show_basket() {

$max=count($_SESSION['basket']);

                          
for(
$i=0;$i<$max;$i++){
echo 
'id=>'.$_SESSION['basket'][$i]['productid'].'qty=>'.$_SESSION['basket'][$i]['qty'];
}


طبعا اخواني الكلاس بشكل مبداي ويجب تطويره بحيث يناسب احتياجاتك
المهم الفكرة الاساسيه تكون كما في الكلاس الحالي

الكلاس كامل هنا

كود PHP:
class basket {
function 
add($pid,$qty){


if(!isset(
$_SESSION['basket'])){
$_SESSION['basket']=array();
$_SESSION['basket'][0]['productid']=$pid;
$_SESSION['basket'][0]['qty']=$qty;
echo 
'تم اضافة السلعة';
}

else {

if(
$this->isexist($pid,$qty)){
echo 
'تم اتحديث الكمية';
}
else{
$m=$_SESSION['basket'];
$max=count($m);
$_SESSION['basket'][$max]['productid']=$pid;
$_SESSION['basket'][$max]['qty']=$qty;
echo 
'تم اضافة السلعة';
}
}

}

function 
isexist($pid,$qty) {
$m=$_SESSION['basket'];
$max=count($m);
for(
$i=0;$i<$max;$i++){
if(
$pid==$_SESSION['basket'][$i]['productid']){
$_SESSION['basket'][$i]['qty']=$qty;
return 
true;break;}
}
return 
false;}

function 
delete($pid){
$m=$_SESSION['basket'];
$max=count($m);
for(
$i=0;$i<$max;$i++){
if(
$pid==$_SESSION['basket'][$i]['productid']){
unset(
$_SESSION['basket'][$i]);
$_SESSION['basket']=array_values($_SESSION['basket']);$_SESSION['basket'.'num']-=1;break;}
}
}


function 
modify($pid,$qty){
$m=$_SESSION['basket'];
$max=count($m);
if(
$qty>0){
for(
$i=0;$i<$max;$i++){
if(
$pid==$_SESSION['basket'][$i]['productid']){
$_SESSION['basket'][$i]['qty']=$qty;break;}
}
}
else 
$this->delete($pid);


}

function 
show_basket() {

$max=count($_SESSION['basket']);
for(
$i=0;$i<$max;$i++){
echo 
'id=>'.$_SESSION['basket'][$i]['productid'].'qty=>'.$_SESSION['basket'][$i]['qty'];
}
}


انتهى ..