5-DİZİLER VE FOREACH
DİZİLER
Dizilerin de görevleri değişkenlerden farklı değildir.Amaç yine belli türde veri depolamaktır.Ancak dizilerde bir değil birden fazla değişken fazladır.Örneklerle daha iyi anlayacaksınız.
Php de dizileri array() fonksiyonu ile tanımlarız.Örneği inceleyelim.
<?php
$pd = array("php","asp","jsp");
?>
Az önce ilk dizimizi tanımladık.Ancak bu kodları yazıp,çalıştırdığınızda ekrana hiçbir şey yazılmayacaktır.Sebebi ise zaten birşey yazdırmamamızdır :).Peki o halde bu tanımladığımız dizi yazdıralım.Dizileri yazıdırırken dizi operatörünü ([]) kullanırız.
<?php
$pd = array("php","asp","jsp");
echo "$pd[0]<br>";
echo "$pd[1]<br>";
echo "$pd[2]<br>";
?>
Gördüğümüz gibi 3 elemanlı dizimizi madde madde ekrana yazdırıyoruz.Örnekteki gibi dizi operatörünü kullanarak ([]) dizi elemanlarını ekrana yazdırabiliriz.Dizi operatörünün içine dizi indeksi adını verdiğimiz değer gelir.Dizi indeksi o maddenin dizideki yeridir.Yani jsp'nin dizideki yeri 2 dir.
Peki neden jsp nin dizi indeksi 2 dir,3 olması gerekmez mi ? Burada dikkat etmemiz gereken nokta şudur.Php deki dizi indeksleri 0 dan başlar.Yani yukarıdaki dizide "php" değerinin indeksi 0 dır.Bu yüzden de jsp nin indeks numarası 2 dir.
Biz de bu yüzden yazdırmaya 0 dan başladık.
Dizileri farklı şekillerde de tanımlayabiliriz.Örneğin :
<?php
$pd[0] = "php";
$pd[1] = "asp";
$pd[2] = "jsp";
echo "$pd[0]<br>";
echo "$pd[1]<br>";
echo "$pd[2]<br>";
?>
Yine bu şekilde de tanımlayabilirdik :
<?php
$pd[] = "php";
$pd[] = "asp";
$pd[] = "jsp";
echo "$pd[0]<br>";
echo "$pd[1]<br>";
echo "$pd[2]<br>";
?>
Yukarıdaki durumda elemanlar tanımlanma sırasına göre indeksleneceklerdir.
Dizileri Seri Okumak (Döngülerle Diziler)
Dizilerin tüm elemanlarını bir döngü yardımıyla rahatça okuyabiliriz.
<?php
$dh = array("kopya kalpler","baytar","küheylan","vasiyet","terapi");
for($i=0;$i<count($dh);$i++)
{
echo "$dh[$i]<br>";
}
?>
Burada daha önce hiç karşılaşmadığımız bir fonksiyon gördük : count() fonksiyonu.Bu fonksiyonun işlemi kendisine parametre olarak verilen dizinin eleman sayını hesaplar.Fonksiyonlara işlemesi için verilen değerlere o fonksiyonun parametresi denir.Yukarıda $dh count() fonksiyonunun parametresidir.Yani yukarıdaki count() $dh içindeki dizinin eleman sayısını hesaplıyor böylelikle döngü sadece eleman sayısı kadar çalıştırılıyor.Döngü içerisinde ise dizi operatörleri içine $i değişkenini yerleştirdiğimize dikkat edin.$i değişkenin her çalıştırılışta değeri bir artıyor ve böylelikle döngü yazdırılıyor.
Foreach ile dizi okuma
Foreach genellikle dizi okumak için kullanırız.Hatta biz sırf dizi okumak için kullanacağız.Yukarıdaki dizi aşağıdaki şekilde de okuyabilirdik.
<?php
$dh = array("kopya kalpler","baytar","küheylan","vasiyet","terapi");
foreach($dh as $cc)
{
echo "$cc<br>";
}
?>
Yukarıdaki döngüde,döngü boyunda $dh içerisindeki değerler $cc ye yerleştirilecektir.Foreach'in asıl gücünü çok boyutlu dizilerde göreceğiz.
Çok Boyutlu Diziler
Şuana kadar tek boyutlu dizilerle çalıştık ancak php de çok boyutlu diziler tanımlamak ta mümkündür.Aşağıda çok boyutlu bir dizi örneği görüyoruz.
<?php
$dh= array(
array("isim" => "echo",
"işlevi" => "yazı yazdırır"),
array("isim" => "count()",
"işlevi" => "elemanları sayar"),
array("isim" => "for",
"işlevi" => "koşula göre iterasyon yaratır"));
?>
Çok boyutlu bir dizi tanımladık,ancak çok boyutlu dizileri tek boyutlular gibi "$dh[1]" şeklinde yazdıramayız."$dh[1]" şeklinde yazdırmayı denesek "Array" yazısıyla karşılaşırız.
Bunun sebebi birinci dizinin de kendi içinde diziler depolamasıdır.Yani farkettiyseniz birinci dizinin içinde de diziler tanımladık.Bu yüzden $dh[1] birinci dizinin elemanını yazdıracaktır.
Yani tekrar bir diziyi.Kısaca çok boyutlu dizileri aşağıdaki gibi yazıdırabiliriz.
<?php
$dh= array(
array("isim" => "echo",
"işlevi" => "yazı yazdırır"),
array("isim" => "count()",
"işlevi" => "elemanları sayar"),
array("isim" => "for",
"işlevi" => "koşula göre iterasyon yaratır"));
echo $dh[0]['isim'];
?>
Bu şekilde yazdırdığımızda echo yazısı ile karşılaşırız.Peki çok boyutlu dizileri nasıl seri bir şekilde tüm elemanlarını yazdırırız.İşte burada foreach döngüsü bize çok büyük kolaylıklar sağlıyor.
<?php
$dh= array(
array("isim" => "echo",
"işlevi" => "yazı yazdırır"),
array("isim" => "count()",
"işlevi" => "elemanları sayar"),
array("isim" => "for",
"işlevi" => "koşula göre iterasyon yaratır"));
foreach($dh as $cc)
{
while(list($a,$b) = each($cc))
{
echo "$a : $b<br>";
}
}
?>
Bu kodları çalıştırdığımızda tüm elemanların yazdırıldığını görürüz.Peki burada ne yaptık.Foreach her bir çalıştırılışta $dh deki elemanlar teker teker $cc ye geçecektir.Zaten foreach'i yukarıda da kullanmıştık.
Ayrıca foreach'in içinde bir de while döngüsünü kullandık.While döngsüne verdiğimiz koşulda ise,each() fonksiyonu aracılığıyla her bir değeri list fonksiyonuna aktardık.List fonksiyonu da kendisine aktarılan bu
değerleri kendi içinde verdiğimiz değişkenlere yerleştirdi.
Toparlamak gerekirse foreach ile dizi değişkenindeki her elemanı sırasıyla $cc değişkenine atıyoruz.Önce isim,sonra echo vs. vs..Daha sonra while içinde each() aracılığıyla $cc içindeki her bir değeri list'e atıyoruz.
List fonksiyonu ise kendi içinde tanımladığımız değişkenlere bu değerleri atıyor.$a ' ya başlıkları "isim" "işlevi",$b ye ise elemanları "echo" "yazı yazar" gibi.
Biliyorum biraz karışık ama gün geçtikçe daha da iyi anlayacaksınız.Ve tüm bilgiler oturacaktır.
6-FONKSİYONLAR
Bir çok programlama dilinin olduğu gibi fonksiyonlar php nin de yapı taşlarındandır.Farkında olmasak ta aslında şu ana kadar bir çok defa fonksiyonları kullandık.Örneği array(),list(),each(),echo() bunların hepsi birer fonksiyondu.Tabii bu fonksiyonlar php'nin getirdiği hazır fonksiyonlardı.Biz istersek php de kendi fonksiyonlarımızıda tanımlayabiliriz.Peki bu ne işe yarayacak.Fonksiyonlar aslında program parçacıklarıdır.Örneğin bir alışveriş portalı yazdığımızı farzedelim.Ve bir kaç farklı yerde veritabanı bağlantısı yapmamız gereksin.Biz heryer gerektiği yerde veritabanı bağlantı kodlarını yazacağımıza sadece tek bir yerde fonksiyon içerisinde yazıp gerektiğinde bu fonksiyonu kullanacağız.
Neyse fonksiyonlar tahmim ettiğiniz kadar zor değiller,hatta bence dizilerden daha kolaylar.
Fonksiyon Tanımlama
PHP de fonksiyonlar function ifadesi ile tanımlanırlar.Aşağıda ekrana "merhaba dünya" yazdıran bir fonksiyon tanımlayacağız.
<?php
function yazdir()
{
echo "merhaba dunya";
}
?>
Function ifadesi ile php'ye bir fonksiyon tanımlayacağımı belirttik ve ardından da fonksiyonun ismini yazdık.Parantezleri şimdilik boş bırakıyoruz buraya daha sonra foknsiyonun alacağı parametreleri yazacağız.Ardından süslü parantezler içerisinde fonksiyonun gerçekleştirmesini istediğimiz komutları yazıyoruz.
İşte php de fonksiyon tanımlamak bu kadar basittir.Şimdi aşağıda tanımladığımız fonksiyonu çağıracağız ve ekrana "merhaba dünya yazılacak"
<?php
function yazdir()
{
echo "merhaba dunya";
}
yazdir();
?>
Tanımladığımız fonksiyonları yine isim ve parantezler ile çağırırız.Şimdi aşağıda bu parantezleri de kullanacağız.
Dediğimiz gibi fonksiyonlarda parantezler yani (),fonksiyona parametre verilmesi için vardır.Şimdi öyle bir fonksiyon yazacağız ki,biz fonksiyonu çağırıp,ona 2 sayı vereceğiz ve fonksiyon o sayıları toplayıp ekrana yazdıracak.
<?php
function topla($a,$b)
{
echo $a+$b."<br>";
}
topla(2,4);
?>
Yukarıda yine bir fonksiyon tanımladık ve parantezler içine iki değişken yazdık.Ardından fonksiyona bu parantezlerdeki değişkenleri toplayıp yazdırmasını söyledik.
Aşağıda fonksiyonu çağırdımızda ona parametre olarak iki sayı verdik.2 $a değişkenine,4 ise $b değişkenine atandı.Fonksiyon da bu değerleri toplayıp yazdırdı.
Şimdi de farklı bir örnek yapacağız.Biz fonksiyonu çağırdımızda ona bir cümle vereceğiz ve bu cümleyi kaç defa tekrarlayacağınız söyleyeceğiz.
<?php
function iterasyon($cumle,$tekrar)
{
for($i=0;$i<$tekrar;$i++)
{
echo "$cumle<br>";
}
}
iterasyon("gam tozu ve dünyanın ninnisi",3);
?>
Bu kodları çalıştırdığımızda ekrana üç defa istediğimiz cümlenin yazılmış olduğunu görürüz.
Fonksiyonların değer döndürmesi
Fonksiyonlar illa ekrana birşey yazdırmak zorunda değildir.Onlar bir değer de döndürebilirler.Örneğin topla fonksiyonunu ele alalım.topla fonksiyonu ekrana sonucu yazdırmak zorunda değildi.İsteseydik topla fonksiyonu verdiğimiz iki rakamı toplayıp bize sonucu döndürürdü ve sonucu biz ekrana yazdırırdık.
<?php
function topla($a,$b)
{
return $a+$b;
}
echo topla(5,5);
?>
Yukarıdaki örnekte fonksiyonu çağırdığımızda $a ve $b değişkenlerine 5 değerlerini veriyoruz.Fonksiyon iki değişkeni toplayıp bize sonucu döndürüyor.Ve biz de sonucu ekrana yazdırıyoruz.Eğer echo yu kaldırırsanız ekrana bir şey yazılmadığını fark edeceksiniz.Fonksiyonların değer döndürmesini return sözcüğü ile sağlayabilirsiniz.Yukarıda da return $a+$b; ifadesi ile iki saynın toplamını döndür dedik.
Global İfadesi
Global ifadesi fonksiyonların dışındaki bir değişkenin fonksiyon içerisinde kullanılabilmesini sağlar.
<?php
$dh = 10;
function php()
{
echo $dh;
}
php();
?>
Bu kodları çalıştırdığınızda ekrana bir şey yazılmadığını fark edeceksiniz.Bunun sebebi $dh değişkenin fonksiyon tarafından tanınmamasındır.Dediğim gibi dışarıdaki bir değişkeni fonksiyon içerisinde kullanmak gerekir.Bunun için global ifadesini kullanırız.Aşağıda fonksiyon çalışacaktır.
<?php
$dh = 10;
function php()
{
global $dh;
echo $dh;
}
php();
?>
7-FORM İŞLEMLERİ
Evet php'nin yapıtaşlarını (diziler,değikenler,döngüler,fonksiyonlar,operatörler vs.) öğrendik,artık bu dili biraz daha etkin kullanma zamanımız geldi.
Öncelikle şunu söyleyeyim ki html kodlarının php versiyonları yoktur.Yani <form><a><b><i> vs. gibi html kodlarının php de bir karşılıkları yoktur.Zaten php de bir işaretleme dili değildir bu yüzden bu tagları getirmek zorunda değildir.Biz bu yüzden php içerisinde html de kullanırız.Mesela şu ana kadar da en çok <br> tagını php içerisinde kullandık.
Eğer html de form nesnelerini bilmiyorsanız,öğrnemenizi tavsiye ederim çünkü html form nesnelerini bilmeden bu konuyu anlamanız da mümkün olmaz.Zaten form nesnelerini öğrenmeniz de biraz html ilginiz varsa bence bir kaç saat sürecektir.Belki daha da kısa.
Bildiğiniz gibi form yollamanın iki metodu vardır.Biz bunları <form> etiketinin method niteliğinde belirtiyorduk.Bunlar GET ve POST metodlarıydı.Peki bu metodlar ne işe yarar ?
POST metodu ile veriler ziyaretçiler tarafından okunamazlar,yani ziyaretçiler göremezler.Oysa GET metondu veriler adres çubuğunda görünür,ziyaretçiler tarafından okunabilir.
BASİT FORM
Aşağıda kullanıcıdan bir isim alan ve onu ekrana yazdıran bir form görüyoruz.
DH.HTML nin içeriği :
<form action="dh.php" method="POST">
<b>isim :<br></b>
<input type="text" name="mesaj"><br>
<input type="submit" value="gönder">
</form>
DH.PHP NİN İÇERİĞİ
<?php
echo $_POST['mesaj'];
?>
$_POST değişkeni formdan post metoduyla gelen veriyi input alanından (textarea,vs. de olabilir) almaya yarar.DH.HTML de bir form hazırladık ve form gönderildiğinde dh.php sayfasının çağrılmasını istedik.DH.PHP çağrılınca da $_POST[] değişkeni formun mesaj ismindeki input alanındaki veriyi ekrana yazdırıyor.
Aynı şeyi GET ile de yapabilirdik.
DH.HTML
<form action="dh.php" method="GET">
<b>isim :<br></b>
<input type="text" name="mesaj"><br>
<input type="submit" value="gönder">
</form>
DH.PHP
<?php
echo $_GET['mesaj'];
?>
Burada da $_GET değişkeni ile adres çubuğundaki mesaj değişkenin değerini alıyoruz ve yazdırıyoruz.Adres çubuğuna bakarsanız şu şekli almış olduğunu görürsünüz :
http://localhost/dh.php?mesaj=yazdıklarınız
$_GET adres çubuğundaki değişkeni almak için kullanılır.Zaten biz de yukarıda öyle yaptık.
E-POSTA FORMU (MAIL FORM)
Sunucu taraflı dillerin güzel bir özelliği de web sayfası üzerinden herhangi bir kişinin e-posta adresine e-posta yollabilmesidir.Biz de bundan farklı birşey yapmayacağız.Ancak aşağıdaki kodları yerel ağda (localhost) çalıştıramayız.Localhost üzerinden bir kişiye e-posta gönderemeyiz.Bunun için bir hosta ihtiyacımız vardır.Daha doğrusu SMTP ye sahip bir hosta ihtiyacımız vardır.Peki SMTP nedir ? Açılımı Simple Mail Transfer Protocol'dür.Kısaca e-posta göndermek için SMTP destekli bir hosta ihtiyacımız vardır.Biz yine de örneğimizi yapacağız.Bence atlamayın ve bakın zaten php de e-posta yollamak için sadece bir fonksiyon kullanırız : mail().
DH.HTML
<form action="dh.php" method="POST">
<b>göndereceğiniz-posta adresi :</b><br>
<input type="text" name="eposta"><br><br>
<b>başlık :</b><br>
<input type="text" name="baslik"><br><br>
<b>mesajınız :</b><br>
<textarea name="mesaj"></textarea><br><br>
<input type="submit" value="gönder">
</form>
DH.PHP
<?php
$mesaj = $_POST['mesaj'];
$baslik = $_POST['baslik'];
$adres = $_POST['eposta'];
$konu = "bilgi vermek";
mail($adres,$konu,$mesaj,$baslik);
echo "e-posta gönderildi teşekkürler";
?>
mail fonksiyonu dört parametre alır.Yukarıdaki gibi mail($gonderilecek_adres,$konu,$icerik,$baslik)
Tek Bir Form Sayfası --Form Sayfasını ve Scripti Tek Sayfada Birleştirmek--
Şu ana kadar bir form gönderebilmek için iki sayfa kullandık.Bunlar formun bulunduğu,ve form tarafından çağrılan scriptin bulunduğu sayfalardı.Oysa biz çok daha kolay bir şekilde formu da scripti de tek bir sayfada birleştirebilirdik.Bu bize çok büyük bir kolaylık sağlar.
DH.PHP
<?php
if(!$_POST['gnd'])
{
echo "<form action=\"$_SERVER[PHP_SELF]\" method=\"POST\">
<b>isim :</b><br>
<input type=\"text\" name=\"isim\"><br><br>
<input type=\"submit\" name=\"gnd\" value=\"gönder\">
</form>";
} else {
echo $_POST['isim'];
}
?>
Yukarıdaki form kullanıcıdan aldığı ismi ekrana yazdırıyor ancak bu form için tek bir sayfa yetiyor.Peki bu nasıl oluyor.Öncelikle size formda \ neden kullandığımızı açıklayayım.
Bildiğimiz gibi echo dan sonra iki tırnak kullanıyoruz.İşte ters slaş (\) karakteri kendisinden sonra gelen tırnağın geçersiz sayılmasını sağlar.Yani eğer biz \ kullanmasaydık php daha ilk tırnak gördüğü yerde echo ile yazmayı bitirdiğimizi sanacaktı ve formun yazımı devam ettiği için hata verecekti.Mesela normalde input tagının type niteliği type="text" şeklinde yazılır.Biz bunu php içinde type="text" şeklinde yazdığımızda php'nin kafası karışacaktı.Çünkü echo "type="text"" şeklinde bir yazımda php yazmayı hangi tırnaktan sonra kesip kesmeyeceğini anlamayacaktı.Fazla ve arka arkaya hatalı tırnak kullanımı echo nun çalışmasını engelleyecek ve hata verecekti.İşte biz ters slaş (\) karakteri ile php'ye bu karakterden sonra gelen tırnağın (") echo ile ilgisi olmadığını belirtiyoruz.Bunu html tagı içerisinde kullandığımız içinde ekrana yazılmıyor
.Eğer html tagı içinde değilde şu şekilde kullansaydık ekrana bir tırnak yazdırılırdı. ÖRN : echo " \" ";
Ancak burada tek bilmediğimiz işlem bu değil.$_SERVER[PHP_SELF] değişkenini de neden kullandığımızı bilmiyoruz.Bizim bu değişkeni burada kullanma sebebimiz formu yine aynı sayfada açmasıdır.Bu değişken sayfanın ismini temsil eder.Yani formun gönderildiğinde yine aynı sayfayı açmasını sağlar.Biz burada $_SERVER[PHP_SELF] yerine dh.php de yazabilirdik (sayfası dh.php olarak kaydetmiştik) Eğer mesela.php diye bir sayfa oluşturup
<?php echo $_SERVER[PHP_SELF]; ?> yazıp kaydederseniz çalıştırdığınız sayfanın isminin ekrana yazılmış olduğunu görürsünüz.
Neyse kısaca $_SERVER[PHP_SELF] değişkenini burada kullanma amacımız sayfayın kendi kendisini çağırmasıydı.
Bir de sayfayı if ile iki ayırdık.If'e verdiğimiz koşul şuydu --> !$_POST['gnd']
Yani eğer formda gnd değişkeni yoksa formu göster,varsa scripti işle.Dikkat ederseniz submit'in ismini gnd yaptığımızı görürsünüz --> <input type="submit" name="gnd" value="gönder">
Form gönderildiğinde gnd isimli bir değişken oluşur ve sayfa yüklendiğinde php bu değişkeni kontrol eder.Eğer $_POST['gnd'] değişkeni yoksa formu gösterir.Eğer varsa scripti işlemeye başlar.Yani ismi ekrana yazdırır.
Kullanıcı Şifre/İsim Sorgulama
Son yapacağımız örnekte genellikle üyelik sistemlerinde bulunan kullanıcının girdiği şifreyi ve kullanıcı ismini sorgulama sistemini yazacağız.Tabii ki bir üyelik sistmi oluşturmak için veritabanı ve cookie (ya da session) bilgisi gerekir biz sadece sorgulayıp ekrana yazdıracağız.
<?php
if(!$_POST['gnd'])
{
?>
<form action="<?php $_SERVER['PHP_SELF']; ?>" method="POST">
<b>kullanıcı ismi :</b><br>
<input type="text" name="isim"><br><br>
<b>şifre :</b><br>
<input type="password" name="sifre"><br><br>
<input type="submit" name="gnd" value="gönder">
</form>
<?php
} else {
$gecerli_isim = "sagopa";
$gecerli_sifre = "kajmer";
if($_POST['isim'] == $gecerli_isim && $_POST['sifre'] == $gecerli_sifre)
{
echo "doğru giriş";
} else {
echo "yanlış giriş";
}
}
?>
Yine formu tek bir sayfa birleştirdik.Önce gnd değişkenin üretilip üretilmediğini kontrol ettik.Eğer üretilmemişse yani form gönderilmemişse formu yazdırdık.Eğer gönderilmişse de formdan gelen verilerin geçerli olup olmadığını kontrol ettik.
8-BELLİ BAŞLI PHP FONKSİYONLARI
Php de istediğimizi yapabilmemiz için aynı zamanda bir çok fonksiyon bilmemiz gerekir.İşte bu bölümde işimize yarayacak çeşitli fonksiyonları göreceğiz.
STR_REPLACE
Belli kelimeleri belli kelimelerle değiştirir. str_replace($eski,$yeni,$yazi);
<?php
$dh = "selam";
echo str_replace("selam","merhaba",$dh);
?>
Yukarıda str_replace() fonksiyonu $dh içinde "selam" görürse "merhaba" ile değiştirir.
SIZEOF()
Count() yaptığı işi yapar.
STRTOUPPER()
Kendisine verilen parametre içerisindeki tüm harfleri büyütür.
<?php
$dh = "selam";
echo strtoupper($dh);
?>
STRTOLOWER()
Kendisine verilen parametre içerisindeki tüm harfleri küçültür.
<?php
$dh = "SELAM";
echo strtolower($dh);
?>
UCFIRST()
Kendisine verilen parametrenin sadece ilk harfini büyütür.
<?php
$dh = "selam";
echo ucfirst($dh);
?>
UCWORDS()
Kendisine verilen parametrenin kelimelerinin sadece ilk harflerini büyütür.
<?php
$dh = "montajla düzelmeyecek tek şey hayattır";
echo ucwords($dh);
?>
TRIM()
Kendisine verilen parametrenin önünde ya da arkasında boşluk varsa siler.
<?php
$dh = " montajla düzelmeyecek tek şey hayattır ";
echo "<pre>";
echo trim($dh);
?>
Bu fonksiyonun işlevini html'nin <pre> tagıyla daha rahat görebiliriz.
LTRIM()
Kendisine verilen parametrenin başındaki boşluğu siler.
<?php
$dh = " montajla düzelmeyecek tek şey hayattır ";
echo "<pre>";
echo ltrim($dh);
?>
RTRIM()
Kendisine verilen parametrenin sonundaki boşluğu siler.
<?php
$dh = " montajla düzelmeyecek tek şey hayattır ";
echo "<pre>";
echo rtrim($dh);
?>
FUNCTION_EXISTS()
Herhangi bir fonksiyonun mevcut olup olmadığını kontrol eder.
<?php
function dh()
{
}
if(function_exists(dh))
{
echo "mevcut";
} else {
echo "değil";
}
?>
NL2BR()
Kısaca metin içinde enter tuşunun işlev görmesini sağlar.Normalde aşağıdaki gibi bir metnin içinde enter kullanımı işe yaramayacaktır.Ancak nl2br() kullandığımız için işe yarıyor.
<?php
$dh = "selam
naber";
echo nl2br($dh);
?>
IS_NUMERIC()
Parametresinin numerik bir veri olup olmadığı kontrol eder.
<?php
$dh = 10;
if(is_numeric($dh))
{
echo "bu bir numara";
} else {
echo "numara değil";
}
?>
INTVAL()
Aldığı parametre sayısal ise bu değeri yansıtır.Eğer aldığı parametre boşsa ve ya sayı olmayacak bir karakterse 0'a eşitler.
<?php
$dh = "selam";
echo intval($dh);
?>
Yukarıdaki kodları çalıştırdığınızda ekrana 0 yazıldığını görürsünüz.Bunun sebebi $dh ın değerinin sayı olmamasıdır.Bu fonksiyon ne işe yarayacak diyebilirsiniz.Güzel bir güvenlik fonksiyonudur.
EXPLODE()
Kendisine verilen karakter katarını yine kendisine verilen karakterler doğrultusunda dizilere böler.
<?php
$dh = "selam&&merhaba&&iyidir";
$bol = explode("&&",$dh);
echo "$bol[0]<br>";
echo "$bol[1]<br>";
echo "$bol[2]<br>";
?>
STRLEN()
Strlen() bir karakter katarının uzunluğunu verir.
<?php
$dh = "selam";
echo strlen($dh);
?>
STRIP_TAGS()
Bu fonksiyonla karakter katarı içerisinde istediğimiz html taglarını devre dışı bırakabiliriz.
<?php
$dh = "<b>d<u>o</u>nanı<i>mh</i>aber</b";
echo strip_tags($dh,"<u>");
?>
Yukarıda strip_tags()'ın içindekiler hariç tüm taglar silinir.
9-PHP'DE DOSYA İŞLEMLERİ
Php,veritabanında olduğu gibi çeşitli dosyala üzerinde de işlem yapmamıza olanak tanır.'Peki veritabanı gibi bir nimet varken biz neden garip dosyalar üzerinde işlem yapalım' diyebilirsiniz.Bunun cevabı aslında çok basit.Bazı verileri veritabanına kaydedip onu yormak ve doldurmak istemeyiz.Dosyalar hiç tahmin etmediğimiz yerlerde imdadımızı yetişebilirler.
DOSYALARI AÇMA/KAPATMA
Dosylarla işlem yapabilmek için öncelikle onları açmalıyız.Bunun için fopen() fonksiyonunu kullanırız.Fopen() iki parametre kabul eder.Birincisi dosyanın ismi ve uzantısı,ikincisi ise dosyanın ne için açılacağıdır.Dosyayı ne için açarız ? ya okumak,ya yazmak,ya da eklemek yapmak için,eğer dosyayı okumak için açıyorsak : r,yazmak için açıyorsak : w,ekleme yapmak için açıyorsak : a'yı parametre olarak yazarız.
Fclose() fonksiyonu ise işimiz bittikten sonra dosyayı kapatmak için kullanılır.Dosya ile işimiz bittikten sonra onu kapatmalıyız.
<?php
$dh = fopen("dh.txt","w");
fclose($dh);
?>
Yukarıda dh.txt isminde bir dosyayı açtık ancak hiçbir işlem yapmadan kapattık.Dikkat etmemiz gereken nokta şu :Eğer dosyayı yazmak için açarsak (w) ve dosya mevcut değilse php dosyayı oluşturur ve gerekli işlemi yapar ancak eğer dosya zaten varsa o zaman da dosyadaki tüm veriler gidecek yani yeni veriler ötekilerini götüreceklerdir.
Bu diğer dosya işlemlerinde geçerli değildir.
DOSYAYA YAZMAK/EKLEMEK
Dosyalara yazmak için çeşitli fonksiyonlar kullanırız.Bunlar fputs(),fwrite().Bu iki fonksiyondan istediğimizi kullanabiliriz.
<?php
$dh = fopen("dh.txt","w");
fputs($dh,"donanımhaber");
fclose($dh);
?>
Yukarıdaki örnekte dosyayı yazmak için açıp,içine fputs() fonksiyonu yardımıyla "donanımhaber" yazıp,dosyayı kapatıyoruz.Eğer dh.txt dosyayı mevcut değilse o zaman bir dh.txt dosyası oluşturulur.Eğer mevcutsa ve içinde daha önceden veri varsa onlar silinir ve yenileri eklenir.Aynı şeyi fwrite() kullanarak ta yapabilirdik.
<?php
$dh = fopen("dh.txt","w");
fwrite($dh,"forum donanımhaber");
fclose($dh);
?>
Yukarıdaki kodları çalıştırdığımızda donanımhaber yazısının silindiğini ve yerine forum donanımhaber yazdığını görürüz.Bu dosyayı yazmak için açtığımızdan ileri gelir.Fonksiyonla bir alakası yoktur.
Peki dosyada önceki veri kalsa ve biz yenilerini ekleyebilsek ? Elbetteki bu da mümkün.Tek yapmamız gereken dosyayı yazmak yerine (w) eklemek için (a) açmak.Yazmak için kullandığımız fonksiyonları kullanabiliriz.
<?php
$dh = fopen("dh.txt","a");
fwrite($dh,"ne güzel sitedir\n");
fputs($dh,"donanımhaber");
fclose($dh);
?>
\n satır atlamamızı sağlar.Bunu dosya işlemleri haricinde de kullanırız (\n).
DOSYALARI OKUMAK
Dosyaları okumak olmasaydı sanıırım yazmanında pek bir anlamı kalmazdı.Dosyaları okumak için : fgets(),fgetc(),fread(),feof() fonksiyonlarını kullanabiliriz.
fgets()
<?php
$dh = fopen("dh.txt","r");
echo fgets($dh,1024);
fclose($dh);
?>
fgets() ile dosyadan veri okuyabiliriz.Yukarıdaki 1024 okunacak byte miktarıdır.Yukarıda fgets() 1024 byte lık bir veriyi alacaktır.
feof()
Dosyaları döngülerle okurken dosya sonuna ulaştığımızı haber verecek bir şeye ihtiyacımız vardır.Bu ihtiyacı php feof() fonksiyonu sağlar.Feof() fonksiyonu dosya sonuna ulaşılmadığı müddetçe false döndürür.Dosya sonuna ulaşıldığında ise true döndürür.Şimdi aşağıdaki şarkıyı dosyaya yazalım :
Kopya kalpler, gözlerin önünde parlamakta bir fener ve ihtirasla süslenen bir gelecek önüme kurban gülmek, ağlamak seçimlerim, hangi şıkta mola verendim ayazlarında terleyendim, saçmalık bu his ve geriye dönüşü yok, pis bir sakaya maruzum ve hecelerimde kimi zaman aruzum, anca buldum arzularımı, arz-talep mi bilmem, hep bu farzla yaşanılır mı, ben ne istedim ki önüme koydular bu kuklayı
ve zor günümde hor görüldüm, kor bir aleve ben gömüldüm, hislerimde çürüdüm artık anla, kopya kalbim çok çizildi, kaprisinden bezdi, adamın anca gizli bir kaçak suç işlemiş ve izini bulamamışlar, işte şimdi pişti oldun, yokluğun bir ölüme benzetildigi şiir tadında varlığın bir saçmalıkmış, acil anladım, anca topladım, kanca sapladım bu acıya bir el olsun ben de ateşi bastım, kurut bu dereyi sen kolaysa, gözlerim yine de parçalı bulutlu, anlamın da uludur, aşkın gözleri hep sulu mudur, hakkı bu mudur, sadakatın güvenimin sonu mudur, sen kaderdin.
Ve bu kodları çalıştıralım.
<?php
$dh = fopen("dh.txt","r");
while(!feof($dh))
{
echo fgets($dh,1024)."<br>";
}
fclose($dh);
?>
Yukarıda while() döngsüne verdiğimiz koşul şuydu : feof() true döndürmedikçe devam et.E feof() ta zaten dosya sonuna gelmedikçe true döndürmediğine hiçbir sorun yok.
fgetc()
fgetc() dosyadan bir karakterlik bir veri okur.
<?php
$ds = fopen("dh.txt","r");
echo fgetc($ds);
fclose($ds);
?>
Ancak biz elbetteki bu fonksiyonla da tüm verileri okuyabiliriz.
<?php
$ds = fopen("dh.txt","r");
while(!feof($ds))
{
echo fgetc($ds);
}
fclose($ds);
?>
fread()
fread() fonksiyonu belirli boyutta veri okur.
<?php
$ds = fopen("dh.txt","r");
while(!feof($ds))
{
echo fread($ds,1024);
}
fclose($ds);
?>
Anlamadığınız yerleri ö.m den ya da konu açarak soruabilirsiniz arkadaşlar,hatam olmuşsa da bilenlerin düzeltmesini rica ediyorum.
DİĞER DOSYA FONKSİYONLARI
Bazen dosyanın ismini,boyutunu vs. öğrenmek isteyebiliriz.
filesize() : Dosyanın boyutunu döndürür.
is_file() : Parametrenin bir dosya olup olmadığını kontrol eder.
is_dir() : Parametrenin bir dizin olup olmadığını kontrol eder.
is_writable() : Dosyanın yazılabilir olup olmadığını kontrol eder.
is_readable() : Dosyanın okunup okunamayacağını kontrol eder.
fileatime() : Dosyaya son erişim tarihini verir.
filemtime() : Dosyanın son değiştirilme tarihini verir.
file_exists() : Dosyanın mevcut olup olmadığını kontrol eder.
unlink() : Dosyayı kaldırır.
touch() : Dosya oluşturur (dosya zaten varsa içeriğine dokunmaz ama güncellenme tarihlerini değiştirir)
Şimdi bir örnekte bu fonksiyonların nasıl çalıştığını görelim (dh.txt isimli bir dosyamız olsun)
<?php
if(file_exists("dh.txt"))
{
echo "dosya mevcut<br>";
}
echo "boyut ".filesize("dh.txt")."<br>";
if(is_file("dh.txt"))
{
echo "bu bir dosyadır<br>";
}
if(is_dir("dh.txt"))
{
echo "bu bir dizindir<br>";
}
if(is_writable("dh.txt"))
{
echo "yazılabilir<br>";
}
if(is_readable("dh.txt"))
{
echo "okunabilir<br>";
}
echo "dosyaya son erişim :".fileatime("dh.txt")."<br>";
echo "dosyanın son değiştirilme :".filemtime("dh.txt")."<br>";
unlink("dh.txt"); //DOSYA GİTTİ
touch("dh.txt"); //DOSYA TEKRAR OLUŞTURULDU
?>
Dosya işlemlerimiz bitti,tarih ve zaman işlemlerinden sonra inşallah veritabanıyla uğraşmaya başlayacağız.
10-TARİH/ZAMAN İŞLEMLERİ
Php'de veritabanlarına geçmeden önce tarih zaman işlemlerini öğrenmemiz iyi olacaktır.
time()
Bu fonksiyonun ilginç bir işlevi var.1 Ocak 1970 tarihinden bulunduğumuz ana kadar geçen saniyeleri döndürür.Bu fonksiyonu tek başına kullanmak pek bir şey ifade etmez zira yazdırdığınızda (echo time() ) geçen saniyeleri görürsünüz.Bunu az sonra date() fonksiyonu ile beraber kullanacağız.
getdate()
getdate(); Fonksiyonu
Bu fonksiyon bir dizi (array) yaratarak alacağı parametrelere göre çıktı verir. Fonksiyonun alabileceği parametreler şunlardır;
seconds (Saniyeler)
minutes (Dakikalar)
hours (Saatler)
mday (Ay içerisindeki gün sıra sayısı)
wday (Hafta içerisindeki gün sıra sayısıdır. 0-6 arasında değer alır.)
mon (Yıl içerisindeki ayın sıra sayısı)
year (Yıl)
yday (Yıl içerisindeki günün sıra sayısı)
weekday (Gün)
month (Ay)
0 (Sıfır rakamı. 01.01.1970 tarihinden günümüze kaç saniye geçtiğini verir (UNIX zaman mührü).
Aşağıdaki şekilde, getdate(); fonksiyonunun oluşturduğu dizinin (array`in) tüm elemanlarını listeleyebilirsiniz. Hepsinin çıktısını alabilirsiniz;
<?php
# Şu andaki tarihi al
$x = getdate();
# Diziyi ekrana bas.
print_r($x);
?>
Örnek bir kullanım ise;
<?php
# Şu andaki tarihi al
$x = getdate();
# Gün-Ay-Yıl olarak tarihi bas.
echo $x[weekday] ."-". $x[month] ."-". $x[year];
?>
Bu örneğin çıktısı Tuesday-April-2004 gibi bir şey olacaktır. Çıktıyı Türkçe alabilmek için siz de bir array yapısı yaratın ve Türkçe çıktı almayı deneyin. Böylece hem array üzerine örnek yapmış olur, hem de basit bir script hazırlamış olursunuz (Getdate() alıntıdır )
date()
Date() fonksiyonu ile php'de tarih işlemleri yapabiliriz.Mesela bugünün tarihini alalım.
* a [Küçük A]: am veya pm şeklinde çıktı verir.
* A [Büyük a]: AM veya PM şeklinde çıktı verir.
* d [Küçük D]: Ayın içinde hangi günde olduğunuzu başta sıfır olmak üzere 01 gibi bir formatta verir.
* D [Büyük d]: Üç harfli gün adını verir.
* F [Büyük f]: Ayın tam adını ingilizce olarak verir. June gibi bir çıktı verecektir.
* g [Küçük G]: Başta sıfır olmamak üzere 12 saat formatında saati verir. 1-12 arasında çıktı verir.
* G [Büyük g]: Başta sıfır olmamak üzere 24 saat formatında saati verir. 1-23 arasında çıktı verir.
* h [Küçük H]: Başta sıfır olmak üzere 12 saat formatında saati verir. 01-12 arasında çıktı verir.
* H [Büyük h]: Başta sıfır olmak üzere 24 saat formatında saati verir. 01-23 arasında çıktı verir.
* i [Küçük I]: Dakika bilgisini 00 ve 59 arasında verir.
* j [Küçük J]: Başta sıfır olmadan ayın içinde hangi günde olduğunuzu verir. 1-31 arasında çıktı verir.
* l [Küçük L]: Günün tam adını ingilizce olarak verir. Sunday gibi bir çıktı verir.
* L [Büyük l]: Artık yıl için kullanılır. Eğer tarih artık yıl içerisinde ise true, değilse false olarak işler.
* m [Küçük M]: Başta sıfır olmak üzere 01-12 arasında yılın içerisindeki ayın sayısını verir.
* M [Büyük m]: Üç harfli ay adını verir.
* n [Küçük N]: Başta sıfır olmamak üzere 1-12 arasında yılın içerisindeki ayın sayısını verir.
* s [Küçük S]: Başta sıfır olmak üzere 0-59 arasında saniye değerini verir.
* S [Büyük s]: İngilizce`de “nci” anlamına gelen st, nd, rd, th değerlerinin çıktısını, ardından geldiği sayının değerine göre verir.
* t [Küçük T]: Belirtilen ayın kaç gün olduğunu verir. 28-31 arası çıktı verir.
* T [Büyük t]: Üç harfli sunucunun saat dilimi ayarını verir. EST, MDT gibi çıktılar verir.
* U [Büyük u]: UNIX zaman mührüdür. 01.01.1970 tarihinden günümüze kaç saniye geçtiğini verir.
* w [Küçük W]: Başta sıfır olmamak üzere haftanının gününü sayısal değerde verir. 0-6 değerleri arasında çıktı verir.
* y [Küçük Y]: İki rakamlı yıl çıktısı verir. Örneğin 2004 yılının bu formattaki çıktısı 04 olacaktır.
* Y [Büyük y]: Dört rakamlı yıl çıktısını verir. 2004 gibi bir çıktı verecektir. (italik yer alıntıdır)
<?php
$time = time();
echo date("Y-m-d",$time);
?>
Gördüğümüz gibi date() fonksiyonu ile onun alacağı özel parametreler ile istediğimizşekilde yazırabiliriz.Mesela şimdi ekrana tarihi ve saati yazdjıralım yazdıralım.
<?php
$time = time();
echo date("j F Y",$time);
echo "<br>".date("d/m/y, H:i",$time);
?>
Yukarıdaki örnek te gördüğümüz gibi farklı formatlarda,tarihi,saati yazdırıyoruz.
mktime()
Verdiğimiz tarihin hangi güne denk geldiğini bulur.Parametreleri saat-dakika-saniye-ay-gün-yıl şeklinde alır.
<?php
$x = mktime(0,0,0,9,8,2008);
echo date("l", $x);
//bu örnek alıntıdır
?>
ya da şu şekilde de yapabilirdik :
<?php
$dh = mktime(0,0,0,1,1,2005);
echo date("l F Y",$dh);
?>
checkdate()
Verilen tarihin geçerli olup olmadığını kontrol eder.Parametreleri Ay-Gün-Yıl şeklinde alır.
<?php
echo checkdate(4,4,2008)
?>
Yukarıdaki örnekte ekrana 1 yazıldığını görürüz.Bunun sebebi fonksiyonun true döndürmesidir.
11-VERİTABANI İŞLEMLERİ
Şuana kadar php'nin gücünü pek iyi anlayamadık.Ancak asıl olarak veritabanı işlemlerini öğrendikten sonra bu dilin gücünü ve bu dilde yapılabilecekleri kavrayacağız.
Peki veritabanı nedir ? Veritabanını (database) gerekli bilgilerin düzenli bir şekilde tutulduğu ve yeri geldiğinde kullanıldığı veri deposu olarak tanımlayabiliriz.Biz veritabanı olarak mysql kullanacağız.İlk derste de söylediğim gibi wampserver kurarak bilgisayarımıza mysql'de kurmuş olduk.Ancak şu ana kadar onu hiç kullanmadık.Eğer adres çubuğuna localhost/phpmyadmin yazarsanız mysql veritabanı için hazırlanan arayüzü görürsünüz.
Mysql bir veritabanıdır.Eğer wampserver'ın 2.0 sürümünü indirmişseniz (ilk derste verdiğim link) bilgisayarınıza apache 2,mysql 5,php 5 ve phpmyadmin yüklemişiniz demektir.Phpmyadmin,mysql'ü yönetmek için hazırlanmış bir arayüzdür.

Veritabanı işlemi yapmak demek SQL demektir.SQL veritabanları üzerinde işlem yapmamız için tasarlanmış bir dildir.Açılımı Structured Query Language (Yapısal sorgulama dili)'dir.Biz sql ile veritabanları üzerinde kayıt,veri silme,seçme vs. işleri yaparız.
Şu ana kadar sadece php ile çalıştık.Ancak veritabanları ile işlem yapmak için sql'i kullanmak zorundayız.Sql'i php'nin içinde yazarız.SQL php'den tamamen farklı bir dildir.Veritabanları üzerinde işlem yapmak için ASP'de de , C#'da da,JAVA'da da aynı SQL'i kullanırız.
Biz bu bölümde önce mysql'i biraz inceleyeceğiz.Ardından temel sql komutlarını ve php ile veritabanında işlem yapmayı öğreneceğiz inşallah.
MYSQL
Msyql'deki tüm verilerimiz satırlar halinde düzenlenmiş tabloların içinde bulunur.
Aşağıda benim veritabanlarımı görüyorsunuz.Tüm tablolar bu veritabanları içinde bulunur.

Eğer mysql'de daha önceden veritabanı oluşturmamışsanız muhtemel sizde information_schema,mysql gibi yüklemeden gelen bir veritabanı vardır.Neyse biz sadece inceleyeceğiz.Şimdi soldaki veritabanı linklerinden birine tıklayalım.Karşımıza o veritabanı içindeki tablolar gelir.

Neyse şimdilik biz sadece biraz inceleme yaptık.Asıl temel sql komutlarını öğrenmeye başladığımızda mysql'ü anlayacağız.
TEMEL SQL KOMUTLARI
TABLO OLUŞTURMA
Mysql'de tablo oluşturmak için CREAT TABLE komutu kullanılır.Şimdi veritabanı linklerinden birine tıklayın.Yukarıdaki "SQL" sekmesine tıklayın.Karşınıza şöyle bir ekran gelmeli.
Tüm sql komutlarını buraya yazıp çalıştıracağız.

CREATE TABLE komutu mysql'de tablo oluşturmaya yarar.Şimdi aşağıdaki komutu yazıp "Git" dediğimiz de "uyeler" isminde bir tablo oluşturmuş oluruz.
CREATE TABLE uyeler(isim VARCHAR(150),sifre VARCHAR(150));
Burada uyeler isminde,içerisinde iki alan barındıran bir tablo oluşturduk.Şimdi içine gidelim.Soldaki linklerden oluşturduğumuz tablonun ismini seçin.
Bu tabloya eklenen satırlarda da iki alan olacaktır.Bu eklenen satırlarda da isim ve şifreler yer alacaktır.Yani üyelerin isim ve şifrelerini bu tabloya kaydedeceğiz.Satır eklemyi de azs sonra göreceğiz.Peki bu VARCHAR vs. onlar nedir ? VARCHAR mysqldaki veri türlerinden biridir.Aşağıda MYSQL daki veri türlerini görüyorsunuz.
text-yazı
CHAR( ) : sabit 0 - 255 karakter.
VARCHAR( ) : değişken 0 - 255 karakter.
TINYTEXT : En Fazla 255 karakter.
TEXT : En Fazla 65.535 karakter.
BLOB : En Fazla 65.535 karakter.
MEDIUMTEXT : En Fazla 16.777.215 karakter.
MEDIUMBLOB : En Fazla 16.777.215 karakter.
LONGTEXT : En Fazla 4.294.967.295 karakter.
LONGBLOB : En Fazla 4.294.967.295 karakter.
sayı
TINYINT( ) : -128 ,127 yada 0-255 UNSIGNED.
SMALLINT( ) : -32.768 ,32.767 yada 0 – 65.535 UNSIGNED.
MEDIUMINT( ) : -8.388.608 , 8.388.607 yada 0 – 16.777.215 UNSIGNED.
INT( ) : -2.147.483.648 , 2.147.483.647 yada 0 – 4.294.967.295 UNSIGNED.
BIGINT( ) : -9.223.372.036.854.775.808 , 9.223.372.036.854.775.807 yada 0 – 18.446.744.073.709.551.615 UNSIGNED.
FLOAT : Küçük Noktalı sayı.
DOUBLE( , ) : Büyük Noktalı sayı.
DECIMAL( , ) : DOUBLE tipte string şeklinde saklanır.
tarih,saat
DATE : YYYY-MM-DD
DATETIME : YYYY-MM-DD HH:MM:SS
TIMESTAMP : YYYYMMDDHHMMSS
TIME : HH:MM:SS
diğer
ENUM ( ) : Kullanıcı tanımlı liste tipi. Ör; ENUM("e","h")
SET : Küme Tipi. ENUM benzeri. Aynı anda birden fazla kayıt tutabilir. (italik kısım alıntıdırhttp://www.ayhanbaris.c...05/mysql-veri-tipleri/)
Peki bu veri türleri ne işe yarar.Gördüğümüz gibi VARCHAR en fazla 0-255 arasında karakter alan bir türdür.Ve biz uyeler tablosunun isim ve sifre alanlarını bu türde oluşturduk.Ve oluştuturken de ne kadar karakter alacağını yazdık.VARCHAR(150).Zaten en fazla 255 karakter alabilirdi.İşte her sütunun bir veri türü vardır.
Anlamadığınız yerleri ö.m atarak ya da yeni konu açarak sorabilirsiniz.
VERİ EKLEME
Tabloya yeni verileri eklemek için INSERT INTO komutunu kullanırız.Şimdi daha önce oluşturduğumuz üyeler tablomuza bir gidelim.

Resimdeki gibi önce uyeler linkine tıklayalım (kırmızı çember),ardından gözat linkine tıklayalım (yeşil çember) ekrana hiç bir şey yazılmadığını göreceksiniz.Bunun sebebi tablomuza hiç veri eklemememizdir.Şimdi biz bu tabloya yeni bir satır ekleyeceğiz,içinde isim ve şifre yer alacaktır.
INSERT INTO uyeler(isim,sifre) VALUES('admin','abort45');
Bu kodları SQL bölümüne yazıp çalıştırdığınızda tablomuza yeni bir satır eklenmiş olduğunu görürsünüz.

Yukarıda INSERT INTO dan sonra verinin girileceği tabloyu ve verinin girileceği tablonun içindeki alanları yazdık.VALUES ten sonra ise gerekli değerleri yazdık.Kestirme yoldan aşağıdaki gibi de yapabilirdik.
INSERT INTO uyeler VALUES('admin','abort45');
VERİ SEÇMEK
Veritabanında tablo oluşturup veri ekliyoruz peki bu verileri nasıl seçeceğiz ? nasıl seçip ekrana basacağız ? bunun için SQL de SELECT komutunu kullanırız.
SELECT * FROM uyeler;
Yukarıdaki kodu çalıştırdığımızda uyeler tablosundaki verilerin ekrana geldiğini görürüz.
SELECT komutundan sonra kullandığımız yıldız (*) herşey anlamına gelmektedir.Yani tablodaki tüm alanlardaki verileri çek.FROM dan sonra ise de hangi tablodan veri çekileceği gelir.
Yani "uyeler tablosundan tüm alanları çek"
SELECT isim FROM uyeler;
Yukarıdaki kodları çalıştırdığımızda sadece isim alanındaki verilerin ekrana geldiğini görürüz.
Where
Where ile bir koşula bağlı olarak veri seçimi yapabiliriz.Şimdi tablomuza dört tane daha satır ekleyelim.
INSERT INTO uyeler VALUES('root','root');
INSERT INTO uyeler VALUES('abcd','root');
INSERT INTO uyeler VALUES('sago','root');
INSERT INTO uyeler VALUES('mysql','sql');
Yukarıda tablomuza dört yeni veri daha ekledik.Şimdi sadece şifresi "root" olanları çağıralım.
SELECT * FROM uyeler WHERE sifre = 'root';
Yukarıda uyeler tablosundan tüm alanları çekiyoruz ancak sadece sifre alanı root olan satırları.
AND ve OR
Şöyle bir koşul da isteyebilirdik ismi ve şifresi root olanları çek.O halde ne yapacaktık.
SELECT * FROM uyeler WHERE isim = 'root' AND sifre = 'root';
Yukarıdaki kod ile ismi ve şifresi root olan satırı çekiyoruz.Yukarıda ismi ve sifresi root olan satırlar gelecektir.Aşağıdaki ile ismi ya da sifresi root olanları çekebiliriz.
SELECT * FROM uyeler WHERE isim = 'root' OR sifre = 'root';
Yukarıda ise ismi ya da sifresi root olan satırlar gelecektir.
Sıralamak
Verileri çekerken belli bir şeye göre sıralamak isteyebiliriz.ORDER BY bunun için vardır.
SELECT * FROM uyeler ORDER BY isim;
Aynı şekilde alfabetik ya da tersten sıralatabiliriz.Mesela tüm verileri isim tablosunda z den a 'ya sıralatalım.
SELECT * FROM uyeler ORDER BY isim DESC;
A dan Z ye sıralatmak için ASC kullanırız.
SELECT * FROM uyeler ORDER BY isim ASC;
KAYIT SİLMEK
SQL de kayıt silmek için DELETE komutu kullanılır.
DELETE FROM uyeler;
Dikkat edilmesi gereken nokta yukarıdaki komutun tablo içindeki tüm verileri sileceğidir.Örneğin biz sadece sifresi root olanları silmek istiyoruz.
DELETE FROM uyeler WHERE sifre = 'root';
TABLO SİLMEK
Tabloyu DROP TABLE komutu ile silebilirsiniz.
DROP TABLE uyeler;
KAYIT GÜNCELLEME
Diyelim bir kullanıcı ismi olarak admin şifre olarak root girdik,ardından bu şifreyi değiştirmek istedik.Bunu UPDATE komutuyla yapabiliriz.
UPDATE uyeler SET sifre = 'yeniSifre' WHERE isim = 'admin';
Yukarıda isim alanı admin olan üye(ler) in sifre kısmı yeniSifre olacaktır.
PHP İLE VERİTABANI İŞLEMLERİ
Artık php ile mysql de işlem yapmamızın zamanı geldi.Bir php sayfasında veritabanı ile işlem yapabilmek için mutlaka veritabanı bağlantısı ve seçimi yapmış olmamız gerekir.
Bu iş için iki fonksiyon göreceğiz.
mysql_connect() : veritabanı bağlantısı yapar
mysql_select_db() : veritabanı seçimi yapar
şimdi bu fonksiyonların nasıl kullanacağımızı görelim : mysql_connect("vt sunucusu adresi","vt kullanıcı ismi","vt sifresi")
eğer mysql'ün kullanıcı ismi ve şifresini değiştirmemişseniz kullanıcı ismi root olacaktır.Şifre ise olmayacaktır.
mysql_connect("localhost","root","");
Veritabanına bağlandık.
mysql_select("information_schema");
Ve information_schema veritabanını seçtik,bu vt içindeki tüm tablolara erişebiliriz.

PHP İLE VERİTABANINA KAYIT EKLEMEK
<?php
mysql_connect("localhost","root","");
mysql_select_db("ceycey"); //DİKKAT EDİN KENDİ VERİTABANIMI YAZDIM
$sql = "INSERT INTO uyeler VALUES('admin','root')";
mysql_query($sql);
?>
mysql_query() php ile sql dilinde işlemler yapmamızı sağlar.Yani sql kodlarımızı çalıştırır.Yukarıda mysql_query ve sql dili aracılığıyla veritabanımıza kayıt ekliyoruz.
<?php
mysql_connect("localhost","root","");
mysql_select_db("ceycey"); //DİKKAT EDİN KENDİ VERİTABANIMI YAZDIM
$sql = "INSERT INTO uyeler VALUES('admin','root')";
if(mysql_query($sql))
{
echo "kaydınız başarıyla eklendi";
} else {
echo "kaydınız eklenemedi";
}
?>
İşte kayıt eklemek bu kadar kolay.Son olarak iki fonksion daha göreceğiz mysql_fetch_array() ve mysql_num_rows().
mysql_fetch_array() bir sql cümlesine göre o tablodaki verileri ekrana yazdırmamızı sağlar.
<?php
mysql_connect("localhost","root","");
mysql_select_db("ceycey"); //DİKKAT EDİN KENDİ VERİTABANIMI YAZDIM
$sql = "SELECT * FROM uyeler";
$sonuc = mysql_query($sql);
while($diz = mysql_fetch_array($sonuc))
{
echo $diz['isim']."<br>";
echo $diz['sifre'];
}
?>
Bir while dizisi içerisinde isim ve sifre alanlarına sahip uyeler isimli tablomuzdaki verileri rahatça sıraladık.
KAYIT SAYMAK VE BASİT ÜYE GİRİŞİ
mysql_num_rows() verdiğimiz sql cümlesinin veritabanında kaç satıra uygun olup olmadığını sayar diyebiliriz.Bir örnekle daha iyi anlayacaksınız.Şimdi basit bir üye giriş sistemi yapalım.
<?php
if(!$_POST['gnd'])
{
?>
<form action="<?php $_SERVER['PHP_SELF']; ?>" method="POST">
<b>kullanıcı ismi :</b><br />
<input type="text" name="user" /><br /><br />
<b>şifre :</b><br />
<input type="password" name="pass" /><br /><br />
<input type="submit" name="gnd" value="giris">
<?php
} else {
mysql_connect("localhost","root","");
mysql_select_db("ceycey");
$isim = $_POST['user'];
$sifre = $_POST['pass'];
$sql = "SELECT * FROM uyeler WHERE isim = '$isim' AND sifre = '$sifre'";
$sonuc = mysql_query($sql);
if(mysql_num_rows($sonuc)==0)
{
echo "kullanıcı ismi ve şifre yanlış";
} else {
echo "şifre ve isim doğru";
}
}
?>
Veritabanı işlemleri burada bitti.Örnek scriptler bölümünde çeşitli scriptlerle veritabanı işlemlerini daha rahat anlayacaksınız.
Hiç yorum yok:
Yorum Gönder