SESSION VERİ GÜNCELLEME
Merhaba session ile sepet oluşturdum herhangi bir sql kaydı yok
session da olan adeti nası güncellerim
if($_POST['islem'] == 'sepet-ekle'){
if(is_numeric($_POST['urun_id']) AND is_numeric($_POST['adet']) AND is_numeric($_POST['secenek_id'])){
if($_POST['adet'] < 1){
$_POST['adet'] = 1;
}
$urunquery = $db->prepare("SELECT * FROM urun where id=:id LIMIT 1");
$urun = $urunquery->execute(array(":id"=>$_POST['urun_id']));
$urun = $urunquery->fetch(PDO::FETCH_ASSOC);
if($urun){
if($_POST['secenek_id'] > 0){
$query = $db->prepare("SELECT * FROM urun_secenek_alt where id=:id LIMIT 1");
$alt_secenek = $query->execute(array(":id"=>$_POST['secenek_id']));
$alt_secenek = $query->fetch(PDO::FETCH_ASSOC);
if($alt_secenek){
if($_POST['adet'] > $alt_secenek['stok']){
echo 0;
}else{
$uniqid = $_POST['urun_id'].'-'.$_POST['secenek_id'];
$_SESSION['sepet']['urun_id'][$uniqid] = $_POST['urun_id'];
$_SESSION['sepet']['adet'][$uniqid] = $_POST['adet'];
$_SESSION['sepet']['secenek_id'][$uniqid] = $_POST['secenek_id'];
$_SESSION['sepet']['key'][$uniqid] = $uniqid;
echo 2;
}
}else{
echo 1;
}
}else{
if($_POST['adet'] > $urun['stok']){
echo 0;
}else{
$uniqid = $_POST['urun_id'];
$_SESSION['sepet']['urun_id'][$uniqid] = $_POST['urun_id'];
$_SESSION['sepet']['adet'][$uniqid] = $_POST['adet'];
$_SESSION['sepet']['secenek_id'][$uniqid] = 0;
$_SESSION['sepet']['key'][$uniqid] = $uniqid;
echo 2;
}
}
}else{
echo 1;
}
}else{
echo 1;
}
Soru hatalı mı? 👎
Eğer sorunun kurallara aykırı olduğunu düşünüyorsanız lütfen bize bildirin!
Cevaplar (2)
bence session yerine json tercih edebilirsin dostum daha sağlıklı vü güvenli olacaktır böyle session bilgilere müdahale edilebiliniyor...
Merhaba Kodunda bulunan aşağıdaki bölümde işaretlediğim yeri değiştirmen çözüm olacaktır.
if($_POST['adet'] > $urun['stok']){
echo 0;
}else{
$uniqid = $_POST['urun_id'];
$_SESSION['sepet']['urun_id'][$uniqid] = $_POST['urun_id'];
$_SESSION['sepet']['adet'][$uniqid] = $_POST['adet'];
$_SESSION['sepet']['secenek_id'][$uniqid] = 0;
$_SESSION['sepet']['key'][$uniqid] = $uniqid;
echo 2;
}
$_SESSION['sepet']['adet'][$uniqid] = $_SESSION['sepet']['adet'][$uniqid]+$_POST['adet'];
burada session 'da tuttuğun veriyi sürekli post ettiğin veri ile güncelliyorsun dolayısı ile hep 1 olarak kalacaktır. Ancak posttan gelen veriyi üstüne eklemen gerekiyor.
burayı düzenlersen sonrasında birde eksiltme için koda ihityacın olacak.
Bir küçük dip not $_POST global değişkenlerini direk kullanmamanı tavsiye ederim.
bu şekilde bir fonksiyon tanımlarsan daha güzel olur.
php
/**
- @param $name
- @return string
*/
function post($name)
{
if (isset($_POST[$name]))
return htmlspecialchars(trim($_POST[$name]));
}