öncelikle masa seçiyorlar
<!-- PAGE-HEADER -->
<div class="page-header">
<h1 class="page-title">Masalar</h1>
</div>
<!-- ROW OPEN -->
<div class="row">
<?php
$stmt = $db->query("SELECT * FROM urun_ebat WHERE ebatdurum=1 ORDER BY ebatbaslik ASC");
$products = $stmt->fetchAll(PDO::FETCH_OBJ);
foreach ($products as $masacek) {
?>
<div class="col-sm-6 col-md-6 col-lg-6 col-xl-3">
<button type="button" class="card bg-info img-card box-info-shadow addToCardBtns" product_id="<?php echo $masacek->ebatid; ?>" >
<div class="card-body">
<div class="d-flex">
<div class="text-white">
<h2 class="mb-0 number-font"><?php echo $masacek->ebatbaslik; ?></h2>
<p class="text-white mb-0"><?php echo $masacek->ebatsira; ?>'lik Masa</p>
</div>
<div class="ms-auto"> <i class="fa fa-cutlery text-white fs-30 me-2 mt-2"></i> </div>
</div>
</div>
</button>
</div>
<!-- COL END -->
<?php } ?>
<script>
var addToMenuBtns = document.querySelectorAll(".addToCardBtns");
addToMenuBtns.forEach(function(btn) {
btn.addEventListener("click", function() {
var url = "webting/cart_db.php";
var data = {
p: "addToCart",
product_id: $(this).attr("product_id"),
};
$.post(url, data, function(response) {
window.location.replace("index.php?index=menu");
//console.log(response);
});
});
});
</script>
</div>
</div>daha sonra ürün ekleme sayfası geliyor.<div class="col-xl-12">
<div class="card">
<div class="card-header">
<h3 class="card-title">Menu</h3>
</div>
<div class="card-body">
<div class="panel panel-primary">
<div class="tab-menu-heading">
<div class="tabs-menu">
<!-- Tabs -->
<ul class="nav panel-tabs panel-success">
<?php
// Kategori tablosundan tüm kategorileri al
$kategori_sorgu = "SELECT id, katbaslik, katicon FROM urun_kategoriler ORDER BY siralama";
$kategori_sonuc = $db->query($kategori_sorgu);
// Her bir kategori için ürünleri sırala ve ekrana yazdır
if ($kategori_sonuc->rowCount() > 0) {
while($kategori = $kategori_sonuc->fetch(PDO::FETCH_ASSOC)) {
$kategori_id = $kategori["id"];
$kategori_adi = $kategori["katbaslik"];
$kategori_icon = $kategori["katicon"];
echo '
<li><a href="#tab'.$kategori_id.'" class="' . (($kategori_id == 1) ? 'active' : '') . '" data-bs-toggle="tab"><span><i class="fa fa-'.$kategori_icon.'"></i></span> '.$kategori_adi.'</a></li>';
}
} else {
echo "<p>Kategori bulunamadı.</p>";
}
?>
</ul>
</div>
</div>
<div class="panel-body tabs-menu-body">
<div class="tab-content">
<?php
$kategori_sonuc = $db->query($kategori_sorgu);
// Her bir kategori için ürünleri sırala ve ekrana yazdır
if ($kategori_sonuc->rowCount() > 0) {
while($kategori = $kategori_sonuc->fetch(PDO::FETCH_ASSOC)) {
$kategori_id = $kategori["id"];
$kategori_adi = $kategori["katbaslik"];
echo '<div class="tab-pane ' . (($kategori_id == 1) ? 'active' : '') . '" id="tab'.$kategori_id.'">';
$urun_sorgu = "SELECT * FROM urunler WHERE urunkat = $kategori_id ORDER BY urunbaslik";
$urun_sonuc = $db->query($urun_sorgu);
echo '<div class="row row-cards">';
if ($urun_sonuc->rowCount() > 0) {
while($urun = $urun_sonuc->fetch(PDO::FETCH_ASSOC)) {
$urun_adi = $urun["urunbaslik"];
$urunid = $urun["urunid"];
$urun_fiyat = $urun["urunfiyat"];
$urun_resim = $urun["urunresim"];
echo '
<div class="col-sm-6 col-md-6 col-lg-6 col-xl-3">
<div class="card">
<div class="card-header pb-0 border-bottom-0">
<h3 class="card-title">'.$urun_adi.'</h3>
<div class="card-options">
<button urun_id="'.$urunid.'" class="btn btn-sm btn-warning addToMenuBtn"><i class="fa fa-plus mb-0"></i></button>
</div>
</div>
<div class="card-body pt-0">
<!--img src="'.$urun_resim.'" class="img-fluid mb-2" alt="'.$urun_adi.'" /-->
<h3 class="d-inline-block mb-2">'.$urun_fiyat.' TL</h3>
</div>
</div>
</div>
';
}
} else {
echo "<p>Ürün bulunamadı.</p>";
}
echo '</div></div>';
}
} else {
echo "<p>Kategori bulunamadı.</p>";
}
?>
</div>
</div>
</div>
</div>
<texarea></texarea>
</div>
</div>sepette kodları ise burada<div class="page-header">
<?php
if(isset($_SESSION["shoppingCart"])){
if($total_count > 0) { ?>
<a href="index.php?index=menu"><h1 class="page-title"><?php displayShoppingCartProducts(); ?></h1></a>
<?php echo '</h1>';
?>
</div>
<!-- ROW-1 OPEN -->
<div class="row">
<div class="col-lg-12 col-md-12 col-sm-12 col-xl-8">
<div class="card cart">
<div class="card-header">
<h3 class="card-title"><?php echo $total_count; ?> Sipariş Bulunmaktadır</h3>
</div>
<div class="card-body">
<div class="table-responsive">
<table class="table table-bordered table-vcenter">
<thead>
<tr class="border-top">
<th>Ürün</th>
<th>Fiyat</th>
<th>Adet</th>
<th>Toplam</th>
<th>İşlem</th>
</tr>
</thead>
<tbody>
<?php foreach($shopping_products as $menus){ ?>
<tr>
<td><?php echo $menus->urunbaslik; ?></td>
<td class="fw-bold"><?php echo $menus->urunfiyat; ?> TL</td>
<td>
<div class="handle-counter" id="handleCounter4">
<a href="webting/cart_db.php?art=dec&urun_id=<?php echo $menus->urunid; ?>" class="counter-minus btn btn-white lh-2 shadow-none" >
<i class="fa fa-minus text-muted"></i>
</a>
<input type="text" value="<?php echo $menus->count; ?>" class="qty">
<a href="webting/cart_db.php?art=inc&urun_id=<?php echo $menus->urunid; ?>" class="counter-plus btn btn-white lh-2 shadow-none">
<i class="fa fa-plus text-muted"></i>
</a>
</div>
</td>
<td><?php echo $menus->total_price; ?></td>
<td>
<div class=" d-flex g-2">
<button urun_id="<?php echo $menus->urunid; ?>" class="btn text-danger bg-danger-transparent btn-icon py-1 urunSilBtn" data-bs-toggle="tooltip" data-bs-original-title="Sil"><span class="bi bi-trash fs-16"></span></button>
</div>
</td>
</tr>
<?php }?>
</tbody>
</table>
</div>
<?php
$shopping_cart = $_SESSION['shoppingCart'];
print_r($shopping_cart);
?>
</div>
</div>
</div>
<div class="col-lg-12 col-xl-4 col-sm-12 col-md-12">
<div class="card">
<div class="card-header">
<div class="card-title">Şipariş Bilgileri</div>
</div>
<div class="card-body py-2">
<div class="table-responsive">
<table class="table table-borderless text-nowrap mb-0">
<tbody>
<?php
$stmt = $db->query("SELECT * FROM doviz WHERE durum=1 ORDER BY dovizid ASC");
$doviz = $stmt->fetchAll(PDO::FETCH_OBJ);
foreach ($doviz as $dovizcek) {
?>
<tr>
<td class="text-start">Genel Toplam <?php echo $dovizcek->dovizimge; ?><br><h6 class="text-warning"><?php echo $dovizcek->dovizisim; ?></h6></td>
<td class="text-end"><span class="fw-bold text-green">
<?php
$doviz_price = dovizhesap($total_price, $dovizcek->dovizkur);
echo $doviz_price;
?>
</span></td>
</tr>
<?php } ?>
<tr>
<td class="text-start fs-18">Toplam</td>
<td class="text-end"><span class="ms-2 fw-bold fs-23"><?php echo $total_price; ?>TL</span></td>
</tr>
</tbody>
</table>
</div>
</div>
<div class="card-footer">
<div class="btn-list">
<button class="btn btn-primary"><i class="fa fa-print me-1"></i>Yazdır</button>
<button class="btn btn-success float-sm-end kaydetBtn">Kaydet <i class="fa fa-save ms-1"></i></button>
</div>
</div>
</div>
</div>
</div>
<!-- ROW-1 CLOSED -->islem jsvar addToMenuBtn = document.querySelectorAll(".addToMenuBtn");
addToMenuBtn.forEach(function(btn) {
btn.addEventListener("click", function() {
var url = "webting/cart_db.php";
var data = {
m: "addToMenu",
urun_id: $(this).attr("urun_id")
};
$.post(url, data, function(response) {
$('.cart-count').text(response);
});
});
});
var urunSilBtn = document.querySelectorAll(".urunSilBtn");
urunSilBtn.forEach(function(btn) {
btn.addEventListener("click", function() {
var url = "webting/cart_db.php";
var data = {
m: "removeFromCart",
urun_id: $(this).attr("urun_id")
};
$.post(url, data, function(response) {
window.location.reload();
});
});
});
/*
var kaydetBtn = document.querySelectorAll(".kaydetBtn");
kaydetBtn.forEach(function(btn) {
btn.addEventListener("click", function() {
var url = "webting/cart_db.php";
var data = {
sepet: "sepeturun",
};
$.post(url, data, function(response) {
window.location.reload();
});
});
});*/
var kaydetBtn = document.querySelectorAll(".kaydetBtn");
kaydetBtn.forEach(function(btn) {
btn.addEventListener("click", function() {
var url = "webting/cart_db.php";
var data = {
sepet: "sepeturun",
};
$.post(url, data, function(response) {
console.log(response);
});
});
});son olarak ise kayıt ve diğer işlemlerin yapıldığı cart_db.php
<?php
require_once '../system/function.php';
if( @$_SESSION['login'] != @sha1(md5(IP().$bcode)) ){
go(site);
}
function addToCart($product_item){
if(isset($_SESSION["shoppingCart"])){
$shoppingCart = $_SESSION["shoppingCart"];
}else {
$shoppingCart=array();
}
if(isset($shoppingCart["products"])){
$products = $shoppingCart["products"];
}else {
$products=array();
}
if(isset($shoppingCart["menus"])){
$menus = $shoppingCart["menus"];
}else {
$menus=array();
}
if(isset($product_item->ebatid)){
$products[$product_item->ebatid] = $product_item;
}
//Adet Kontrol
if(array_key_exists($product_item->urunid, $menus)){
$menus[$product_item->urunid]->count++;
}else if(isset($product_item->urunid)){
$menus[$product_item->urunid] = $product_item;
}
//Sepetin Hesaplanması
$total_price = 0.0;
$total_count = 0;
if (!empty($menus)) {
foreach($menus as $masarandid => $menu){
$menu_price = $menu->count * $menu->urunfiyat;
$total_price += $menu_price;
$total_count += $menu->count;
}
}
$summary['total_price'] = $total_price;
$summary['total_count'] = $total_count;
$total_count . "=>" . $total_price;
$_SESSION["shoppingCart"]["products"] = $products;
$_SESSION["shoppingCart"]["menus"] = $menus;
$_SESSION["shoppingCart"]["summary"] = $summary;
return $total_count;
}
function removeFromCart($urunid){
if(isset($_SESSION["shoppingCart"])){
$shoppingCart = $_SESSION["shoppingCart"];
$menus = $shoppingCart["menus"];
// Ürünü Listeden Çıkar
if(array_key_exists($urunid, $menus)){
unset($menus[$urunid]);
}
// Tekrardan Ürünleri Hesapla
$total_price = 0.0;
$total_count = 0;
foreach($menus as $menu){
$menu->total_price = $menu->count * $menu->urunfiyat;
$total_price = $total_price + $menu->total_price;
$total_count += $menu->count;
}
$summary['total_price'] = $total_price;
$summary['total_count'] = $total_count;
$_SESSION["shoppingCart"]["menus"] = $menus;
$_SESSION["shoppingCart"]["summary"] = $summary;
return $total_count;
}
}
function incCount($urunid){
if(isset($_SESSION["shoppingCart"])){
$shoppingCart = $_SESSION["shoppingCart"];
}
if(isset($shoppingCart["menus"])){
$menus = $shoppingCart["menus"];
}
//Adet Kontrol
if(array_key_exists($urunid, $menus)){
$menus[$urunid]->count++;
}
//Sepetin Hesaplanması
$total_price = 0.0;
$total_count = 0;
if (!empty($menus)) {
foreach($menus as $menu){
$menu->total_price = $menu->count * $menu->urunfiyat;
$total_price = $total_price + $menu->total_price;
$total_count += $menu->count;
}
}
$summary['total_price'] = $total_price;
$summary['total_count'] = $total_count;
$_SESSION["shoppingCart"]["menus"] = $menus;
$_SESSION["shoppingCart"]["summary"] = $summary;
return true;
}
function decCount($urunid){
if(isset($_SESSION["shoppingCart"])){
$shoppingCart = $_SESSION["shoppingCart"];
}
if(isset($shoppingCart["menus"])){
$menus = $shoppingCart["menus"];
}
//Adet Kontrol
if(array_key_exists($urunid, $menus)){
if($menus[$urunid]->count > 1){
$menus[$urunid]->count--;
}else{
unset($menus[$urunid]);
}
}
//Sepetin Hesaplanması
$total_price = 0.0;
$total_count = 0;
if (!empty($menus)) {
foreach($menus as $menu){
$menu->total_price = $menu->count * $menu->urunfiyat;
$total_price = $total_price + $menu->total_price;
$total_count += $menu->count;
}
}
$summary['total_price'] = $total_price;
$summary['total_count'] = $total_count;
$_SESSION["shoppingCart"]["menus"] = $menus;
$_SESSION["shoppingCart"]["summary"] = $summary;
return true;
}
//SESSION ürünleri ve masayı database kaydetme
function urunkaydet($kaydet){
global $db;
$masarandid = uniqid();
if(isset($_SESSION["shoppingCart"])){
$shoppingCart = $_SESSION["shoppingCart"];
$products = $shoppingCart["products"];
foreach ($products as $product) {;
$ebatbaslik = $product->ebatbaslik;
$ebattarih = $product->ebattarih;
$masaid = $product->ebatid;
}
}
$total_price = $_SESSION['shoppingCart']['summary']['total_price'];
$total_count = $_SESSION['shoppingCart']['summary']['total_count'];
$masa_durum = 1;
// Insert into masalar table
$sql = "INSERT INTO siparismasa (masaid, masarandid, ebatbaslik, ebattarih, masatotalprice, masatotalcount, masadurum) VALUES (:masaid, :masarandid, :ebatbaslik, :ebattarih, :masatotalprice, :masatotalcount, :masadurum)";
$stmt = $db->prepare($sql);
$stmt->bindParam(':masaid', $masaid);
$stmt->bindParam(':masarandid', $masarandid);
$stmt->bindParam(':ebatbaslik', $ebatbaslik);
$stmt->bindParam(':ebattarih', $ebattarih);
$stmt->bindParam(':masatotalprice', $total_price);
$stmt->bindParam(':masatotalcount', $total_count);
$stmt->bindParam(':masadurum', $masa_durum);
$stmt->execute();
// Insert into siparis table
if(isset($_SESSION["shoppingCart"])){
$shoppingCart = $_SESSION["shoppingCart"];
$shopping_products = $shoppingCart["menus"];
foreach ($shopping_products as $menu) {
$urunbaslik = $menu->urunbaslik;
$urunrandid = $menu->urunrandid;
$urunkat = $menu->urunkat;
$count = $menu->count;
$price = $menu->urunfiyat;
$ids = $menu->urunid;
$sql = "INSERT INTO siparisurun (siparisidurun, urunkat, masarandid, urunbaslik, urunrandid, siparisadet, urunfiyat) VALUES (:siparisidurun, :urunkat, :masarandid, :urunbaslik, :urunrandid, :siparisadet, :urunfiyat)";
$stmt = $db->prepare($sql);
$stmt->bindParam(':masarandid', $masarandid);
$stmt->bindParam(':urunbaslik', $urunbaslik);
$stmt->bindParam(':urunrandid', $urunrandid);
$stmt->bindParam(':siparisadet', $count);
$stmt->bindParam(':urunfiyat', $price);
$stmt->bindParam(':siparisidurun', $ids);
$stmt->bindParam(':urunkat', $urunkat);
$stmt->execute();
}
}
return true;
}
//Database deki ürünleri ve masayı SESSION yükleme
function siparissession($product){
global $db;
// Masalar tablosundan verileri çekme
$shoppingCart = $_SESSION["shoppingCart"];
$products = $shoppingCart["products"];
$menus = $shoppingCart["menus"];
$products[$product->ebatid] = (object) array(
"ebatid" => $product->ebatid,
"ebatbaslik" => $product->ebatbaslik,
"ebatsef" => $product->ebatsef,
"ebatkeyw" => $product->ebatkeyw,
"ebatdesc" => $product->ebatdesc,
"ebattarih" => $product->ebattarih,
"ebatdurum" => $product->ebatdurum,
"ebatsira" => $product->ebatsira,
);
$masarandid = $product->masarandid;
// masarandid değeri 642b00655c0c1 olan siparişleri veritabanından çekme
$stmt = $db->prepare("SELECT * FROM siparisurun WHERE masarandid = :masarandid");
$stmt->bindParam(':masarandid', $masarandid);
$stmt->execute();
$rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
// Her bir siparişi menus değişkenine ekleyerek döngü oluşturma
foreach ($rows as $row) {
$menus[$row["masarandid"]][] = (object) array(
"urunid" => $row["siparisidurun"],
"urunrandid" => $row["siparisidurunrandid"],
"urunbaslik" => $row["urunbaslik"],
"urunkeyw" => $row["urunkeyw"],
"urunsef" => $row["urunsef"],
"urundesc" => $row["urundesc"],
"urunkat" => $row["urunkat"],
"urunresim" => $row["urunresim"],
"urundurum" => $row["urundurum"],
"urunfiyat" => $row["urunfiyat"],
"urunind" => $row["urunind"],
"uruntarih" => $row["uruntarih"],
"count" => $row["siparisadet"]
);
}
$total_price = 0.0;
$total_count = 0;
if (!empty($menus)) {
foreach($menus as $masarandid => $menu){
foreach($menu as $item) {
$item_price = $item->count * $item->urunfiyat;
$total_price += $item_price;
$total_count += $item->count;
}
}
}
$summary['total_price'] = $total_price;
$summary['total_count'] = $total_count;
$_SESSION["shoppingCart"]["products"] = $products;
$_SESSION["shoppingCart"]["menus"] = $menus;
$_SESSION["shoppingCart"]["summary"] = $summary;
return $total_count;
}
if(isset($_POST['p'])){
$id = $_POST["product_id"];
$stmt = $db->prepare("SELECT * FROM siparismasa WHERE masaid = ?");
$stmt->execute([$id]);
if ($stmt->rowCount() > 0) {
$product = $db->query("SELECT * FROM siparismasa WHERE masaid={$id}", PDO::FETCH_OBJ)->fetch();
siparissession($product);
}else{
$product = $db->query("SELECT * FROM urun_ebat WHERE ebatid={$id}", PDO::FETCH_OBJ)->fetch();
addToCart($product);
}
}
if(isset($_POST['m'])){
$idi = $_POST["urun_id"];
$islem = $_POST["m"];
if($islem == "addToMenu"){
$urun = $db->query("SELECT * FROM urunler WHERE urunid={$idi}", PDO::FETCH_OBJ)->fetch();
$urun->count=1;
echo addToCart($urun);
}else if($islem == "removeFromCart"){
echo removeFromCart($idi);
}
}
if(isset($_GET['art']) && isset($_GET['urun_id'])){
$urunid = $_GET["urun_id"];
$islem = $_GET["art"];
if($islem == "inc"){
if(incCount($urunid)){
header("Location:../index.php?index=sepet");
exit();
}
}else if($islem == "dec"){
if(decCount($urunid)){
header("Location:../index.php?index=sepet");
exit();
}
}
}
//SESSION ürünleri ve masayı database kaydetme
if(isset($_POST['sepet'])){
$islem = $_POST["sepet"];
if($islem == "sepeturun"){
if(urunkaydet($islem)){
echo 'kaydetttim herhalde';
exit();
}
}
}SESSION ilk yüklediğimdeki arrayArray ( [products] => Array ( [3] => stdClass Object ( [ebatid] => 3 [ebatbaslik] => Masa 2 [ebatsef] => masa-2 [ebatkeyw] => masa-2 [ebatdesc] => masa-2 [ebattarih] => 2023-02-08 19:17:13 [ebatdurum] => 1 [ebatsira] => 4 ) ) [menus] => Array ( [1] => stdClass Object ( [urunid] => 1 [urunrandid] => 642b17a37f1cc [urunbaslik] => Kola [urunkeyw] => kola [urunsef] => kola [urundesc] => kola [urunkat] => 1 [urunresim] => [urundurum] => 1 [urunfiyat] => 20 [urunind] => 0 [uruntarih] => 2023-04-03 21:14:59 [count] => 1 ) [2] => stdClass Object ( [urunid] => 2 [urunrandid] => 642b17af7e5aa [urunbaslik] => Soda [urunkeyw] => soda [urunsef] => soda [urundesc] => soda [urunkat] => 1 [urunresim] => [urundurum] => 1 [urunfiyat] => 20 [urunind] => 0 [uruntarih] => 2023-04-03 21:15:11 [count] => 1 ) ) [summary] => Array ( [total_price] => 40 [total_count] => 2 ) )
Database çağırdığım array
Array ( [products] => Array ( [1] => stdClass Object ( [ebatid] => 1 [ebatbaslik] => Masa 2 [ebatsef] => [ebatkeyw] => [ebatdesc] => [ebattarih] => 2023-02-08 19:17:13 [ebatdurum] => 1 [ebatsira] => 1 ) ) [menus] => Array ( [642c653481f70] => Array ( [0] => stdClass Object ( [urunid] => 1 [urunrandid] => [urunbaslik] => Kola [urunkeyw] => [urunsef] => [urundesc] => [urunkat] => 1 [urunresim] => [urundurum] => 1 [urunfiyat] => 20 [urunind] => [uruntarih] => 2023-04-04 20:58:12 [count] => 1 ) [1] => stdClass Object ( [urunid] => 2 [urunrandid] => [urunbaslik] => Soda [urunkeyw] => [urunsef] => [urundesc] => [urunkat] => 1 [urunresim] => [urundurum] => 1 [urunfiyat] => 20 [urunind] => [uruntarih] => 2023-04-04 20:58:12 [count] => 1 ) ) ) [summary] => Array ( [total_price] => 40 [total_count] => 2 ) )