Tam Sürümünü Görmek İçin : Alışveriş Sitesi yapıcam
Arkadaşlar ilk defa bir alışveriş sitesi kodlıycam :) şu ana kadar yaptığınız yardımlar için binlerce teşekkürler sayenizde phpyi çözdüm bir çok proje yaptım ama cookilerle bir anket kontrol paneli yapma ve sayaç yapma dışında çok haşır neşir olmadım ürünü sepete atma sepeti güncelleme silmenin nasıl olabileceğini tahmin ediyorum ve sepetteki ürünü dataya aktarmanın bunun mantığını anlatabilecek kimse varmı çok acil lazım bunu öğrenmeyi çok istiyorum yardımlarınızı bekliyorum hepinize kolay gelsin
NOT:Sepeti Cookilerle oluşturmak istiyorum
cappytoi 'nin
yaptığı bir çalışma var çok güzel onu dene.
http://forum.ceviz.net/showpost.php?p=187787&postcount=62
teşekkürler perlci bakıyorum arkadaşlar örnek türkçe çalışma varmı kimsenin elinde yada bunu döküman haline getirirsek herkesin işine yarar
Benim bir çalışmam vardı ama onu bulamadım. Bilgisayardaki binlerce dosya içinde bulabilirsem buraya koyacağım.
dört gözle bekliyorum perlci diğer arkadaşlar arasındada sanırım yapanlar var bir fikir verebilecek varmı bu sorun bir çok kişide var inşallah ben hallettikten sonra küçük bir döküman halinde anlatmayı düşünüyorum çok önemli bir bilgi
Meteryus
24/05/2006, 00:08
bence sepet için veritabanı kullan.
-Bu kullanıcının herhangi bir yerden yada herhangi bir zamanda sepetine ulaşmasını kolaylaştırır.
-Veritabanında tutulmayan sepetler kullanıcının isteği dışında silinebilir, çerezlerin temizlenmesi vs.
- Sepetteki ürünleri daha kolay kontrol etmenizi sağlar. (Bir kullanıcı ürünü sepete ekleyim şu anki alışverişinde almak istemeyebilir)
- Kullanıcıların sepetlerinde hangi ürünleri beklettikleri gibi istetistikler oluşturabilirsiniz.
Bunun için veritabanını kullanmak istemiyorum cookiler daha hızlı olur hemde ben bu mantığı öğrenmek istiyorum açıklayıcı yardımlarınıza ihtiyacım var arkadaşlar
Bak senin için bir örnek yaptım. ekte
harikasın sen perlci anladım peki burdaki toplam fiyatı nasıl gösterebilirm
ve bu ürünlerin hepsi yapıldı sipariş edilecek veritabanına nasıl kaydedebilirim bunlarıda söylerseniz tamamdır işi sayenizde öğrenicem çok teşekkürler arkadaşlar
Arkadaşlar Konu eriyip gitmesin bu konu cidden önemli tam anlamıyla bir türkçe örnek varmı elinizde acaba
fegabj
yaptığım örnek senin işini görecek bir örnektir. Onu sen geliştireceksin. Yoksa hazır bir uygulamada yine takkılırsın. Ama en iyisi kurcala değiştir fikir yürüt ve bu işi öğren.
Takıldığın yerlerde sor yardımcı olalım.
Kod vererek şurasını nasıl yaparım şeklinde soru sorarasan başka arkdaşlarda yardımcı olacaktır.
tamam perlci peki bu verdiğin örnekte ben toplu tüm ürünlerin fiyatını öğrenmek istersem nasıl yapabilirim ve bunların dataya kaydı nasıl yapılır acaba
evet sepeti komple boşaltmayı buldum anlamaya başladım fakat şimdi takıldığım nokta sepete atılan tüm ürünlerin fiyatlarını toplamak ve sipariş verirken bunları vtye kaydettirmek bu konuda yardımcı olursanız geliştirip kodları yayınlıycam
Yarin bu konuda sana ip ucu yazarım. ama dediğim gibi kodları incele çünkü burda amacım şu sana tutulmuş balığı vermek değil,balık tutmayı öğretmek. ;)
Bunu yapabilirsen başklarında balık tutmayı öğretebilirsin. Yani forumda sende aktif bir yardımcı olabilirsin
inceliyorum perlci tabiki yardımcı olmaya çalışıcam herkese yarını iple çekiyorum merakla bekliycem ipuclarını teşekkürler
Evet sana söz verdiğim gibi kodları yazdım. Bunları kullan test et eğer herşey yolunda giderse makale olarak foruma koyacağım.
abi neyi inceleyim kod yokkki göremedim
Aslında bir alış veriş sepeti tasarlamak veritabanındaki ürün bilgilerine göre olur. Yani ilk önce ürünlerle ilgili veritabanın tasarlanması en iyisi.
Örnek bir veritabanındaki ürün tablosunda neler olabilir acaba:
istediklerim:
Ürün adı
fiyatı
Ürün detayı
Stok durumu
indirim oranı
...
v.s
gibi daha geniş bir veritabanı tablosu tasarımıda istenebilir.
Tablomuzu oluşturalım:
CREATE TABLE `urunler` (
`id` int(11) NOT NULL auto_increment,
`urunadi` varchar(250) NOT NULL default '',
`fiyat` int(11) NOT NULL default '0',
`resim` varchar(200) default '',
`detay` text NOT NULL,
`stok` int(11) default '0',
`indirim` int(4) default '0',
`goster` char(1) default '1',
`tarih` datetime default '0000-00-00 00:00:00',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin5;
Tabloyu veritabanına kaydettikten sonra içine ürünlerimizi ekleyelim:
INSERT INTO `urunler`(`urunadi`,`fiyat`,`resim`,`detay`) VALUES('Buz dolabı','400','abcd1.jpg','Bu buzdolabı ile yazı rahat geçirin');
INSERT INTO `urunler`(`urunadi`,`fiyat`,`resim`,`detay`) VALUES('Televizyon','200','abcd2.jpg','Bu televizyon ile rahatsız olabilirsiniz');
INSERT INTO `urunler`(`urunadi`,`fiyat`,`resim`,`detay`) VALUES('Kiatap','10','abcd3.jpg','Son yılların en çok okunan Kitabı');
INSERT INTO `urunler`(`urunadi`,`fiyat`,`resim`,`detay`) VALUES('incik boncuk','4','abcd4.jpg','Sevgilinize bir küpe alın onu mutlu edin');
Ben stok,indirim,goster,tarih gibi değerleri girmedim. Ama siz isterseniz sorguyu kendinize göre yeniden düzenleyebilirsiniz. Şimdilik bu kadarı benim için yeterli.
Sıra geldi sanal mağazamıza gelecek olan hasan ağanın ürünlerimizden birisini nasıl alacağına.
Hasan ağa,ahamet ağa ve daha birçok değerli müşterimiz rahatça ve kapkaççılardan korunsun diye onlara yüksek mertebeden bir üyelik vereceğiz. Bir nevi sanal pasaport.
Mağaza öyle sokak ortasında olmadından her gelen malı elleyemiyor yani.
Üyeler tablomuzu ben aşağıdaki gibi tasarladım ,eğer eksikse siz kendinize göre daha genişini tasarlayın ;)
CREATE TABLE `uyeler` (
`id` int(11) NOT NULL auto_increment,
`ad` varchar(30) NOT NULL default '',
`soyad` varchar(30) NOT NULL default '',
`kullaniciadi` varchar(30) NOT NULL default '',
`Email` varchar(60) NOT NULL default '',
`sifre` varchar(32) NOT NULL default '',
`sesid` varchar(70) NOT NULL default '',
`onay` varchar(30) default '0',
`il` varchar(100) NOT NULL default '',
`ilce` varchar(100) NOT NULL default '',
`semt` varchar(100) NOT NULL default '',
`mahalle` varchar(100) NOT NULL default '',
`adres` varchar(100) NOT NULL default '',
`ceptel` varchar(100) NOT NULL default '',
`tarih` date NOT NULL default '0000-00-00',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin5;
INSERT INTO `uyeler`(`ad`,`soyad`,`kullaniciadi`,`Email`,`sifr e`,`onay`) VALUES('Gökçe','ÇİFTÇİ','gciftci','gciftci@gmail.c om',MD5('1234'),'1');
Üye girişi için PHP koldarımızı yazalım.
form.html
<FORM method="POST" action="giris.php" method=post>
Kullanıcı adı: <INPUT type=text name="kullaniciadi" value="">
Şifre: <INPUT type="password" name="sifre" value="">
<INPUT type=hidden name="durum" value="giris">
<INPUT type="submit" value="Giriş Yap">
</FORM>
giris.php programımızı yazalım:
<?php
session_start();
$conn = mysql_connect("localhost", "kullanıcıadı", "şifre");
if (!$conn) {
echo "veritabanına ulaşılamadı,kullanıcıadı,şifre yada localhost bilgisi yanlış olabilir: " . mysql_error();
exit;
}
if (!mysql_select_db("veritabanıadı")) {
echo "Veritabanı adı doğru değil, yada yok: " . mysql_error();
exit;
}
if($_POST['durum'] == 'giris'){
$kullaniciadi=htmlentities(mysql_real_escape_strin g($_POST['kullaniciadi']));
$result = mysql_query("SELECT kullaniciadi,sifre FROM uyeler WHERE kullaniciadi='{$kullaniciadi}'") or die(mysql_error());
$row = mysql_fetch_array($result);
if($row['kullaniciadi'] == ""){
echo "<b>Kullanıcı adınız yada şifreniz hatalı.</b>";
}else{
if($row['onay'] == "0"){
echo "Hesabınızı aktive etmek için Eposta adresinize gönderilen adresi tıklayarak giriş yapmanız gerekir"; exit;
}
$sifre = $_POST['sifre'];
if($row['sifre'] == md5($sifre)){
$_SESSION['kullaniciadi'] = $_POST['kullaniciadi'];
$_SESSION['uye'] = 'uyemiz';
header("Location: hesap.php");
exit;
}
else{
echo "<b>Kullanıcı adınız yada şifreniz hatalı.</b>";
}
}
}else{
header("Location: form.html");
}
mysql_close($conn);
?>
kullanıcımızın bilgileri şayet doğru ise onu hesap.php programına yönlendiriyoruz. Böylece bilgilerini ve siparişini görebilecek.
hesap.php programımızı yazalım ama önce program içinde kullanacağımız sparis tablosunu oluşturalım
Üye tablomuz tamam.Üye girişi için programımızda tamam, Şimdi sıra geldi üyelerimizin bize vereceği sparişi kaydetmeye. Bunun içinde bir tablo oluşturalım. Ben siparis adını vereceğim bu tabloyu aşağıdaki gibi tasarladım.
CREATE TABLE `sparis` (
`id` int(11) NOT NULL auto_increment,
`uyeid` int(11) NOT NULL default '0',
`sparis` varchar(100) NOT NULL default '',
`fiyat` varchar(32) NOT NULL default '',
`adet` int(10) default '1',
`durumu` int(1) default '',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin5;
şimdilik sipariş tablomuz boş. Yukarıda bir kayıtlı kullanıcımız var onun adına bir sipariş vereceğiz zaten.Ozaman sipariş tablomuza nasıl kayıt yapıldığını göreceğiz.
hesap.php programımızı şimdi yazabiliriz.
<?php
session_start();
$conn = mysql_connect("localhost", "kullanıcıadı", "şifre");
if (!$conn) {
echo "veritabanına ulaşılamadı,kullanıcıadı,şifre yada localhost bilgisi yanlış olabilir: " . mysql_error();
exit;
}
if (!mysql_select_db("veritabanıadı")) {
echo "Veritabanı adı doğru değil, yada yok: " . mysql_error();
exit;
}
if($_SESSION['kullaniciadi'] == '' || $_SESSION['uye'] == ''){
header("Location: giris.php");
exit;
}
$kullaniciadi=$_SESSION['kullaniciadi'];
$result1 = mysql_query("SELECT * FROM uyeler WHERE kullaniciadi='{$kullaniciadi}'");
if (!$result1) {
echo "Sorguda hata var ($sql) sorguyu gözden geçirin: " . mysql_error();
exit;
}
$row1 = mysql_fetch_assoc($result1);
$uyeid=$row1['id'];
$result = mysql_query("SELECT * FROM sparis WHERE uyeid='{$uyeid}'");
if (mysql_num_rows($result) == 0) {
echo "<h2>Hiç siparişiniz yok.</h2>";
echo "Sipariş vermek için lütfen <a href='sepet1.php'>Sipariş sayfası</a> nı tıklayın.";
exit;
}
while ($row = mysql_fetch_assoc($result)) {
echo $row['sparis'] . "- " . $row['fiyat'] . "- " . $row['adet']. "<br>\n";
}
mysql_free_result($result);
mysql_close($conn);
?>
Gelelim veritabanımızda bulunan urunler adlı tablomuzda kayıtlı olan ürünleri ekrana yazdırmaya. Bunun için aşağıdaki kodları yazdım. Sade ve anlaşılır olmasına çalıştım. Ama dileyen dahada karmaşık hale getirebilir ;)
sepet1.php
<?php
$conn = mysql_connect("localhost", "kullanıcıadı", "şifre");
if (!$conn) {
echo "veritabanına ulaşılamadı,kullanıcıadı,şifre yada localhost bilgisi yanlış olabilir: " . mysql_error();
exit;
}
if (!mysql_select_db("veritabanıadı")) {
echo "Veritabanı adı doğru değil, yada yok: " . mysql_error();
exit;
}
$sql = "SELECT urunadi, fiyat, resim FROM urunler"; # sorguda DESC ve ORDER BY, GROUP BY ve LIMIT kullanılabilir. Bu size kalmış birşey.
$result = mysql_query($sql);
if (!$result) {
echo "Sorguda hata var ($sql) sorguyu gözden geçirin: " . mysql_error();
exit;
}
if (mysql_num_rows($result) == 0) {
echo "Kayıtlı hiçbir bilgiye rastlanmadı.";
exit;
}
$urunbilgisi='';
while ($row = mysql_fetch_assoc($result)) {
echo '<tr><TD valign="top" width="324" height="48">
<img src="'.$row["resim"].'" border=0><br>'.$row["urunadi"].' '.$row["fiyat"].'</TD>
<TD valign="top" width="198" height="48">
<FORM method="POST" action="sepet2.php" method=post>
<INPUT type=hidden name="durum" value=1>
<INPUT type="hidden" name="urun" value="'.$row["urunadi"].'">
<INPUT type="hidden" name="fiyat" value="'.$row["fiyat"].'">
<INPUT type="text" name="adet" size="9" value="1">
<INPUT type="submit" value="Sepete Ekle">
</FORM>
</TD></tr>';
}
mysql_free_result($result);
mysql_close($conn);
?>
Kodlarımızı sepet1.php olarak kaydettim ve çalıştırdım. Herşey yolunda. Yani istediğim gibi ürünlerimi ekran fiyat bilgisi ile birlikte ekrana yazdı.
Sipariş için tablomuzu okuttuk ve gereklibilgiler sayfaya yazdırıldı bu tamam. Sıra geldi sepet temin etmeye. Yüksek mertebedeki üyelerimize sepet vermesek ayıp olur. Mallar elde taşınmaz karizmaya zarar. Sonra pişman olup birdaha mağazaya gelmezler. Müşteri veli nimetmizdir.
Capiyto arkadaşımızın yazdığı class kullanacağım. Çünkü gayet kullanışlı.
bu kodlarıda sepet2.php olarak kaydedelim.
<?
session_start();
class sepet {
var $sepetteki_urunler;
function sepet () {
if (isset($_SESSION["sepetteki_urunler"])) {
$this->sepetteki_urunler = $_SESSION["sepetteki_urunler"];
}
}
function sepete_ekle ($urun_no,$adet) {
$this->sepetteki_urunler[$urun_no] = $adet;
}
function sepetten_cikar ($urun_no,$adet) {
if (isset($this->sepetteki_urunler[$urun_no])) {
if ($this->sepetteki_urunler[$urun_no] > $adet) {
$this->sepetteki_urunler[$urun_no] = $adet;
} else {
unset($this->sepetteki_urunler[$urun_no]);
}
}
}
function sepeti_kaydet () {
if (isset($this->sepetteki_urunler)) $_SESSION["sepetteki_urunler"] = $this->sepetteki_urunler;
}
function sepeti_listele () {
if (isset($_SESSION["sepetteki_urunler"])) {
return $_SESSION["sepetteki_urunler"];
} else {
return false;
}
}
function oturum_kapat () {
#session_destroy();
$_SESSION["sepetteki_urunler"]='';
header("Location: sepet2.php");
}
}
?>
<?php
#şimdi yukarıdaki class ile nasıl çalışacağız onu ele alalım.
$yeni_sepet = new sepet;
if ($_POST["durum"]==1) {
$yeni_sepet->sepete_ekle($_POST["urun"],$_POST["adet"]."-".$_POST["fiyat"]);
$yeni_sepet->sepeti_kaydet();
}
if ($_POST["durum"]==2) {
$yeni_sepet->sepetten_cikar($_POST["urun"],$_POST["adet"]);
$yeni_sepet->sepeti_kaydet();
}
if ($_POST["durum"]==3) {
$yeni_sepet->oturum_kapat();
}
if ($_POST["durum"]==4) {
$conn = mysql_connect("localhost", "root", "1234");
if (!$conn) {
echo "veritabanına ulaşılamadı,kullanıcıadı,şifre yada localhost bilgisi yanlış olabilir: " . mysql_error();
exit;
}
if (!mysql_select_db("proje")) {
echo "Veritabanı adı doğru değil, yada yok: " . mysql_error();
exit;
}
if($_SESSION['kullaniciadi'] == '' || $_SESSION['uye'] == ''){
header("Location: giris.php");
exit;
}
$kullaniciadi=$_SESSION['kullaniciadi'];
$result1 = mysql_query("SELECT * FROM uyeler WHERE kullaniciadi='{$kullaniciadi}'");
if (!$result1) {
echo "Sorguda hata var ($sql) sorguyu gözden geçirin: " . mysql_error();
exit;
}
$row1 = mysql_fetch_assoc($result1);
$uyeid=$row1['id'];
$urunler = $yeni_sepet->sepeti_listele();
while (list($anahtar,$deger) = each($urunler)) {
$tutar=explode("-", $deger);
$result= mysql_query("INSERT INTO `sparis`(`uyeid`,`sparis`,`fiyat`,`adet`) VALUES('{$uyeid}','{$anahtar}','{$tutar[1]}','{$tutar[0]}')") or die(mysql_error());
}
if (!$result1) {
echo "Sorguda hata var ($sql) sorguyu gözden geçirin: " . mysql_error();
exit;
}else{
echo "bilgileriniz ve siparişleriniz alındı,en kısa zamnda sizinle kontak kurup bilgileri doğruluyacağız.Teşekkür ederiz.";
exit;
}
}
$urunler = $yeni_sepet->sepeti_listele();
$durum=0;
$sepet='<table border=1>';
$toplamtutar=0;
if($urunler){
while (list($anahtar,$deger) = each($urunler)) {
$tutar=explode("-", $deger);
$toplam=$tutar[0]*$tutar[1];
$sepet.= "<tr><td>Ürün ".$anahtar."</td><td>".$toplam." YTL ".$tutar[0].' adet </td>
<td> <FORM method="POST" action="sepet2.php" method=post>
<INPUT type="hidden" name="urun" value="'.$anahtar.'">
<INPUT type="hidden" name="adet" size="9" value="'.$deger.'">
<input type=hidden name="durum" value=2>
<INPUT type="submit" value="Sepeten Sil">
</form></td></tr>';
$durum=1;
$toplamtutar +=$toplam;
}
}else{
echo "<h2>sepetiniz boş</h2>";
echo "Sipariş vermek için lütfen <a href='sepet1.php'>Sipariş sayfası</a> nı tıklayın.";
exit;
}
if($durum){
$bosalt= '<tr><td> </td><td><FORM method="POST" action="sepet2.php" method=post>
<input type=hidden name="durum" value=3>
<INPUT type="submit" value="Sepeti boşalt">
</form></td><td><FORM method="POST" action="sepet2.php" method=post>
<input type=hidden name="durum" value=4>
<INPUT type="submit" value="Gönder">
</form></td></tr>';
}
$sepet.='<tr><td>Toplam Tutar:</td><td>'.$toplamtutar.'</td><td></td></tr>';
$sepet.=$bosalt;
$sepet.="</table>";
echo $sepet;
?>
Not: Kodları yazdım ama deneyemedim çünkü zamanım olmadı. Denedikten sonra aksaklıklar varsa gideririz. Sonrada foruma koyup herkesin yararlanmasını sağlarız.
Herkesten katgı bekliyorum:)
deniycem perlci çok teşekkür ederim eksiğini bulursam bir şekilde gidermeye çalışırım ve sonra yayınlanır tekrar teşekkür ederim
Yazdığım kodları test ettim ve bazı hataları düzelttikten sonra tekrar yukarıda yerlerine yazdım. Hepsi çalışır durumda. Eğer hata varsa yukarıdaki kodlarla tekrar deneyin.
sepet2.php programında verilen sipariş üyeye ait siparis tablosuna kaydediliyor. Burası tamam, birde site yetkilisine bildirilmesi gerekir,yani esas siparişi alması gereken yer.
Bunun için ek bir tablonun daha oluşturulması gerekir.
Vaktim oldukça onuda yazmaya çalışacağım.
Ayrıca eposta ile bildirim için iki satırlık eposta gönderme işi ek olarak siparis2.php eklenmesi gerekir. Üyenin yaptığı alış verişi üyeye hatırlatmak yada alındığına dair.
Yapılması gereken diğer bir ek de üye kaydı ile ilgili. Omuda yapmaya çalışacağım.
Şimdilik kolay gelsin.
Sepet1.php ve sepet2.php daha rahat kullanmak için bazı değişiklikler yaptım. dileyen bu değişikliklerle de kullanabilir.
sepet1.php
<?php
$conn = mysql_connect("localhost", "root", "1234");
if (!$conn) {
echo "veritabanına ulaşılamadı,kullanıcıadı,şifre yada localhost bilgisi yanlış olabilir: " . mysql_error();
exit;
}
if (!mysql_select_db("proje")) {
echo "Veritabanı adı doğru değil, yada yok: " . mysql_error();
exit;
}
$sql = "SELECT urunadi, fiyat, resim,detay FROM urunler"; # sorguda DESC ve ORDER BY, GROUP BY ve LIMIT kullanılabilir. Bu size kalmış birşey.
$result = mysql_query($sql);
if (!$result) {
echo "Sorguda hata var ($sql) sorguyu gözden geçirin: " . mysql_error();
exit;
}
if (mysql_num_rows($result) == 0) {
echo "Kayıtlı hiçbir bilgiye rastlanmadı.";
exit;
}
include("sepet2.php");
echo "<table>";
while ($row = mysql_fetch_assoc($result)) {
echo '<tr><TD>
<img src="'.$row["resim"].'" border=0><br>'.$row["urunadi"].' <br>'.$row["detay"].'<br>'.$row["fiyat"].'</TD>
<TD>
<FORM method="POST" action="sepet1.php" method=post>
<INPUT type=hidden name="durum" value=1>
<INPUT type="hidden" name="urun" value="'.$row["urunadi"].'">
<INPUT type="hidden" name="fiyat" value="'.$row["fiyat"].'">
<INPUT type="text" name="adet" size="3" value="1">
<INPUT type="submit" value="Sepete Ekle">
</FORM>
</TD></tr>';
}
echo "</table>";
mysql_free_result($result);
mysql_close($conn);
?>
sepet2.php
<?
session_start();
class sepet {
var $sepetteki_urunler;
function sepet () {
if (isset($_SESSION["sepetteki_urunler"])) {
$this->sepetteki_urunler = $_SESSION["sepetteki_urunler"];
}
}
function sepete_ekle ($urun_no,$adet) {
$this->sepetteki_urunler[$urun_no] = $adet;
}
function sepetten_cikar ($urun_no,$adet) {
if (isset($this->sepetteki_urunler[$urun_no])) {
if ($this->sepetteki_urunler[$urun_no] > $adet) {
$this->sepetteki_urunler[$urun_no] = $adet;
} else {
unset($this->sepetteki_urunler[$urun_no]);
}
}
}
function sepeti_kaydet () {
if (isset($this->sepetteki_urunler)) $_SESSION["sepetteki_urunler"] = $this->sepetteki_urunler;
}
function sepeti_listele () {
if (isset($_SESSION["sepetteki_urunler"])) {
return $_SESSION["sepetteki_urunler"];
} else {
return false;
}
}
function oturum_kapat () {
#session_destroy();
$_SESSION["sepetteki_urunler"]='';
header("Location: sepet2.php");
}
}
?>
<?php
#şimdi yukarıdaki class ile nasıl çalışacağız onu ele alalım.
$yeni_sepet = new sepet;
if ($_POST["durum"]==1) {
$yeni_sepet->sepete_ekle($_POST["urun"],$_POST["adet"]."-".$_POST["fiyat"]);
$yeni_sepet->sepeti_kaydet();
}
if ($_POST["durum"]==2) {
$yeni_sepet->sepetten_cikar($_POST["urun"],$_POST["adet"]);
$yeni_sepet->sepeti_kaydet();
}
if ($_POST["durum"]==3) {
$yeni_sepet->oturum_kapat();
}
if ($_POST["durum"]==4) {
$conn = mysql_connect("localhost", "root", "1234");
if (!$conn) {
echo "veritabanına ulaşılamadı,kullanıcıadı,şifre yada localhost bilgisi yanlış olabilir: " . mysql_error();
exit;
}
if (!mysql_select_db("proje")) {
echo "Veritabanı adı doğru değil, yada yok: " . mysql_error();
exit;
}
if($_SESSION['kullaniciadi'] == '' || $_SESSION['uye'] == ''){
header("Location: giris.php");
exit;
}
$kullaniciadi=$_SESSION['kullaniciadi'];
$result1 = mysql_query("SELECT * FROM uyeler WHERE kullaniciadi='{$kullaniciadi}'");
if (!$result1) {
echo "Sorguda hata var ($sql) sorguyu gözden geçirin: " . mysql_error();
exit;
}
$row1 = mysql_fetch_assoc($result1);
$uyeid=$row1['id'];
$urunler = $yeni_sepet->sepeti_listele();
while (list($anahtar,$deger) = each($urunler)) {
$tutar=explode("-", $deger);
$result= mysql_query("INSERT INTO `sparis`(`uyeid`,`sparis`,`fiyat`,`adet`) VALUES('{$uyeid}','{$anahtar}','{$tutar[1]}','{$tutar[0]}')") or die(mysql_error());
}
if (!$result) {
echo "Sorguda hata var ($sql) sorguyu gözden geçirin: " . mysql_error();
exit;
}else{
echo "bilgileriniz ve siparişleriniz alındı,en kısa zamnda sizinle kontak kurup bilgileri doğruluyacağız.Teşekkür ederiz.";
exit;
}
}
$urunler = $yeni_sepet->sepeti_listele();
$durum=0;
$sepet='<table border=1>';
$toplamtutar=0;
if($urunler){
while (list($anahtar,$deger) = each($urunler)) {
$tutar=explode("-", $deger);
$toplam=$tutar[0]*$tutar[1];
$sepet.= "<tr><td>Ürün ".$anahtar."</td><td>".$toplam." YTL ".$tutar[0].' adet </td>
<td> <FORM method="POST" action="sepet1.php" method=post>
<INPUT type="hidden" name="urun" value="'.$anahtar.'">
<INPUT type="hidden" name="adet" size="9" value="'.$deger.'">
<input type=hidden name="durum" value=2>
<INPUT type="submit" value="Sepeten Sil">
</form></td></tr>';
$durum=1;
$toplamtutar +=$toplam;
}
}else{
echo "<h2>sepetiniz boş</h2>";
}
if($durum){
$bosalt= '<tr><td> </td><td><FORM method="POST" action="sepet1.php" method=post>
<input type=hidden name="durum" value=3>
<INPUT type="submit" value="Sepeti boşalt">
</form></td><td><FORM method="POST" action="sepet1.php" method=post>
<input type=hidden name="durum" value=4>
<INPUT type="submit" value="Gönder">
</form></td></tr>';
$sepet.='<tr><td>Toplam Tutar:</td><td>'.$toplamtutar.'</td><td></td></tr>';
}
$sepet.=$bosalt;
$sepet.="</table>";
echo $sepet;
?>
Düzenlenmiş halini zipledim. Deneyin eksikler varsa tekrar elden geçiririz.
Veritabanı hesap bilgilerin aslında tek dosyada olması gerekir. Ben kodların dahada karmaşık bir hal almaması için hiç değiştirmedim. Yeni öğrenenler neyi nerede niçin kullanıldığını bilsin istedim ama eğer istenirse tek dosyada tutularak include ile programların gerekli yerlerine eklenebilir.
sqli hata veriyor perlci
#1064 - You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'DEFAULT CHARSET=latin5' at line 12
Gonder butonuna basınca hata veriyor birde ob_start(); kullanılmadığından sepeti boşalttığında hata veriliyordu onu düzelttim fakat göndere basınca hata veriyor perlci
giris.phpnin Fatal error: Call to undefined function: mysql_real_escape_string() in c:\apache\htdocs\proje\giris.php on line 19 bu satırda hata veriyor
tamam hata benden kaynaklanıyomuş perlci düzellttim eline sağlık çok güzel bir çalışma olmuş
sipariş alındıktan sonra session dosyalarına ihtiyacımız olmayacağına göre session_destroy koyup sildirmemiz gerekmezmi :garip:
session_destroy() bütün atanmış sesionları siler. Buna üyeye atadığımız sessionda dahildir. Halbuki üye sepeti boşalttı ama alaış verişe devam etmek isteyebilir. session silinirse üye direk girişe yönlendirilecektir. Buda anlamsız olur.
Bu nedenle session_destroy() kullanmamalısın.
Onun yerine ilgili sessionu $_SESSION["sepetteki_urunler"]=''; demen yeterli. Bu ürünlere ait bütün sessionları tanımsız yapar. unset gibi.
Soulflyc
30/03/2007, 10:30
Merhaba Perlci sepet sistemini kurdum harika her hangi bi sorun yok ..
Ama bişeyi unutmuşsun galiba kur bölümü sitemde usd ve eur olan ürünler var..
bunları sepeti eklediğim zamanda ytl görüyr yardımcı olursan sevinirim
sizin php bilginiz yokmu? YTL yerine USD yada EUR yazmanız yeterli. Bunuda sepet.php dosyasında ilgil satırı bulup yazacaksınız hepsi bu.
Soulflyc
30/03/2007, 12:45
php bilgim pek fazla yok ben ürünün kur bilgisini mysql okuyup göstermesini istiyorum ..
İnanın işimden olucam :(
Sizi anlıyorum, benim yaptığım çok basit bir örnek ve fikir vermesi için yada yol göstermek için yazmıştım. Bu fikir yada yol üzerinden PHP programcıları isterlerse bunu geliştirebilirler. Benim rolüm orda sona erdi.
Sizin istediğiniz ise (Mysql desteği olan birden fazla kur işi) zaman alacak bir uygulama. Benim şuan buna ayıracak zamanım yok.
Ama bir yardım sever çıkarda yol gösterirse olabilir. Bunun için bekleyin derim.
Ben yapamam diyorsanız, daha basit hazır alış veriş için yazılmış programları internetten bulabilirsiniz.
Kur için bir tablo oluşturun,örneğin tablonun adı "kur" olsun.
id -> int otomatik artan alan
kuradi -> VARCHAR
kurdegeri ->Float
gibi alanları yaratıp kaydedin. Bu tabloyu okuyacak birde SQL ve php mysql kodu yazın ve sepette ilgili yere radio button vb gibi bir HTML form ile yerleştirin.
Soulflyc
30/03/2007, 13:13
Yinede sağol çok teşekkür ederim inşallah hallederim yoksa sonum kötü :aglama:
ugurturan
30/08/2007, 11:55
Arkadaşlar emeginiz için Allah razı olsun. Dünyanın en güzel şeyi birşeyi paylaşmaktır. Dualarım sizlerle inş. Perlci kardeşim scriptin bende sorunsuz çalışıyor. İnan çok işime yaradı. Paylaşmayı düşünmeyen insanlar bencildirler. Umarım onlarda sonunda hidayet bulurlar. Haksızmıyım? Özellikle Microsoft!
Forum Yazılımı : vBulletin v3.7.3, Copyright ©2000-2008, Jelsoft Enterprises Ltd.