Mini Php Örnekleri -2

Varsayalım elinizde bir *.txt dosyası var ve bu dosyanın içerisinde şu şekilde sıralı bilgiler olsun :

55, Data 1, Data 2, Data 3, Data 4, Data 5

Benim gibi bu işe yeni başlayıp kendi algortimasını çıkarmak isteyenler için bu tür konular çok güzel kılavuz olabiliyor

Senaryoya devam ediyoruz, yukarıda virgül ile sıralanmış ve txt dosyası içinde bulunan bilgileri, başka bir txt dosyasının içerisinde yine virgül ile ayrılmış başka bir bilgiyle karşılaştırmamız gerekiyor.Bu iki datayı karşılaştırıp ortaya çıkan sonucu ekrana dökelim.

Ancak benim esas söylemek istediğim şey, aynı satırda bir çok virgül ile ayrılmış dataları data sayısı kadar değişken belirlemeden nasıl alacağımız ve sorguya dahil edip işleyeceğimiz.

$satirlar = file('alinan.txt');
foreach($satirlar as $satir)
{
list ( $ogrenciID, $dersler ) = explode (',',$satir);
if ($ogrenciID == $ogrenciNo)
{
$parcala = explode(',', $dersler);
for ($i=0;$i < count($parcala);$i++)
{
$bol = explode (',', $parcala[$i]);
$dersSatirlar = file('dersler.txt');
foreach ($dersSatirlar as $dersSatir )
{
list ( $dersID, $ders ) = explode (',',$dersSatir);
if ($bol[0]==$dersID)
{
echo "$bol[0]";
echo "$ders [Bu Dersi Sil] ";
}
}
$dersAdet++;
}
}
}
$dersAdet = $dersAdet - 2;
echo "Ders Ekle -[]- Ana Menü ";
echo "$dersAdet adet kayıt bulundu.";

Yazıya devam etmeden önce tekrar etmekte fayda var, bu yazıda bahsi geçen algoritmanın basit yolları olabilir ki vardır.Bu iş böyle yapılır diye bir iddiam yok.

Php diline az çok aşina olanlar konuyu hemen anlayacaklardır ama yine de bazı ufak tefek konulardan bahsetmekte yarar var.2 tane txt dosyası var açılan ve bunların ilkinde alınan dersler mevcut.Şöyle ki :

Alınan Dersler :

55, Ders Kodu 1,Ders Kodu 2,Ders Kodu 3,Ders Kodu 4,Ders Kodu 5
56, Ders Kodu 1, Ders Kodu 5, Ders Kodu 12, Ders Kodu 40

İlk blok yani 55,56 diye devam eden blok öğrenci numarasını, diğerleri ise aldığı dersi ifade ediyor.2 txt dosyasında ise derslerin kodları ve adları var.O da şu şekilde girilmiş :

Ders Listesi :

Ders Kodu 1, Ders Adı
Ders Kodu 2, Ders Adı
Ders Kodu 3, Ders Adı
Ders Kodu 4, Ders Adı
Ders Kodu 5, Ders Adı

Bu kodun tamamı çalıştırıldığında alınan derslerin 2.sutunu ile ders listesinin ilk sütunu karşılaştırılıyor ve sonucunda şöyle bir çıktı alınıyor :

Fatma Tüter ( Öğrenci No : 160 ) adlı öğrencinin aldığı dersler
Ders Kodu Ders Adı Sil
ATA101 Inklap Tarihi [Bu Dersi Sil]
BILM309 Bilgisayar Programlama [Bu Dersi Sil]
BILM348 Programlama ve Algoritmalar [Bu Dersi Sil]
MATE329 Olasılık ve İstatistik [Bu Dersi Sil]
MATE445 Algoritma Analizleri [Bu Dersi Sil]
Ders Ekle-[]-Ana Menü
5 adet ders bulundu.

Bu çıktının detayları konumuzu ilgilendirmiyor, o yüzden esas konuya dönelim.

SPONSOR REKLAMLARI

Alınan Dersler :
55, Ders Kodu 1,Ders Kodu 2,Ders Kodu 3,Ders Kodu 4,Ders Kodu 5

verilerine göre siz eğer virgül sonrası değerlerin kaç tane olduğunu biliyorsanız yani burda ki gibi 6 tane data varsa o zaman şunu yapabilirsiniz :

foreach($satirlar as $satir)
{
list ( $ogrenciID, $ders1, $ders2, $ders3, $ders4, $ders5,  ) = explode (',',$satir);
}

Peki ya belli olmayan sütun bilgileri varsa ve bu daha da uzayıp gidiyorsa ? Benim buna kendimce bulabildiğim çözüm aşağıda ki kodlar ve yine söylüyorum aslında daha kolay bir yolu illa ki vardır :

$satirlar = file('alinan.txt');
	foreach($satirlar as $satir)
	{
		list ( $ogrenciID, $dersler ) = explode (',',$satir);
		if ($ogrenciID == $ogrenciNo)
		{
		$parcala = explode(',', $dersler);
		for ($i=0;$i < count($parcala);$i++)
		{
			$bol = explode (',', $parcala[$i]);
		}

Düz mantık, $parcala stringini tekrar parçalıyor ve $bol içerisine alıyoruz. Böylece $dersler değişkenine " Ders Kodu 1,Ders Kodu 2,Ders Kodu 3,Ders Kodu 4,Ders Kodu 5 " olarak atılmış string parçalanmış oluyor ve $bol dizisi içinden tek tek çıkararak sorgumuzu tamamlamış oluyoruz.

Hepsi bu kadar.

Yorum Yaz ( Türkçe gramer ve imla kurallarına uymayan yorumlar yayınlanmaz. )