• 02-08-2013, 22:14:45
    #1
    Reveloper
    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 :/
  • 03-08-2013, 01:14:42
    #2
    şimdi müşteri satın al'a tıklayınca veritabanına neyi kaydedeceksin? eğer müşteri bilgilerini kaydedeceksen standart post işlemi.. bununla beraber sipariş kaydedeceksen, zaten session içinde ürün numaralarını tutmuşsun, fonksiyonun içinde de döngüyle id'ye göre ürünü çağırtıp listeletmişsin. aynı işlemi tekrar yapıp, veritabanı yapına göre post edilince ya sadece session'daki id'leri ya da id'ye göre veritabanından çektiğin bilgileri ilgili alanlara ekleyeceksin. zor kısmı geçmişsin yani eğer kod sana aitse.
  • 03-08-2013, 02:19:21
    #3
    Reveloper
    zinan adlı üyeden alıntı: mesajı görüntüle
    şimdi müşteri satın al'a tıklayınca veritabanına neyi kaydedeceksin? eğer müşteri bilgilerini kaydedeceksen standart post işlemi.. bununla beraber sipariş kaydedeceksen, zaten session içinde ürün numaralarını tutmuşsun, fonksiyonun içinde de döngüyle id'ye göre ürünü çağırtıp listeletmişsin. aynı işlemi tekrar yapıp, veritabanı yapına göre post edilince ya sadece session'daki id'leri ya da id'ye göre veritabanından çektiğin bilgileri ilgili alanlara ekleyeceksin. zor kısmı geçmişsin yani eğer kod sana aitse.
    Kod'un yarısı bana ait Session'dan pek anlamıyorum sadece onun için bi kardeş var forumda o ders video'su attı onu izledim az bişey anlayıp yaptım.

    Şimdi kardeşim eyvallah yardımın için benim çözmem gereken durum şu:

    Sadece 1 tane ürün olmuyo session ile 2-3 ürün oluyo o zaman nası kaydedicem onu düşünüyorum veya 1 üründen 2 tane oluyo :S foreach mı kullanmam lazım bu durumda?

    Alınacak bilgiler kısıtlı zaten:
    Ad, Soyad, Adres, Telefon, POST verisi bu

    Siparişler:
    Ürün A, Ürün B, Ürün A, Ürün C
  • 03-08-2013, 04:59:19
    #4
    Kimlik doğrulama veya yönetimden onay bekliyor.
    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
  • 03-08-2013, 05:04:01
    #5
    Reveloper
    acayip adlı üyeden alıntı: mesajı görüntüle
    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
    Eline koluna sağlık hocam uğraşmışsın bu kadar Bilmemek değil öğrenmemek ayıp bayağı baktım sağa sola ama yeri geliyo çok zor şeyleri yapıyorum yeri geliyo en basit şeyleri yapamıyorum. Açıkçası çekirdek çok geniş olduğu için daha tam manasıyla kavrayamadım dili. Şu an seviye olarak Editcoder diyebilirim kendime sadece. framework öğreniyorum yavaş yavaş codeigniter'ın derslerine bakıyorum daha güzelmiş bu kadar uğraşmama gerek bile kalmıyomuş performans sıkıntısıymış, cache sıkıntısıymış, açık sıkıntısıymış kasmama gerek yokmuş

    tekrar çok saol başkasınında işine yarar umarım Blog'unda PHP ile Sepet Yapımı diye paylaşırsan herkese yarar hocam veya iznin varsa alıntı yazıp konu linkini vererek ben paylaşayım
  • 03-08-2013, 05:20:53
    #6
    Burti adlı üyeden alıntı: mesajı görüntüle
    Eline koluna sağlık hocam uğraşmışsın bu kadar Bilmemek değil öğrenmemek ayıp bayağı baktım sağa sola ama yeri geliyo çok zor şeyleri yapıyorum yeri geliyo en basit şeyleri yapamıyorum. Açıkçası çekirdek çok geniş olduğu için daha tam manasıyla kavrayamadım dili. Şu an seviye olarak Editcoder diyebilirim kendime sadece. framework öğreniyorum yavaş yavaş codeigniter'ın derslerine bakıyorum daha güzelmiş bu kadar uğraşmama gerek bile kalmıyomuş performans sıkıntısıymış, cache sıkıntısıymış, açık sıkıntısıymış kasmama gerek yokmuş

    tekrar çok saol başkasınında işine yarar umarım Blog'unda PHP ile Sepet Yapımı diye paylaşırsan herkese yarar hocam veya iznin varsa alıntı yazıp konu linkini vererek ben paylaşayım
    Estağfurullah arkadaşım, yardımcı olabildiysem ne mutlu.

    İşten güçten blok yazmaya vakit mi kalıyor. İstiyorum ama hep erteliyorum mecburen. İstediğin gibi paylaşabilirsin.

    Framework öğren tabii ama, her zaman dilin salt halinin daha performanslı olacağını da aklından çıkarma.
    Yerinde olsam fırsat buldukça günde yarım saat bile olsa php.net de gezinir, temel yapısı hakkında ki bilgimi geliştirmeye çalışırdım.

    Yeni bir fonksiyon bile öğrensen ufkun genişler. Ki bizim memlekette zaten php nin kendi var olan fonksiyonunun benzerini yapmak için bi sayfa kod yazanlar var. Çünkü haberi yok öyle bir fonksiyondan. Merak edip bakmamış hiç. Misal php de string işlevleri neler, date fonksiyonları neler, ne gibi matematik fonksiyonları var vs. vs. Anca explode ile bot yapmayı biliyorlar. Başka bişey yok.

    Halbuki ne kadar güzel ve zevkli bir dil PHP. Değerini bilmek lazım