PHP Dersleri 28: PHP İle Girilen Veriyi Dosyaya Ekleme, Düzeltme,Silme İşlemleri


01.12.2012-19:36 Tarihinde Eklendi.
www.seyfettinkahveci.com Derecelendirme: 10 / 10 Oy Sayısı: 16002822Toplam Puan: 34720 / Yorum Sayısı: 412002822 adet.


Merhaba arkadaşlar sizlere bu yazımda php ile dosyaya ekleme, dosyadaki bir veriyi düzenleme ve dosyadaki bir veriyi silmeyi anlatacağım yani dosyayı bir tür veri tabanı olarak kullanacağız. Şimdi aşağıdaki kodları ve açıklamaları dikkatli bir şekilde inceleyelim.

<?php
if(isset($_POST['gonder'])){//gönder butonuna basıldıysa
	$ad		=$_POST['ad'];//post metoduyla gönderilen veri alınıp değişkene aktarılıyor
	$vize	=$_POST['vize'];//post metoduyla gönderilen veri alınıp değişkene aktarılıyor
	$yaz	=fopen("dosyam.txt","a+");//dosyam.txt sonuna yazma metodnda açılıyor
	fputs($yaz,"$ad\t$vize\n");//açılan dosyanın içerisine \t ile formatlıbir şekilde yazılıyor
	fclose($yaz);//açılan dosya kapatılıyor
}//gönder butonuna basıldıysa sonu
if(isset($_POST['Sil'])){//sil butonuna basıldıysa
	$ID		=$_POST['ID'];//post metoduyla gönderilen veri alınıp değişkene aktarılıyor
	$ac		=fopen("dosyam.txt","r");//dosyam.txt okuma metodunda açılıyor
	$gecici	=fopen("gecici.txt","w");//gecici.txt yazma metodunda açılıyor
	$sayac	=0;//sayac değişneninin ilk değeri 0 yapılıyor
	while(!feof($ac)){//açılan dosyanın sonuna kadar dönülüyor
		$deger=fgets($ac);//açılan dosyadan bir satır okunuyor
	if(in_array($sayac,$ID)==FALSE){//eğer sayac $ID dizisinin içerisinde bulunmuyorsa aşağıdaki işlemler yapılır yani silinecek elemanlar içerisinde yoksa
		fputs($gecici,$deger);//geçicinin içerisine okunan değer yazılıyor
	}//
	$sayac++;//sayacı bir arttır
	}//dosyanın sonuna kadar dönme sonu
	
	fclose($ac);//açılan dosya kapatılıyor
	fclose($gecici);//açılan dosya kapatılıyor
	unlink("dosyam.txt");//dosyam.txt dosyası siliniyor
	rename("gecici.txt","dosyam.txt");//gecici.txt nin adı dosyam.txt olarak değiştiriliyor
}//sil butonuna basıldıysa sonu
if(isset($_POST['kaydet'])){//kaydet butonuna basıldıysa
	$ad		=$_POST['Ad'];//post metoduyla gönderilen veri alınıp değişkene aktarılıyor
	$vize =$_POST['vize'];//post metoduyla gönderilen veri alınıp değişkene aktarılıyor
	$ID		=$_POST['ID'];//post metoduyla gönderilen veri alınıp değişkene aktarılıyor
	$ac=fopen("dosyam.txt","r");//dosyam.txt okuma metodunda açılıyor
	$gecici=fopen("gecici.txt","w");//gecici.txt yazma metodunda açılıyor
	$sayac=0;//sayac değişneninin ilk değeri 0 yapılıyor
	while(!feof($ac)){//açılan dosyanın sonuna kadar dönülüyor
		$deger=fgets($ac);//açılan dosyadan bir satır okunuyor
	if($ID==$sayac){//gelen düzeltilmiş verinin ıdsi ile sayac uyuşuyorsa
		fputs($gecici,"$ad\t$vize\n");//düzeltişmiş veriyi gecici.txt ye formatlı yaz
	}else{//uyuşmuyorsa
		fputs($gecici,$deger);//geçicinin içerisine okunan değer yazılıyor
	}//uyuşmuyorsa sonu
	$sayac++;//sayacı bir arttır
	}//dosyanın sonuna kadar dönme sonu
	
	fclose($ac);//açılan dosya kapatılıyor
	fclose($gecici);//açılan dosya kapatılıyor
	unlink("dosyam.txt");//dosyam.txt dosyası siliniyor
	rename("gecici.txt","dosyam.txt");//gecici.txt nin adı dosyam.txt olarak değiştiriliyor	
}//kaydet butonuna basıldıysa sonu
foreach($_POST as $veri=>$anahtar){//gelen tüm post veriler taranıyor
	if($anahtar=='Duzenle'){//eğer $anahtar duzenle ise
		$ac=fopen("dosyam.txt","r");//dosyayı okuma modunda aç
		$sayac=0;//sayaç değişkeninin ilk değeri 0
		while(!feof($ac)){//dosyanın sonuna kadar dönülüyor
			$okunan=fgets($ac);//açılan dosyadan 1 satır okunuyor
			if($veri==$sayac){//sayac ile gelen veri değeri eşit ise
			$parcala=explode("\t",$okunan);//okunan değeri formatlı yazdırdığımız şekilde yani \t ile parçalara ayırıyoruz
				echo "<form action='' method='POST'>AD:<input type= 'text'  name='Ad'  value=\"$parcala[0]\"/><br/>
				vize:<input type= text  name='vize'  value=\"$parcala[1]\"/><br/>
				<input type= 'hidden'  name='ID'  value='$sayac' />
				<input type= 'submit'  name= 'kaydet'  value='Kaydet' />				
				</form>";//ekrana verileri düzenleyebileceğimiz tablo konuluyor
			}//sayac ile gelen veri değeri eşit ise sonu
			$sayac++;//sayac 1 arttırılıyor
		}		//dosyanın sonuna kadar dön sonu
	
	fclose($ac);//açılan dosya kapatılıyor
	}//eğer $anahtar duzenle ise sonu
}//gelen tüm post veriler taranıyor sonu
if(file_exists("dosyam.txt")){//dosyam.txt var ise 
	$ac=fopen("dosyam.txt","r");//dosyam.txt okuma modunda açılıyor
	echo "<form action='' method= 'POST' ><table border= '2' >";//bir form açılıyor ve ekrana 2 pixel çizgi genişliğine sahip tablo açılıyor
	echo "<tr><th> Ad</th><th>Vize</th><th><input type= 'submit'  name= 'Sil'  value= 'Sil'/></th><th>Duzelt</th></tr>";//başlıklar atılıyor
	$sayac=0;//sayac değişkeninin ilk değeri 0 yapılıyor
	while(!feof($ac)){//dosyanın sonuna kadar dönülüyor
		$okunan=fgets($ac);//dosyadan tek satır okunuyor
		if(empty($okunan))continue;//okunan değer boş ise aşağıdaki işlemleri yapmadan while a dön
		$parcalanan=explode("\t",$okunan);//verileri \t ile parçalıyor
		echo "<tr>";//satır açılıyor
		foreach($parcalanan as $veri){//parçalanan değerin sonuna kadar dönülüyor
			echo "<td>$veri</td>";//veri ekrana yazdırılıyor
		}//parçalanan değerin sonuna kadar dönülüyor sonu
		echo "<td><input type='checkbox'  name= \"ID[]\"  value='$sayac' /></td><td><input type='submit'  name='$sayac'  value='Duzenle' /></td></tr>";//düzenle butonu konuluyor
		$sayac++;//sayac arttırılıyor
	}
	echo "</table></form>";//tablo ve form kapatılıyor
	fclose($ac);//açılan dosya kapatılıyor
}//dosyam.txt var ise sonu
?>
<form action="" method="POST">
ad:<input type="text" name="ad"/><br/>
vize:<input type="text" name="vize"/><br/>
<input type="submit" name="gonder" value="Dosyaya Ekle"/>
</form>

Kodların açıklamalarında her bir kodun ne işe yaradığını anlattım fakat anlamadığınız bir yer veya karşılaştığınız problem varsa yorum ekle bölümünden yazın en kısa sürede cevaplamaya çalışırım.İyi çalışmalar.

Seyfettin KAHVECİ
Balıkesir Üniversitesi
NEF-BOTE



Yazının tamamının kopyalanması yasaktır. En baştaki birkaç paragrafı kopyalayıp, yazıya link verebilirsiniz. Aksi durumda uyarılmaksızın yasal yollara gidilecektir.

Yorum Ekle

Ad Soyad:
Şehir:
Yorum:
Yorumlar
Bu makale için henüz hiç yorum yapılmamış.
Unutmayın Makalelere Yorum Yazmak Yeni Makalelere Teşviktir.