Burti adlı üyeden alıntı: mesajı görüntüle
Merhaba,

Session ile ürünleri sepete ekliyorum:
$page=$_SERVER['HTTP_REFERER'];
if (isset($_GET['add'])) {
	$_SESSION['cart_'.(int)$_GET['add']]+='1';
	header('Location: '.$page);
}
cart(); fonksiyonuyla basıyorum:
function cart() {
							echo '<tr>
			<td>Ürün Resmi</td>
			<td>Ürün</td>
			<td>Birim Fiyat</td>
			<td>Adet +/-</td>
			<td>Adet</td>
			<td>Toplam Fiyat</td>
		</tr>';
	foreach($_SESSION as $name => $value){
		if($value>0){
			if(substr($name, 0, 5)=='cart_'){

				$id =substr($name, 5, (strlen($name)-5));
				$get=mysql_query('SELECT id,product_name,product_description,product_price FROM products WHERE id='.mysql_real_escape_string((int)$id));

				while ($get_row=mysql_fetch_assoc($get)){
					$sub=$get_row['product_price']*$value;
					echo '<tr>
			<td><img src="https://design.hepsiburada.net/assets/Game/40/Game_1917944.jpg" width="100px"/></td>
			<td>'.$get_row['product_name'].'</td>
			<td>'.number_format($get_row['product_price'], 2).' TL</td>
			<td><a href="cart.php?add='.$id.'" title="Ekle"><div class="add"></div></a> <a href="cart.php?remove='.$id.'" title="Çıkar"><div class="minus"></div></a>
			<a href="cart.php?delete='.$id.'">
			</td>
			<td>'.$value.'</td>
			<td>'.number_format($sub, 2).' TL</td></tr>';
					}
			}
			$total += $sub;
		}
	}
	 
	if($total==0){
	echo "<tr><td>Sepetiniz Boş</td></tr>";
	}else{
	echo 'Toplam: '.number_format($total, 2);
	}
	
}
Sayfamada <?=cart();?> diye basıyorum. Lakin müşteri bilgilerini girip satın al'a tıklayınca nasıl bu döngüyü alıp veritabanına nasıl yazıcam bilmiyorum :/
Arkadaşım öncelikle peşin peşin söyleyim, yazdıklarımı yanlış anlama. Kötü niyetle yazmıyorum.
Bir kaç gündür görüyorum sorularını sessionla sepet yapmaya çalışıyorsun. Ancak tam olarak bilgi sahibi olmadığından gereksiz yere uğraşıp duruyorsun. Halbuki 1 saat ayırıp tam olarak session nedir ne değildir öğrenmeye çalışsan, bu kadar uğraşmayacaktın

Kimse her konuyu bilemez tabii. hele bu konularda ben her şeyi biliyorum diye kimse iddia edemez.

Şu haliyle session kullanımın tamamıyla yanlış. Sen sadece sepet bilgilerini mi sessionda tutuyorsun da tüm sessionu foreach yapıyorsun.

Bak şimdi session diye gözünde büyütme, öncekileri unut. Sessionu bir çeşit depolama yeri olarak düşün. Veritabanı gibi.

Ne lazım bize sepet değil mi. Sepette ne olacak ürün id, ürün adı, adet vs. O zaman önce yapını kuruyorsun. Normal bir array oluşturmaktan farkı yok. Adım adım bakalım:

sayfanda ürünü sepete ekleme linki bu misal:

www.site.com/sepet.php?ne=ekle&id=11
Ne yapacağız şimdi sepet.php de. Önce id var mı bakacağız daha sonra işlem ne bakacağız, ekleyeceğiz. En basit kullanımıyla:

if($_GET['ne'] == 'ekle'){//ekleme işlemi
	//ürün bilgilerini al
	$sor = mysql_query('SELECT id, product_name ,product_description, product_price FROM products WHERE id='.$id);
	$urun = mysql_fetch_assoc($sor);	
	if(!$urun['id']) die('ürün bulunamadı');//yoksa hata ver
	$adet = 1;//ürün adeti get post vs. ilede alabilirsin birden fazla olabilecekse
	//sepete ekleyelim
	$_SESSION['sepet'][$id] = $urun;
}
Ne olmuş oldu. Gelen id le sessiona bir kayıt eklemiş olduk. Şimdi sessionda duruyor istediğimiz zaman kullanabiliriz.
Örneğin sepette göstereceksen, yine basitce yazıyorum :

foreach($_SESSION['sepet'] as $key => $val){
	echo 'ürün id :'.$val['id'];
	echo 'ürün adı :'.$val['product_name'];
	echo 'ürün açıklaması :'.$val['product_description'];
	echo 'ürün fiyatı :'.$val['product_price'];
	echo 'ürün adeti :'.$val['adet'];
}
Eğer sileceksen de, yukarıda ekle de yaptığımıza benzer şekilde:
if($_GET['ne'] == 'sil'){//silme işlemi
	if($_SESSION['sepet'][$id]){
		unset($_SESSION['sepet'][$id]);
		echo 'Ürün Silindi';
	}
}
yaparak silebiliriz. Eğer adet arttıracaksan :

$_SESSION['sepet'][$id]['adet']++;
Eksilteceksen:
$_SESSION['sepet'][$id]['adet']--;
vs. basitce halledebilirsin. Yani normal dizilerle çalışmaktan bir farkı yok gördüğün gibi. Önemli olan kafanda dizi yapısını oluşturmak. Dediğim gibi bu tek boyutlu basit bir hali. İstersen multi array olarak da kullanabilirsin. Ki ilerde mecbur kullanırsın büyük ihtimal. Çünkü ürünün farklı özellikleri olur, grubu olur, kampanyası olur, kargo bilgisi olur vs. olur da olur

Siparişleri veritabanına kaydedeceğin zaman da istersen foreach ile ayırıp kaydet. İstersen serialize et kaydet. O senin veritabanı yapına bağlı.Diyelim veritabanında Ad, Soyad, Adres, Telefon, sipariş alanın var. Sepeti istersen olduğu gibi array olarak çevirip kaydedebilirsin:
$siparis = serialize($_SESSION['sepet']);
Tekrar kullanacağın zamanda
$siparis = unserialize($siparis);
diye alabilirsin. Tabii bunu anca basit işlerde kullanabilirsin. Siparişlerin falan mail ile gönderildiği durumlarda vs.

Ama profesyonel bir şey yapıyorsan bir sipariş tablosu, bir de detay tablosu tutarsın. Sipariş tablona müşteri bilgileri ve sipariş tutarını girersin. Ordan aldığın sipariş id si ile de detay tablona ürünleri tek tek kaydedersin. Yani ilişkili tablolar şeklinde.

Uzun lafın kısası, bilhassa programlama konusunda iyi bilmediğin konuda bir şeyler yapmaya uğraşmaktansa, o konuyu öğrenmek çok daha kolay ve hızlı olur