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ü | ||
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.