|
Aslinda bir alis veris sepeti tasarlamak veritabanindaki urun bilgilerine gore olur. Yani ilk once urunlerle ilgili veritabanin tasarlanmasi en iyisi. Ornek bir veritabanindaki urun tablosunda neler olabilir acaba:
istediklerim:
Urun adi
fiyati
Urun detayi
Stok durumu
indirim orani
… v.s
gibi daha genis bir veritabani tablosu tasarimida istenebilir.
Tablomuzu olusturalim:
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 veritabanina kaydettikten sonra icine urunlerimizi ekleyelim:
INSERT INTO `urunler`(`urunadi`,`fiyat`,`resim`,`detay`) VALUES(”Buz dolabi”,”400″,”abcd1.jpg”,”Bu buzdolabi ile yazi rahat gecirin”); INSERT INTO `urunler`(`urunadi`,`fiyat`,`resim`,`detay`) VALUES(”Televizyon”,”200″,”abcd2.jpg”,”Bu televizyon ile rahatsiz olabilirsiniz”); INSERT INTO `urunler`(`urunadi`,`fiyat`,`resim`,`detay`) VALUES(”Kiatap”,”10″,”abcd3.jpg”,”Son yillarin en cok okunan Kitabi”); INSERT INTO `urunler`(`urunadi`,`fiyat`,`resim`,`detay`) VALUES(”incik boncuk”,”4″,”abcd4.jpg”,”Sevgilinize bir kupe alin onu mutlu edin”);
Ben stok,indirim,goster,tarih gibi degerleri girmedim. Ama siz isterseniz sorguyu kendinize gore yeniden duzenleyebilirsiniz. Simdilik bu kadari benim icin yeterli.
Sira geldi sanal magazamiza gelecek olan hasan aganin urunlerimizden birisini nasil alacagina.
Hasan aga,ahamet aga ve daha bircok degerli musterimiz rahatca ve kapkaccilardan korunsun diye onlara yuksek mertebeden bir uyelik verecegiz. Bir nevi sanal pasaport. Magaza oyle sokak ortasinda olmadindan her gelen mali elleyemiyor yani. Uyeler tablomuzu ben asagidaki gibi tasarladim ,eger eksikse siz kendinize gore daha genisini tasarlayin
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`,`sifre`,`onay`) VALUES(”Gokce”,”CIFTCI”,”gciftci”,”gciftci@gmail.com”,MD5(”1234″),”1″); Uye girisi icin PHP koldarimizi yazalim.
form.html
<FORM method=”POST” action=”giris.php” method=post> Kullanici adi: <INPUT type=text name=”kullaniciadi” value=”"> Sifre: <INPUT type=”password” name=”sifre” value=”"> <INPUT type=hidden name=”durum” value=”giris”> <INPUT type=”submit” value=”Giris Yap”> </FORM>
giris.php programimizi yazalim:
<?php session_start(); $conn = mysql_connect(”localhost”, “kullaniciadi”, “sifre”); if (!$conn) { echo “veritabanina ulasilamadi,kullaniciadi,sifre yada localhost bilgisi yanlis olabilir: ” . mysql_error(); exit; } if (!mysql_select_db(”veritabaniadi”)) { echo “Veritabani adi dogru degil, yada yok: ” . mysql_error(); exit; }
if($_POST["durum"] == “giris”){ $kullaniciadi=htmlentities(mysql_real_escape_string($_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>Kullanici adiniz yada sifreniz hatali.</b>”; }else{ if($row["onay"] == “0″){ echo “Hesabinizi aktive etmek icin Eposta adresinize gonderilen adresi tiklayarak giris yapmaniz 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>Kullanici adiniz yada sifreniz hatali.</b>”; } } }else{ header(”Location: form.html”); } mysql_close($conn); ?>
kullanicimizin bilgileri sayet dogru ise onu hesap.php programina yonlendiriyoruz. Boylece bilgilerini ve siparisini gorebilecek. hesap.php programimizi yazalim ama once program icinde kullanacagimiz sparis tablosunu olusturalim
Uye tablomuz tamam.Uye girisi icin programimizda tamam, Simdi sira geldi uyelerimizin bize verecegi sparisi kaydetmeye. Bunun icinde bir tablo olusturalim. Ben siparis adini verecegim bu tabloyu asagidaki gibi tasarladim.
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;
simdilik siparis tablomuz bos. Yukarida bir kayitli kullanicimiz var onun adina bir siparis verecegiz zaten.Ozaman siparis tablomuza nasil kayit yapildigini gorecegiz. hesap.php programimizi simdi yazabiliriz.
<?php session_start(); $conn = mysql_connect(”localhost”, “kullaniciadi”, “sifre”); if (!$conn) { echo “veritabanina ulasilamadi,kullaniciadi,sifre yada localhost bilgisi yanlis olabilir: ” . mysql_error(); exit; } if (!mysql_select_db(”veritabaniadi”)) { echo “Veritabani adi dogru degil, 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 gozden gecirin: ” . 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>Hic siparisiniz yok.</h2>”; echo “Siparis vermek icin lutfen <a href=”sepet1.php”>Siparis sayfasi</a> ni tiklayin.”; exit; } while ($row = mysql_fetch_assoc($result)) { echo $row["sparis"] . “- ” . $row["fiyat"] . “- ” . $row["adet"]. “<br>
“; } mysql_free_result($result); mysql_close($conn); ?>
Gelelim veritabanimizda bulunan urunler adli tablomuzda kayitli olan urunleri ekrana yazdirmaya. Bunun icin asagidaki kodlari yazdim. Sade ve anlasilir olmasina calistim. Ama dileyen dahada karmasik hale getirebilir
sepet1.php
<?php $conn = mysql_connect(”localhost”, “root”, “1234″); if (!$conn) { echo “veritabanina ulasilamadi,kullaniciadi,sifre yada localhost bilgisi yanlis olabilir: ” . mysql_error(); exit; } if (!mysql_select_db(”proje”)) { echo “Veritabani adi dogru degil, yada yok: ” . mysql_error(); exit; } $sql = “SELECT urunadi, fiyat, resim,detay FROM urunler”; # sorguda DESC ve ORDER BY, GROUP BY ve LIMIT kullanilabilir. Bu size kalmis birsey. $result = mysql_query($sql); if (!$result) { echo “Sorguda hata var ($sql) sorguyu gozden gecirin: ” . mysql_error(); exit; } if (mysql_num_rows($result) == 0) { echo “Kayitli hicbir bilgiye rastlanmadi.”; 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); ?>
Kodlarimizi sepet1.php olarak kaydettim ve calistirdim. Hersey yolunda. Yani istedigim gibi urunlerimi ekran fiyat bilgisi ile birlikte ekrana yazdi. Siparis icin tablomuzu okuttuk ve gereklibilgiler sayfaya yazdirildi bu tamam. Sira geldi sepet temin etmeye. Yuksek mertebedeki uyelerimize sepet vermesek ayip olur. Mallar elde tasinmaz karizmaya zarar. Sonra pisman olup birdaha magazaya gelmezler. Musteri veli nimetmizdir.
Capiyto arkadasimizin yazdigi class kullanacagim. Cunku gayet kullanisli. bu kodlarida 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 #simdi yukaridaki class ile nasil calisacagiz onu ele alalim.
$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 “veritabanina ulasilamadi,kullaniciadi,sifre yada localhost bilgisi yanlis olabilir: ” . mysql_error(); exit; }
if (!mysql_select_db(”proje”)) { echo “Veritabani adi dogru degil, 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 gozden gecirin: ” . 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 gozden gecirin: ” . mysql_error(); exit; }else{ echo “bilgileriniz ve siparisleriniz alindi,en kisa zamnda sizinle kontak kurup bilgileri dogruluyacagiz.Tesekkur 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>Urun “.$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 bos</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 bosalt”> </form></td><td><FORM method=”POST” action=”sepet1.php” method=post> <input type=hidden name=”durum” value=4> <INPUT type=”submit” value=”Gonder”> </form></td></tr>”; $sepet.=”<tr><td>Toplam Tutar:</td><td>”.$toplamtutar.”</td><td></td></tr>”; } $sepet.=$bosalt; $sepet.=”</table>”; echo $sepet; ?>
Etiketler: , Alisveris, Makale, Sitesi
Bunlar ilginizi çekermi?
« Php ile hava durumu alimiPhp ile Grafik ( GD ) »
|