Elma Doktoru

iPhone, iPod iPad Teknik Servisi

Çar23052012

Son Güncelleme18:39:01

Geri Web Php & Dersler PHP 45 - Dosyadan Veri Okuma

PHP 45 - Dosyadan Veri Okuma

Kullanıcı Değerlendirmesi: / 0
ZayıfMükemmel 

Dosyanın okunabilirliğini ve yazılabilirliğini öğrendikten sonra şimdi geldik esas konuya. PHP'de bir dosyadan veriyi nasıl okuyacağız ? Öncelikle bu işlemin veritabanından veri okumayla aynı mantığa sahip olduğunu bilmenizi isterim. Yani 3 aşamada : Dosyaya bağlan , Veriyi oku veya yaz, Bağlantıyı sonlandır. Veritabanında da bu 3 basamak aynı mantıkla işler. Basamakları izleyerek gidelim. Öncelikle dosyaya bağlanma işlemini nasıl yapacağız buna göz atalım. Dosyaya bağlanırken fopen komutunu kullanıyoruz. Fakat bu komutu diğerlerinden ayıran özellik ise fopen komutunun birkaç tane parametresi olması. Bu parametreler ise şöyle :

r : Dosyayı sadece okumak için açıyoruz.
r+ : Dosyayı hem okumak hem yazmak için açıyoruz.
W : Dosya sadece yazmak için açılıyor. Burda dikkat etmemiz gereken şey ise : w parametresini kullandığımızda dosya yazmak için açılıyor ve varolan veriler siliniyor yeni yazdıklarımız oluşturuluyor. Dosya yoksa yeni dosya açılıyor.
W+ : w parametresi ile aynı özelliklere sahip, tek farkı dosya aynı zamanda okunabilir de.
a : Dosya yazmak için açılır. w parametresinden farkı veriler silinmez ve imleç dosya sonundadır ekleme yapılabilir.
a+ : Dosya hem okumak hem yazmak için açılır. Dosyanın sonundan yazma işlemi devam eder. Dosya yoksa dosya açılır.

Fopen komutunun parametreleri bunlar. Şimdi ise dosyaya bağlanıp veri okuyalım. Dosyadan veriyi okumak için 3 adet foksiyon kullanabiliriz. Bunlar : fgets, feof ve fread. Bu fonksiyonlardan herhangi birini kullanabilirsiniz. Farklı özellikleri var ve bunlara birazdan kod içinde değineceğiz. Dosya ile bağlantıyı sonlandırmak içinde fclose komutunu kullanacağız. Biz derslerimizde fread ve fgets'ten birini kullanıyor olacağız. Şimdi ise dosyaya bağlanıp veriyi nasıl okuyacağımızı kodlarla beraber görelim.

<?
$baglan = fopen ( "yenidosya.txt", "r" );
echo fread ($baglan, 1024);
fclose ( $baglan );
?>

Buradaki kodları okuyalım. $baglan değişkenine fopen ile kurulmuş bağlantıyı atıyoruz. Sonra "r" parametresini tercih ediyoruz. Çünkü dosyayı sadece okuyacağız. fread komutu ile veriyi okuyoruz ve 1 kb veri okuyacağımızı belirtiyoruz. echo ile ekrana yazdırıyoruz. Açılan her bağlantının kapatılması gerekiyor ve fclose ile de bu işlemi yapıyoruz.

Kodları tarayıcıda görmek için yenidosya.txt içine de bir iki veri girdikten sonra ne girdiğinizi tarayıcıda görüyor durumda olacağız.

Burada ufak bir noktaya değinmek gerekiyor. Biz fread komutu ile içeriği okurken ne kadar okuyacağımızı belirttik. Fread komutunun böyle bir dezavantajı var, dosyanın tamamını fread ile okuyamıyoruz. Bunun için feof komutunu kullanmamız gerekiyor. Biraz önceki kodlara feof ekleyerek dosyayı sonuna kadar nasıl okuyabileceğimizi görelim.

<?
$baglan = fopen ( "yenidosya.txt", "r" );
while (!feof ($baglan)) {
echo fread ($baglan, 1024);
}
fclose ( $baglan );
?>

Kodlarda da gördüğümüz gibi 3. satıra feof komutunu yerleştirdik ve dosyayı sonuna kadar okumasını söyledik. While döngüsünü hatırlayacaksınız. Burada yaptığımız işlem de sıralanmış döngü ile dosyayı sonuna kadar okuma işlemidir. Bağlantı kapatma konusu da çok önemli. Açılan her bağlantı kapatılmazsa bellekte yer kaplayacak ve problem oluşturacaktır.

Okuma komutlarından 3. sü ile alakalı bilgi verip dersimizin sonlarına gelelim. Fgets i diğerlerinden ayıran özellik ise şu ; verileri satır satır okuması. Aynı kodlarda değişiklik yapalım ve fgets komutunu kullanalım.

<?
$baglan = fopen ( "yenidosya.txt", "r" );
while (!feof ($baglan)) {
echo fgets ($baglan);
echo "<br>";
}
fclose ( $baglan );
?>

Yine while komutu ile devam ediyoruz. Ve dosyamızı çağırdığımızda ise yazdığımız verileri satır satır şekilde göreceğiz. <br> tagını da satır satır olması için kullandık.

Şimdi içinizden diyorsunuzdur dosya büyüklüğüne göre sürekli komut değiştireceksek ya dosya sürekli veri yenileyebilecek bir dosya ise ne yapacağız ? Evet bunun da bir çözümü var : Fpassthru. Bu komutla varolan bir bağlantıdan dosyaya erişebilir ve tüm içeriği okuyabiliriz. Fakat bağlantı kapatmayı yine unutmayın. Şimdi kodlarla bu komutu da görelim.

<?
$baglan = fopen ( "yenidosya.txt", "r" );
fpassthru ($baglan);
fclose ($baglan);
?>

Bu kısımda ise 2. satırda fpassthru ile bağlantıyı tek kodla görüyor, okuyor ve ekrana yazdırıyoruz. Çok basit değil mi ? Şimdi yazının sorunda size bir süpriz yapalım. Tüm bu kodlar içinde en basit ve komut kapatma sıkıntısı olmayan bir komut var. Kullanımı da oldukça kolay : readfile. Kodlar içinde görelim.

<?
readfile ("yenidosya.txt");
?>

İşte bu kadar :) Dosyaya bağlanıyor ve veriyi okuyoruz. Hepsi bu kadar. Fakat fopen parametrelerini kullanacaksak üstteki komutlar geçerlidir. Bu sadece en kısa yoldan dosya okuma yöntemidir ve sadece okuma işleminde kullanılması tavsiye edilir.

Bir sonraki dersimizde ise dosyaya veri nasıl kaydedilir konusundan bahsedeceğiz. Görüşmek üzere. ( readfile iyiydi ama  ) :)

Yorum ekle


Güvenlik kodu
Yenile

Joomla 1.5 Kolay Kullanım Rehberi

Joomla 1.5 Rehberi

Joomla 1.5'i öğrenmek hiç bu kadar kolay olmamıştı

Hiç bir kodlama bilgisine sahip olmaksızın kendi kişisel yahut kurumsal websitenizi yapmak için size lazım olan Joomla! ve Joomla 1.5 Rehberi