Basit veritabanı uygulamaları yapmak, web sitesi ziyaret logları oluşturmak, basit ziyaretçi defteri yapmak için dosya işlemlerini kullanabilirsiniz.
Konular
Dosyalarla çalışmak için öncelikle dosyanın açılması gerekmektedir.
$f=fopen(“dosyayolu/dosyaadi.uznt”,$acmasekli);
$acmasekli, fopen fonksiyonun dosya erişiminde kullanacağı yöntemi belirler.
Dosya okuma için açıldıktan sonra, fread komutu yardımı ile, dosyadan okuma işlemi gerçekleştirilir. fread komutu okuduğu verileri eşitlendiği değişkene aktararak kullanıma sunar,. Bu veriler üzerinde istenilen işlemler gerçekleştirilebilir.
Kullanımı:
$f=fopen(“dosyayolu”,”r”);
$fs=filesize($f); //Dosya Boyutunu bu şekilde öğrenebiliriz.
$okunan=fread($f,$fs);
fread komutu iki parametre alır; Birinci parametre açılan dosya tutucusudur ($f), İkinci parametre, okunacak olan veri miktarını byte türünde belirler. Dosyanın tamamını okumak yerine, belirli bir miktarını okuma imkanı sağlar. Dosyanın tamamının okunabilmesi için filesize($f) komutu ile açmış olduğumuz dosyanın boyutunu öğrenebiliriz.
İşimiz bittikten sonra açmış olduğumuz dosyayı kapatmayı unutmayalım.
Dosyaya veri yazmak için öncelikle dosyamızı yazılabilir şekilde açmamız gerekmektedir. Daha sonra dosyaya yazmak istediğimiz veriyi fwrite komutu ile dosyaya aktarabiliriz.
Kullanımı:
$f=fopen(“dosyayolu”,”w”); veya $f=fopen(“dosyayolu”,”a”)
fwrite($f,$veri);
fwrite komutu iki parametre alır; birinci parametre açılan dosya tutucusudur ($f), ikinci parametre ise dosyaya yazılacak olan veriyi içerir ($veri).
Burada dikkat edilmesi gerekn nokta, dosyayı açarken kullanacağımız açma türüdür. w türünde açılan dosyalara yeni bir veri yazıldığı zaman eski veriler silinecektir. a türünde açılan dosyalara yeni veri yazıldığında; yazılan yeni veri eski verinin sonuna eklenir.
İpucu: Log kayıtları gibi verileri dosyaya yazarken a (sonuna ekleme) türünde, Sayaç gibi yenilenen veriler kullanılacaksa w (üzerine yazma) türünde açmak aha faydalı olacaktır.
Dosya okuma işlemi yapmadan önce dosyanın varlığını kontrol etmek, yapılması gereken en önemli işlerdendir. Bunun için; file_exists fonksiyonu kullanılır.
Kullanımı:
if(file_exists(“dosyayolu”))
echo “Dosya var”;
else
echo “Dosya bulunamadı”;
file_exists fonksiyonu sadece dosya yolunu parametre olarak alır. Eğer dosya var ise; Doğru (true), dosya yok veya ulaşılamaz ise Yanlış (false) değerini döndürür.
Dosyanın varlığı doğrulandıktan sonra, dosyanın okunabilir mi, yazılabilir mi olduğunu öğrenmemiz gerekiyor. Bunun için is_readable (okunabilir mi), is_writable (yazılabilir mi) fonksiyonları kullanılabilir.
is_readable: Dosya yetkileri kontrol edilerek, dosyayı okuma iznimiz olup olmadığı kontrol edilebilir. Eğer dosyayı okuma iznimiz var ise; Doğru (true), yoksa Yanlış (false) sonucu döndürülür.
is_writable: Dosya yetkileri kontrol edilerek, dosyaya yazma iznimiz olup olmadığı kontrol edilebilir. Eğer dosyaya yazma iznimiz var ise; Doğru (true), yoksa Yanlış (false) sonucu döndürülür.
Örnek:
$dosya=”deneme.txt”;
if(file_exists($dosya))
{
if(is_writable($dosya))
{
$f=fopen($dosya,”a”);
fwrite($f,”\nYeni Eklenen Veri”);
fclose($f);
echo “Veri dosyaya yazıldı”;
}
else if(is_readable($dosya))
{
$f=fopen($dosya,”r”);
$v=fread($f,”1000″);
fclose($f);
echo “Dosyadan okunan veri: “.$v;
}
else
echo “Dosyayı okuma/yazma iznimiz bulunmamaktadır.”;
}
fseek komutu, fopen ile açılan bir dosya içerisinde bulunulan konumdan istenilen başka bir konuma gitmeyi sağlar. Dosyadan veri okunduktan sonra, işaretçi yerinin değiştirilmesi için kullanılır.
Kullanımı:
fread($f,2600);
fseek($f,2790); //2600. baytta yer alan işaretçinin 2790. bayta ilerlemesini sağlar.
fseek($f,0); //2790. baytta yer alan işaretçinin dosya başına konumlandırılmasını sağlar.
PHP’de bir dosya ile işlem yapabilmek için dosyayı açmamız gerektiğini söylemiştik. Dosyayı açma işlemi bu dosyayı diğer paylaşımcıların erişimine karşı kilitleyeceği için kullanımımız sona erdikten sonra dosyayı kapatmamız gerekmektedir. Bunun için fclose komutunu kullanmalıyız.
Kullanım:
$f=fopen(“dosyayolu”,”r”);
fclose($f);
touch: Bir dosyanın son erişim zamanının ayarlanmasını sağlar. Olmayan bir dosyanın oluşturulmasını sağlar. bool touch($dosyayolu);
unlink: Dosya silme işlemi yapar. bool unlink($dosyayolu);
file_get_contents: Dosya içeriğinin tamamını bir dizgiye aktarmayı sağlar. $veri=file_get_content($f);
]]>Döngüler, genel olarak; bir başlangıç değeri, bir artım kodu ve bir koşul ile birlikte çalışırlar.
Başlangıç Değeri; döngü başlamadan önce kontrol edilecek olan değişkene değer atama işlemidir.
Artım Kodu; döngü içerisinde, işlemlerin kaç defa tekrarlandığının hesaplanmasını sağlamak için Başlangıç Değeri atanan değişkeninin değerini arttırma veya azaltma işlemidir.
Koşul; değeri sürekli değiştirilen kontrol değişkeninin, belirtilen koşullara uyup uymadığını kontrol etme işlemidir. Koşul bölümü için; Boolean türünde bir değer kullanılabileceği gibi, 0 veya 1 sayıları da kullanılabilir.
PHP’de kullanılan döngüler;
FOR döngüsü, belirtilen bir başlangıç değerinin, belirli düzeylerde arttırılması ile bitiş değerine ulaşana kadar kodların tekrarlanmasını sağlayan döngü yapısıdır.
FOR(başlangıç_değeri;koşul;artım_değeri) {
yapılacak_işlemler;
}
FOR($sayac=0;$sayac<$son;$sayac++)
{
//yapılacak olan işlem(ler);
//Eğer tek bir komut verilecekse; bloklama işareti olan {, } işaretleri kullanılmayabilir.
}
For döngüsü doğru planlandığında tam olarak istenilen sayıda tekrar yapar. En sık kullanılan döngü türüdür.
Örnek:
//1’den 10’a kadar olan sayıları yazan döngü
for($i=1;$i<=10;$i++)
{
echo “Şu anki değer: $i<br>”;
}
//10’dan 1’e kadar olan sayıları yazan döngü
for($i=10;$i>0;$i–)
{
echo “Şu anki değer: $i<br>”;
}
//Sonsuz döngü
for($i=0;;$i++)
{
echo “Şu anki değer: $i<br>”;
}//Burada koşul belirtmediğimiz için döngümüz sonsuza kadar devam edecektir.
DO…WHILE döngüsü, PHP döngüleri arasında en az bir defa çalışan tek döngüdür. DO deyiminden sonraki blok içerisine yazılan kod, en az bir defa çalıştırıldıktan sonra WHILE ile koşul kontrolü yapılır ve eğer koşul doğru ise döngü tekrar çalıştırılır.
başlangıç_değeri;
DO
{
//yapılacak olan işlemler
artım_değeri;
}WHILE(koşul);
Örnek:
$i=0;
do
{
echo “Şu anki değer: $i<br>”;
$i++;
} while($i<10);
WHILE döngüsü, FOR döngüsü gibi çalışır, yalnız başlangıç değeri döngüye girilmeden önce; artım değeri döngü içerisinde, komutların sonuna; bitiş değeri ise koşul bölümüne yazılır.
başlangıç_değeri;
WHILE(koşul)
{
yapılacak_işlemler;
artım_değeri;
}
Örnek:
]]>$i=0;
while($i<10)
{
echo “Şu anki değer: $i<br>”;
$i++
}
Uzun bir aradan sonra PHP derslerimize devam ediyoruz. Bir önceki konumuz Değişkenler idi. Bu derste, Karar Yapılarını anlatmaya çalışacağım. Karar yapıları, program sürecinde, değişkenlerin değerlerini veya kullanıcı tarafından girilen verileri kontrol ederek, bunun sonucuna göre işlem yapabilmemizi sağlayan yapılardır.
PHP’de kullanılan karar yapıları:
yapılarıdır.
IF…ELSE yapısı Türkçe’de Eğer cümlesine tekabül etmektedir.
Kullanım Şekilleri:
IF…ELSE yapısı yukarıda da görüldüğü gibi farklı şekillerde kullanılabilir. IF…ELSE yapısında kullanılan koşullar birbiri ile bağlantılı olmak zorunda değildir. Her bir IF cümleciğinde, farklı bir koşul kullanılarak birbirinden bağımsız durumları tek bir IF…ELSE yapısında birleştirmemiz mümkündür.
Örnek verecek olursak;
$sayi=12;
if($sayi>10) echo “sayınız 10 değerinden büyüktür”;
$sayi=12;
if($sayi>=10) echo “sayınız 10 değerinden büyüktür veya 10 değerine eşittir.”;
else if($sayi%2==1) echo “sayınız tek sayıdır.”;
else echo “seçtiğiniz sayı 10 değerinden küçük bir çift sayıdır.”;
SWITCH…CASE yapısı; IF…ELSE ‘in aksine sadece tek bir değişkenin farklı değerlere eşit olup olmadığını kontrol edebilmeyi sağlar.
SWITCH (DEĞİŞKEN)
{
case DEĞER1: Değişkenin değeri Değer1’e eşitse, yapılacak olan işlemler; break;
/*
break komutu yapılacak işlemlerin sonlandırılmasını sağlar. Sonlandırma işlemi yapılmazsa, diğer değerlerin doğruluğuna bakılmaksızın, break komutu bulunana kadar tüm işlemleri gerçekleştirir.
*/
case DEĞER2: Değişkenin değeri Değer2’ye eşitse, yapılacak olan işlemler; break;
default: Değişkenin değeri üstte belirtilmemişse, yapılacak olan işlemler;
/*
default bölümü için break komutu kullanılmaz.
*/
}
]]>switch($yas)
{
case 7: echo “Okula başladınız.”; break;
case 18: echo “Artık bir yetişkinsiniz. Oy kullanabilirsiniz.”; break;
case 21: echo “Askerlik çağınız geldi.”; break;
case 25: echo “Milletvekili seçilme yaşına eriştiniz.”; break;
case 65: echo “Emeklilik yaşınız da gelmiş.”; break;
default: echo “Hiçbiri değilse bu komut çalıştırılır.”;
}