Eski 04-04-04, 14:59 #41
the_alorak the_alorak çevrimdışı
Varsayılan Cvp: PHP - Notlar && Dersler

Selam, evet bu sadece bir kısmı ve sadece 1 form alanlı bir kod.Benim sormak istediğim, form alanı kodu yazılmış, ama herhangi bir Sql içeren komut yok.
Benim asıl yapmak istediğim şu;

Şimdi java scriptlerle, üstten bir şey seçiyorsun drop menu ona göre başka bir drop menude üstten seçtiğin her farklı seçenek için farklı bir şey seçiliyor.Ve bu şeçtiğimiz için yan tarafta 10 tane filan boş form alanı olacak.Bu form alanlarının isimleri ilk seçtiğimiz ve 2. seçtiğimizle bağıntılı olacak.Ve bu sayfa birden fazla kullanılacak.Bu formlara yazdığımız kodu çok kolay bir şekilde ismini vererek istediğim yere koymalıyım.
Yeterince açık olamadım heralde o yüzden bir örnek veriyim.

A ve B takımı var diyelim, A'yı seçersen A1, A2, A3... gibi şeyler çıkacak.Ve 2. menuden de bir yeri seçti mi> sonraki 10 boşluğun sqldaki id numarası: AA101 gibi bir numara olacak.Bunu gönder dedikten sonra başka zaman, yine aynı işlemleri yaparak, AA102 yani 01-02 gibi kendinden numaralansın.Ama tabi formun içeriği tamamen bana kalsın.Boş kutulara yazılan şeyleri ben ayarlayabiliyim.

Umarım anlatabilmişimdir.
  Alıntı Yaparak CevaplaAlıntı Yaparak Cevapla
Eski 04-04-04, 19:27 #42
Felix Felix çevrimdışı
Varsayılan Cvp: PHP - Notlar && Dersler

the_alorak sana söylediğin şeyin olamayacağını açıklayim...
bir form alanında zaten sql komutu olmaz, burdan gelecek veriyi işleyen alanda bulunur bu komut. Ayrıca burada yapılan olay, php-nuke, dil dosylarının bulunduğu klasörden dosyları açıyor ve de bunları listeliyor.
echo "<option value=\"$languageslist[$i]\" ";
if($languageslist[$i]==strtolower($currentlang)) echo "selected";
echo ">$languageslist[$i]</option>\n";
burada gördüğün gibi, drop menünün, optionlarının değerleri elle girilmemiş bunlar otomatik olarak dosyadan okunuyor...
Ancak şu şekilde olabilir: Php-nuke bu değerleri bir düzene göre veriyordur. Senin bu değerleri bilmen gerekli...
  Alıntı Yaparak CevaplaAlıntı Yaparak Cevapla
Eski 06-04-04, 03:47 #43
RestarT RestarT çevrimdışı
Varsayılan Cvp: PHP - Notlar && Dersler

Tarih İşlemleri // Yeni başlayanlar
  • date(); Fonksiyonu
  • checkdate(); Fonksiyonu
  • mktime(); Fonksiyonu
  • getdate(); Fonksiyonu
  • time(); Fonksiyonu
  • gettimeofday(); Fonksiyonu
Bu makalede PHP dilinde tarih ve zaman ile ilgili genel kavramları ele alacağız. Sırasıyla yukarıda yazan tüm fonksiyonları işleyeceğiz.

date(); Fonksiyonu

Bu fonksiyonla PHP`den saat ve tarih bilgilerini alırız. İçerisine oldukça fazla parametre alabilmektedir. Tüm parametreleri ve açıklamalarını aşağıda görebilirsiniz.
  • a [Küçük A]: am veya pm şeklinde çıktı verir.
  • A [Büyük a]: AM veya PM şeklinde çıktı verir.
  • d [Küçük D]: Ayın içinde hangi günde olduğunuzu başta sıfır olmak üzere 01 gibi bir formatta verir.
  • D [Büyük d]: Üç harfli gün adını verir.
  • F [Büyük f]: Ayın tam adını ingilizce olarak verir. June gibi bir çıktı verecektir.
  • g [Küçük G]: Başta sıfır olmamak üzere 12 saat formatında saati verir. 1-12 arasında çıktı verir.
  • G [Büyük g]: Başta sıfır olmamak üzere 24 saat formatında saati verir. 1-23 arasında çıktı verir.
  • h [Küçük H]: Başta sıfır olmak üzere 12 saat formatında saati verir. 01-12 arasında çıktı verir.
  • H [Büyük h]: Başta sıfır olmak üzere 24 saat formatında saati verir. 01-23 arasında çıktı verir.
  • i [Küçük I]: Dakika bilgisini 00 ve 59 arasında verir.
  • j [Küçük J]: Başta sıfır olmadan ayın içinde hangi günde olduğunuzu verir. 1-31 arasında çıktı verir.
  • l [Küçük L]: Günün tam adını ingilizce olarak verir. Sunday gibi bir çıktı verir.
  • L [Büyük l]: Artık yıl için kullanılır. Eğer tarih artık yıl içerisinde ise true, değilse false olarak işler.
  • m [Küçük M]: Başta sıfır olmak üzere 01-12 arasında yılın içerisindeki ayın sayısını verir.
  • M [Büyük m]: Üç harfli ay adını verir.
  • n [Küçük N]: Başta sıfır olmamak üzere 1-12 arasında yılın içerisindeki ayın sayısını verir.
  • s [Küçük S]: Başta sıfır olmak üzere 0-59 arasında saniye değerini verir.
  • S [Büyük s]: İngilizce`de “nci” anlamına gelen st, nd, rd, th değerlerinin çıktısını, ardından geldiği sayının değerine göre verir.
  • t [Küçük T]: Belirtilen ayın kaç gün olduğunu verir. 28-31 arası çıktı verir.
  • T [Büyük t]: Üç harfli sunucunun saat dilimi ayarını verir. EST, MDT gibi çıktılar verir.
  • U [Büyük u]: UNIX zaman mührüdür. 01.01.1970 tarihinden günümüze kaç saniye geçtiğini verir.
  • w [Küçük W]: Başta sıfır olmamak üzere haftanının gününü sayısal değerde verir. 0-6 değerleri arasında çıktı verir.
  • y [Küçük Y]: İki rakamlı yıl çıktısı verir. Örneğin 2004 yılının bu formattaki çıktısı 04 olacaktır.
  • Y [Büyük y]: Dört rakamlı yıl çıktısını verir. 2004 gibi bir çıktı verecektir.
  • z [Küçük Z]: Yılın hangi gününde olduğumuzu verir. 0-365 arasında bir çıktı verecektir.
Şimdi bu fonksiyonun yukarıdaki parametreleri alarak nasıl kullanıldığına ilişkin bir örnek yapıp geçelim.

Kod:
<?php
echo date(“d.m.Y”);
?>
Yukarıdaki örneğin çıktısı bugün için "03.04.2004" olacaktır. Zaten tüm parametreleri yukarıdaki örneğe
uyarlayıp kullanabileceğiniz için uzun uzun her birine örnek vermenin anlamı yok.

checkdate(); Fonksiyonu

Bu fonksiyon ile verilen tarihin geçerliliği tespit edilir. Eğer verilen şekilde bir tarih varsa sonuç true (1), yoksa false (0) olarak döner. Yazılışı;

checkdate(ay, gün, yıl);

Ay numarası yazarken 01, 02 gibi kullanım yerine 1, 2 gibi başta sıfır olmadan yazmalısınız.

Kod:
<?php
# Çıktısı: 1 olacaktır. Çünkü böyle bir tarih mevcuttur.
echo checkdate(8, 22, 1988);
?>
mktime(); Fonksiyonu

Genellikle takvim ve benzeri uygulamalarda geçmiş bir tarihi, yahut ileri bir tarihi hesaplamamız ve tespit etmemiz gerekebilir. PHP içerisinde bunu yapmak için mktime(); kullanılır. Bu fonksiyon ile geçmiş yahut gelecek bir tarihin hangi güne denk geldiği vs. bulunabilir.

Yazım şekli;

mktime(saat, dakika, saniye, ay, gün, yıl);

Aşağıdaki örneği incelerseniz kullanımı hakkında bilgi edinebilirsiniz. Aşağıda, girilen tarihin hangi güne denk geldiğini buluyoruz.

Kod:
<?php

# Zaman belirtiyoruz.
$x = mktime(0, 0, 0, 8, 22, 1988);

# Ekrana belirtilen zamana ait gün adını basıyoruz.
echo date("l", $x);

?>
Örnekte, 00:00:00 saatinde 22 Ağustos 1988 tarihinin hangi güne geldiğini bulduk. Bu fonksiyon demin de dediğim gibi takvim uygulamaları ve benzeri uygulamalarda çok işe yaramaktadır. Tarih hesaplamalarında genel olarak işe yaramakta demek daha doğru olur.

getdate(); Fonksiyonu

Bu fonksiyon bir dizi (array) yaratarak alacağı parametrelere göre çıktı verir. Fonksiyonun alabileceği parametreler şunlardır;
  • seconds (Saniyeler)
  • minutes (Dakikalar)
  • hours (Saatler)
  • mday (Ay içerisindeki gün sıra sayısı)
  • wday (Hafta içerisindeki gün sıra sayısıdır. 0-6 arasında değer alır.)
  • mon (Yıl içerisindeki ayın sıra sayısı)
  • year (Yıl)
  • yday (Yıl içerisindeki günün sıra sayısı)
  • weekday (Gün)
  • month (Ay)
  • 0 (Sıfır rakamı. 01.01.1970 tarihinden günümüze kaç saniye geçtiğini verir (UNIX zaman mührü).
Aşağıdaki şekilde, getdate(); fonksiyonunun oluşturduğu dizinin (array`in) tüm elemanlarını listeleyebilirsiniz. Hepsinin çıktısını alabilirsiniz;

Kod:
<?php

# Şu andaki tarihi al
$x = getdate(); 

# Diziyi ekrana bas.
print_r($x);

?>
Örnek bir kullanım ise;

Kod:
<?php

# Şu andaki tarihi al
$x = getdate(); 

# Gün-Ay-Yıl olarak tarihi bas.
echo $x[weekday] ."-". $x[month] ."-". $x[year];

?>
Bu örneğin çıktısı Tuesday-April-2004 gibi bir şey olacaktır. Çıktıyı Türkçe alabilmek için siz de bir array yapısı yaratın ve Türkçe çıktı almayı deneyin. Böylece hem array üzerine örnek yapmış olur, hem de basit bir script hazırlamış olursunuz

time(); Fonksiyonu

01.01.1970 tarihinden bu yana geçen zamanı saniye cinsinden verir. Yazılışı şöyledir;

Kod:
<?php
echo time();
?>
Bu fonksiyon tarih bazlı hesaplamalarınızda işinize yarayabilir. Örneğin sitenizin ziyaretçilerinin bir takım işlemlerine zaman sınırlaması koymak istiyorsanız, bu fonksiyon ile hesap yapabilirsiniz.

gettimeofday(); Fonksiyonu

Bu fonksiyon getdate(); fonksiyonuna benzer. Aynı o fonksiyonda yaptığımız gibi print_r(); ile bu fonksiyonun oluşturduğu dizinin (array`in) elemanlarını ve değerlerini görebilirsiniz. Alabileceği parametrelerde zaten o dizinin elemanlarıdır. Kısaca bahsetmek gerekirse;
  • sec (saniyeler)
  • usec (mikrosaniyeler)
  • minuteswest (Greenwich`e göre batıdaki dakikalar)
  • dsttime (Alacağı değerler aşağıdadır.)
DST Değerleri
  • 0 => DST dışında.
  • 1 => Amerika
  • 2 => Avustralya
  • 3 => Batı Avrupa
  • 4 => Orta Avrupa
  • 5 => Doğu Avrupa
  • 6 => Kanada
  • 7 => Büyük Britanya
  • 8 => Romanya
  • 9 => Türkiye
  • 10 => Avustralya (1986 sonrası)
Kullanımı tıpkı getdate(); gibi olup, zaman hesaplarında kullanılabilir.

Tarih ve zaman işlemleri ile ilgili yazacak pek fazla bir şey kalmadı. Bunlar haricinde bir takım fonksiyonlar elbette mevcut fakat pek işlevsel olduğu söylenemez. Eğer gerek duyulursa onları da yazarız.

Hoşçakalın.

// gelecek konu: fonksiyon kavramı.

Mesajı son düzenleyen RestarT ( 08-05-04 - 05:21 ) Neden: Eksiklik.
  Alıntı Yaparak CevaplaAlıntı Yaparak Cevapla
Eski 07-04-04, 20:39 #44
Cruise Cruise çevrimdışı
Varsayılan Cvp: PHP - Notlar && Dersler

Saol hocam ellerin dert görmesin.... :-)
  Alıntı Yaparak CevaplaAlıntı Yaparak Cevapla
Eski 07-04-04, 20:49 #45
RestarT RestarT çevrimdışı
Varsayılan Cvp: PHP - Notlar && Dersler

Son dersteki ufak bir eksikliği düzelttim. Cruise, teşekkür ederim, sen de sağol
  Alıntı Yaparak CevaplaAlıntı Yaparak Cevapla
Eski 14-04-04, 18:07 #46
4554 4554 çevrimdışı
Varsayılan Cvp: PHP - Notlar && Dersler

bir dahaki dersi merakla bekliyorum.Yaş 17 ama hala hiç bişi bilmiyorum.Sayende bu işe girmeye karar evrdim.Öğrenelim bakalım,zarar gelmez dimi...
  Alıntı Yaparak CevaplaAlıntı Yaparak Cevapla
Eski 18-04-04, 01:49 #47
Felix Felix çevrimdışı
Varsayılan Cvp: PHP - Notlar && Dersler

TimFree bu sorunu Php hakkında sorularınız başlığı altına yazmalısın....
  Alıntı Yaparak CevaplaAlıntı Yaparak Cevapla
Eski 01-05-04, 01:33 #48
Cruise Cruise çevrimdışı
Varsayılan Cvp: PHP - Notlar && Dersler

Nezaman yeni ders eklenecek Restart da banlanmış... Felix senin bişiler eklemen mümkün değil mi?
  Alıntı Yaparak CevaplaAlıntı Yaparak Cevapla
Eski 01-05-04, 23:28 #49
RestarT RestarT çevrimdışı
Varsayılan Cvp: PHP - Notlar && Dersler

Cruise geldim.. Banlanmam hakkında yorum yapmıyorum, herşey açık ve ortada.. Kendi koyduğu kuralları kendi çiğneyen bir insandan pek birşey zaten beklemiyorum.. O konuyu geçiyorum.. Birilerinin "kuyruk acısı" diyelim.. Aynen gülüp geçiyorum, bak

Yeni ders konusuna gelince.. İnşallah yakın zamanda yazmayı düşünüyorum fakat sanırım mayıs sonuna kadar pek mümkün değil. Okulumun en yoğun olduğu dönem bu takdir edersin ki..

Herşey yoluna girsin, PHP derslerine tam gaz devam Ayrıca zaten malesef pek ilgi gözlemleyemiyorum.. Bu bölümde açılan vBulletin forum mesajlarının toplamı kadar ders yazamadık daha.. Biz yol gösterelim diyoruz, ama onlar yolunu zaten bulmuş.. Yine de devam edeceğim elbette.

Hoşçakalın.
  Alıntı Yaparak CevaplaAlıntı Yaparak Cevapla
Eski 02-05-04, 00:03 #50
Cruise Cruise çevrimdışı
Varsayılan Cvp: PHP - Notlar && Dersler

Geri döndüğüne sevindim. Sen kurunun yanında yaşı da yakma yeter.
Okulunda başarılar kolay gelsin. Derslerin devamını sabırsızlıkla bekliyorum...
  Alıntı Yaparak CevaplaAlıntı Yaparak Cevapla
Eski 08-05-04, 04:28 #51
20020228 20020228 çevrimdışı
Varsayılan Cvp: PHP - Notlar && Dersler

bencede tam gaz devam unutma biz millet gibi değiliz. Kopyacı bir zihniyetle nereye kadar giderlerki zaten? boşver sen onları. ayrıca şuan ki hit sayılarına bakmanda anlamsız. sonraya bakmak gerek. başkalarıda gelecektir bu foruma ve o zaman bu yazdıkların tam bir kaynak olacaktır. çok teşekkür ederim kişisel olarak. çok faydalı bir iş yapıyorsun tebrik ederim.
  Alıntı Yaparak CevaplaAlıntı Yaparak Cevapla
Eski 09-05-04, 04:00 #52
RestarT RestarT çevrimdışı
Varsayılan Cvp: PHP - Notlar && Dersler

PHP Dilinde Fonksiyonlar // Orta düzey

Fonksiyonlar PHP diline oldukça işlevsellik katan elemanlardır. Genel bir önbilgi vermek gerekirse fonksiyonlar kullanıcı tarafından tanımlananlar ve hal-i hazırda bulunanlar olmak üzere iki ana bölümde incelenebilir. Örneğin fopen(); ve include(); gibi fonksiyonlar hazırda olan ve önceden tanımlanmış fonksiyonlardır. Bu ve benzeri fonksiyonlar elbette işimize yaramaktadırlar ama bizim bazen de kendi fonksiyonlarımızı tanımlama ihtiyacımız doğabilir. İşte bu makalede bunu öğreneceğiz.

Fonksiyonların genel yazım şekli şöyledir;

Kod:
function fonksiyon_adi (değişken1,değişken2, ..., değişkenN) {
	// Yapılacak işlemler, komutlar vs.
}
Fonksiyonlara isim seçerken kullanacağımız kurallar aynen değişkenlere isim verme kurallarıyla aynıdır. PHP dilinde fonksiyonları tıpkı matematikteki f(x)=4+2x tarzı fonksiyonlar gibi düşünebiliriz. Yapılan işlem fonksiyona gönderilecek değişken değerine göre yön bulur. Fakat biz öncelikle sade bir fonksiyon örneğini inceleyelim.

Kod:
function ilkfonksiyonum() {
	echo("deneme 1 2 3");
}

# Çıktısını alalım.
echo ilkfonksiyonum();
Görüldüğü gibi ilk başta sadece echo komutunu icra eden bir fonksiyon tanımladık ve fonksiyonumuzu bitirdikten sonra çıktısını almak için yine echo komutunu kullandık. Eğer biz fonksiyonumuzu tanımladıktan sonra öylece bıraksaydık, yani çıktısını almak istemeseydik bile script icra edildiği taktirde bu fonksiyon işlenecek ve yorumlanacaktı. Yani PHP script içerisindeki bütün fonksiyonları kullanılsın veya kullanılmasın mutlaka yorumlar ve çalıştırır.

Şimdi biraz daha gelişmiş bir örneği inceleyelim.

Kod:
# x.(y+z) işlemini yapan bir fonksiyon tanımlayalım.
function islem ($x, $y, $z) {
	echo $x*($y+$z);
}

# Fonksiyonumuzu kullanalım. (28 çıktısı verecektir)
echo islem(4,2,5);
Yukarıdaki örnekte daha gelişmiş bir fonksiyon örneği görüyorsunuz. İşin içine argümanlarımızı, yani $x, $y ve $z değişkenlerimizi soktuk. Fonksiyonumuzu tanımlarken bu değişkenleri x(y+z) şeklinde işleme tabî tutmasını istedik ve bunu son olarak echo islem(4,2,5); şeklinde kullandık. Sanırım argüman içeren fonksiyonların kullanım şekillerini biraz da olsa kavradınız. Elbette bu örnekte gördüğünüz gibi fonksiyonları sadece matematik işlemleri için kullanmayacağız.

Ayrıca şunu da unutmamak gerekir ki, fonksiyonun argümanlarına fonksiyonumuzu tanımlarken default değerler atayabiliriz. Yukarıdaki örneği dikkate alarak şöyle bir fonksiyon yazımı yapılabilir;

Kod:
function islem ($x, $y, $z=3) {
	echo $x*($y+$z);
}
Görüldüğü gibi bu örnekte $z değişkenini 3 olarak atadık. Eğer ki bu fonksiyonu çağırmak istediğimiz zaman islem(4,2) gibi sadece iki değer girersek, üçüncü değer bizim atadığımız default değer olan 3 sayısı olacaktır. Fakat yine fonksiyonu çağırırken islem(4,2,5) gibi üç argümanı birden tanımlamak istersekte $z argümanı 5 olarak kullanılacaktır.

Fonksiyonlarımızı derlerken dikkat etmemiz gereken bir diğer nokta da, fonksiyonun dışında bulunan bir değişkeni fonksiyona dahil sayamayacağımızdır. Örneğin;

Kod:
$isim	= "birhan";
function yaz() {
	echo $isim;
}
echo yaz();
Yukarıdaki kod örneğinde görüldüğü gibi "$isim" değişkeni yaz(); fonksiyonunun dışarısındadır ve dolayısıyla bu kod örneğini çalıştırdığımız vakit ekrana hiçbir yazı gelmeyecektir. Çünkü fonksiyonumuz "$isim" değişkenini okumayacaktır. Eğer ki fonksiyonun dışındaki bir değişkeni fonksiyonumuza dahil etmek istersek imdadımıza global deyimi yetişecektir. Global deyimi sayesinde fonksiyonumuzun dışında kalan bir değişkeni içeriye alabiliriz. Yukarıdaki örneği tekrar derleyelim;

Kod:
$isim	= "birhan";
function yaz() {
	global $isim;
	echo $isim;
}
echo yaz();
Bu fonksiyonun çıktısı tahmin edebildiğiniz üzere "birhan" olacaktır. Çünkü global kullanarak "$isim" değişkenini fonksiyonumuza dahil ettik.

Bazı zamanlarda da (pek lazım olmasa bile) bir değişkeni fonksiyonumuzdan çıkarmak isteriz. Bunun için de static deyimini kullanmalıyız. Onun kullanım şekli de global deyimi ile aynı olduğu için değinmiyorum. Zaten pek işinize yarayacak bir şey olduğunu da söyleyemem.

Eğer daha önce fonksiyon yapılarını inceleme fırsatınız olduysa return deyimine mutlaka gözünüz takılmıştır. Evet, bu noktaya kadar bu deyimden hiç söz etmedim fakat return deyimi fonksiyonlardan bilgi almamız için gerekli olan yegane deyimdir. Bir script`imiz olsun, biz bu script`imizde HangisiBuyuk(); fonksiyonunu kullanalım ve bu fonksiyondan bir değer almak isteyelim. Aşağıdaki örneği inceleyin.

Kod:
function HangisiBuyuk($a, $b) {
	if ($a > $b)
		return $a;
	else
		return $b;
}
echo HangisiBuyuk(3,2);
Bu örnekte görüldüğü gibi bir if sınaması ile hangi değişkenin daha büyük olduğunu belirledik ve bunu return deyimi yardımıyla scriptimize gönderdik. Bu kodları çalıştırdığımız zaman 3 sayısı daha büyük olduğu için ekrana 3 sayısı basılacaktır.

Ayrıca unutulmamalı ki, return deyimi kullanıldığı zaman fonksiyon durur. Yani return deyimi icra edildiyse kendisinden sonra gelen işlemler göze alınmaz. Yukarıda yazdığımız örnekte bir if yapısı kullandığımız için, iki return deyiminden birisi if koşuluna bağlı olarak işletilecektir. Eğer ki fonksiyon bize $b değişkeni olarak dönecekse $a değişkenine ait return deyimi dikkate alınmayacaktır çünkü if sınaması sonucunda o değişken atlanmış olacaktır. Anlatmak istediğim nokta, return deyimi yazıldığı zaman değil çalıştırıldığı zaman fonksiyon durur.

Fonksiyonlar tanımlayarak kod tekrarı yapmaktan kendimizi kurtarabiliriz. Örneğin sayfamızın üst ve alt kısmını ekrana basacak iki fonksiyon tanımlarız. Bunlar ingilizcede yaygın olarak kullanılan ismiyle header(); ve footer(); fonksiyonları olsun. Bu iki fonksiyonu her sayfamızın üst ve alt kısımlarında çalıştırarak her sayfamızı benzer sayfalar haline getirebiliriz. Oysa bu fonksiyonları tanımlamamış olsaydık biliyorsunuz ki devamlı kod tekrarı yaparak her sayfanın alt ve üst kısımlarına aynı şeyleri yazmak durumunda olacaktık. Üstelik bir de bunları değiştirmek istediğimizi düşünün.. Sizce de onca sayfayı tek tek değiştirmek zor olmaz mıydı? Evet oldukça zor olurdu. İşte bu zorluklardan kurtulmak için fonksiyon kullanmalıyız.

Son bir örnek vererek konuyu sonlandıralım.

Kod:
$yazi = "gülüyorum :) üzülüyorum :( ama yine de {b}kopuyorum{/b} :D :D :D";

function sekillendir($x) {

	$x = str_replace(':)', '<img src=gulenyuz.gif>', $x);
	$x = str_replace(':(', '<img src=uzulmus.gif>', $x);
	$x = str_replace(':D', '<img src=kopmus.gif>', $x);
	$x = str_replace('{b}', '<b>', $x);
	$x = str_replace('{/b}', '</b>', $x);

	return $x;
}
echo sekillendir($yazi);
Hani Forumlarda falan gülen yüzler kendiliğinden çıkıverir. Eğer ki bunu kendi sayfamızda yaptırmak istersek bu tür bir fonksiyon kullanabiliriz. Sanırım bunca şeyi okuduktan sonra aklınızda bu fonksiyonun nasıl işlediği hakkında pek bir soru kalmamıştır. Dolayısıyla fazlaca ayrıntısına inerek açıklamak istemiyorum, siz zaten nasılsa yukarıdaki fonksiyonun işleyiş ve yazım tarzını anlamış olmalısınız.

Yukarıdaki fonksiyonun çıktısı HTML kaynak kodu olarak şöyle olacaktır;

Kod:
gülüyorum <img src=gulenyuz.gif> üzülüyorum <img src=uzulmus.gif> ama yine de <b>kopuyorum!</b> <img src=kopmus.gif> <img src=kopmus.gif> <img src=kopmus.gif>
Fonksiyonlar konusu bu kadar. Ama tanımlayabileceğiniz fonksiyonlar asla bu kadar değil. Akla hayale gelmeyen fonksiyonlar tanımlayabilirsiniz, mutlaka kendinizi fonksiyon kullanmaya alıştırın. Emin olun ki işleriniz eskisinden daha kolaylaşacaktır.

Hoşçakalın.

// gelecek konu: dosya işlemleri - 1

Mesajı son düzenleyen RestarT ( 14-05-04 - 23:27 )
  Alıntı Yaparak CevaplaAlıntı Yaparak Cevapla
Eski 09-05-04, 20:02 #53
Felix Felix çevrimdışı
Varsayılan Cvp: PHP - Notlar && Dersler

iyi anlatmışsın restart.Beyler ayrıca sizlere bende bir tavsiye profosyonel şeyler yapmak istiyorsanız fonksiyonları, sınıfları ve de dizi işlemlerini iyi bir şekilde öğrenmelisiniz...
  Alıntı Yaparak CevaplaAlıntı Yaparak Cevapla
Eski 10-05-04, 03:45 #54
Cruise Cruise çevrimdışı
Varsayılan Cvp: PHP - Notlar && Dersler

Teşekkürler... Yeniden başlamak güzel eline sağlık Restart.
Sizden bir ricam daha olacak. Umarım yüzsüzlük etmiyorumdur. PHP dilinin elemanları yanında arada ufak tefek kodlama püf noktaları diyebileceğim bilgiler de verebilir misiniz?
Demek istediğim şey, hızlı ve kararlı çalışan bir script yazabilmek için nelere dikkat edilmeli, nasıl kodlama yapmalı, sunucu kaynaklarını tutumlu kullanacak kodlar nelerdir vs. Mesela bazı sitelerde echo komutunun print komutundan daha hızlı çalıştığı şeklinde bilgiler yer almakta. eregi komutunun yerine kullanılması daha iyi olduğu söylenen bir komut daha vardı ancak hatırlayamadım.

Mesajı son düzenleyen Cruise ( 10-05-04 - 03:58 ) Neden: Aklıma sonradan geldi...
  Alıntı Yaparak CevaplaAlıntı Yaparak Cevapla
Eski 10-05-04, 04:18 #55
RestarT RestarT çevrimdışı
Varsayılan Cvp: PHP - Notlar && Dersler

Ben aslında böyle birşey yapmayı elbette düşündüm. O yüzden konu başlığını "PHP - Notlar && Dersler" şeklinde yaptım. Ama haklısın sanırım pek dediğin türden şeyler yazmak nasip olmadı. Aslında eregi fonksiyonunu falan ayrı bir konu başlığı altında anlatmak istemiştim. Kısmet olursa dediğin gibi ufak notlarda iliştiriveririm
  Alıntı Yaparak CevaplaAlıntı Yaparak Cevapla
Eski 15-05-04, 00:00 #56
RestarT RestarT çevrimdışı
Varsayılan Cvp: PHP - Notlar && Dersler

PHP Dilinde Dosya İşlemleri - 1 // Yeni başlayanlar

PHP ile bir dosya üzerinde işlem yapmak her zaman bize lazım olabilecek bir olaydır. Özellikle MySQL ve benzeri veritabanı sistemlerinin desteklenmediği sunucularda ya da sayaç, maillist ve benzeri uygulamalarda verileri bir dosya üzerine yazıp bir dosya üzerinden okumak daha akıllıca ve işlevseldir. Bu makalede dosyaları açmayı, kapatmayı, dosya üzerine yazmayı, dosyaları okumayı, yeni dosyalar yaratmayı, silmeyi ve dosya yönetimi ile ilgili daha nice yararlı bilgileri anlatmaya çalışacağım.

Giriş olayını fazla abartmadan hemen konuya girmekte sanırım yarar var. Çünkü bana oldukça uzun sürecek bir konuymuş gibi geliyor..

Dosyayı Açmak

Bir dosya üzerine yazmak ya da bir dosyayı okumak için öncelikle o dosyayı açmamız gerekir. Dosyamızı açabilmemiz için gereken fonksiyon fopen(); fonksiyonudur. Aşağıda bu fonksiyonun yazım kuralını görüyorsunuz.

Kod:
fopen("dizin\dosya", dosya_modu);
Fonksiyonun ilk argümanı açacağınız dosyanın tam yolunu belirteceğiniz bölümdür. Eğer script`iniz açacağınız dosya ile aynı dizinde ise ekstradan dizin belirtmenize ihtiyaç yoktur. İkinci argüman ise dosya modudur. Buraya yazacağınız değer, dosyayı ne amaçla açtığınızı simgeleyecektir. Dosya modları şu şekildedir;
  • r: Dosyayı başından itibaren okumak için aç.
  • r+: Dosyayı başından itibaren hem okumak hem de yazmak için aç.
  • w: Dosyayı başından itibaren yazmak için aç. Eğer dosya mevcut değilse yeni bir dosya yarat, mevcutsa tüm içeriği sil.
  • w+: Dosyayı başından itibaren hem okumak hem de yazmak için aç. Eğer dosya mecvut değilse yeni bir dosya yarat, mevcutsa tüm içeriği sil.
  • a: Dosyayı başından itibaren yazmak için aç. Eğer dosya mevcut değilse yeni bir dosya yarat, mevcutsa dosyanın sonundan itibaren ekleme yap.
  • a+: Dosyayı başından itibaren okumak ve yazmak için aç. Eğer dosya mevcut değilse yeni bir dosya yarat, mevcutsa dosyanın sonundan itibaren ekleme yap.
Bir dosyayı açarken kullanacağımız dosya moduna dikkat etmeliyiz. Script`in işlevine göre uygun bir mod ile dosyayı açmalıyız. Aşağıdaki örnekten yararlanarak fopen(); fonksiyonunun kullanımı hakkında bilgi edinebilirsiniz.

Kod:
if (fopen("kayitlar.txt", "a+")) echo("Dosya açıldı.");
else echo("Dosya açılamadı.");
Ayrıca yine fopen(); fonksiyonu sayesinde uzak sunucudaki ftp yahut http protokolünü kullanan belgeleri de açabiliriz. Fonksiyonun içine adres yazarken uymamız gereken mutlak kural adresi http://www.ornek.com/ şeklinde yazmaktır. Eğer sondaki yatık çizgiyi koymazsak fonksiyon görevini yerine getirmez. Genelde uzaktaki belgelere sadece okuma moduyla erişebiliriz. Diğer modlara izin verilmesi durumunda güvenlik tehlikesi yaratabileceğinden genelde sadece okuma izni verilir. Bununla ilgili bir örnek yazalım;

Kod:
fopen("http://www.ornek.com/", "r");
Bu fonksiyonu kullanırken alabileceğiniz muhtemel bir hata vardır ki, o da "Permission Denied" yani bu işlemi yapmaya izninizin olmadığını belirten bir hatadır. Bu durumda chmod ayarlarına göz atmanız sorunu çözmek için yeterli olabilir.

Dosyaya Yazmak ve Dosyayı Kapatmak

PHP ile bir dosyaya yazmak için öncelikle o dosyayı açmamız gerekir. Bunu fopen(); ile nasıl yapacağımızı sanırım öğrendik. Dosyaya yazmak için PHP dilinde fputs(); ve fwrite(); fonksiyonları kullanılır. İkisinin de yazım şekli aynıdır. Aşağıdaki örneği inceleyin.

Kod:
<?php
$yazi1	= date("d.m.Y")."\t".date("G:i:s")."\t"."ve ben ilk yazımı yazıyorum!\n";
$yazi2	= date("d.m.Y")."\t".date("G:i:s")."\t"."ve ben ikinci yazımı yazıyorum!\n";
$ac	= fopen("kayitlar.txt", "w+");
fputs($ac, $yazi1);
fputs($ac, $yazi2);
fclose($ac);
?>
Bu örnekte görüldüğü gibi ilk olarak yazacağımız metinleri belirledik, sonra dosyamızı açtık. Buraya kadar herşey bildiğimiz şeylerdi. Sonra yazı yazmak için fputs(); fonksiyonundan yararlandık. Son olarakta açtığımız dosyayı kapattık. fputs(); ve fwrite(); fonksiyonlarının genel yazım kuralı yukarıdaki örnekte kullandığımız gibidir. Yukarıdaki örnekte fonksiyonumuza sadece iki argüman girdik. Bunlar haricinde tercihe bağlı olarak kullanılan bir üçüncü argüman daha vardır. Bu argüman sayesinde dosyaya yazılacak olan maksimum byte sayısı belirtilir ve bu sayıya ulaşana dek yazım işlemi devam eder. Örneğimizde fputs($ac, $yazi1, 5); gibi bir değişiklik yaparsak, $yazi1 için sadece 5 byte`lık veri yazılacak ve fonksiyon sonlandırılacaktır.

Dikkat ettiyseniz yazacağımız metinlerin arasında \t \n gibi karakterler bulunuyor. Bunların ne anlama geldiğini de yeri gelmişken izah edeyim. PHP ile çıktı aldığımız zaman kaynak kodlar genelde bitişik olarak ve düzensiz bir şekilde gelir. Bu elbette sayfa tasarımına yansımaz fakat kaynak kodları incelemeye çalıştığımızda bizi zor durumda bırakabilir. İşte bu karakter gruplarının kimisi burada devreye giriyor. Kimisi ise PHP tarafından kullanılan dolar işareti ($) ve ters bölme işareti (\) gibi işaretleri etkisizleştirmeye ve kullanabilmemize yarar. Kısaca bunların işlevlerini açıklamak gerekirse şunlar yazılabilir:
  • \\: Ters bölü işareti.
  • \': Tek tırnak işareti.
  • \": Çift tırnak işareti.
  • \$: Dolar işareti.
  • \r: Kaynak kod içinde satır başı yapmak için kullanılır.
  • \t: Kaynak kod içinde sekme (tab) yapmak için kullanılır.
  • \n: Kaynak kod içinde yeni satıra geçer.
Konuyu fazla dağıtmadan dosya işlemlerine geri dönelim. Örneğimizde bilmediğimiz bir başka fonksiyon ise dosyayı kapatmaya yarayan fclose(); fonsiyonudur. Bu fonksiyonun yazım kuralı örnekte görüldüğü gibidir, yani bağlantıyı yüklediğimiz değişkeni fonksiyon içerisine yazarak kolayca bağlantıyı kapatabiliriz.

Dosyayı Okumak
  • feof(); Fonksiyonu
  • fgets(); ve fgetss(); Fonksiyonları
  • fgetc(); Fonksiyonu
  • readfile(); Fonksiyonu
  • file(); Fonksiyonu
  • fread(); Fonksiyonu
Dosya açmayı, yazmayı ve kapatmayı öğrendikten sonra bunları nasıl okuyacağımızı öğrenme vakti de geldi. Öncelikle dosya okuma işlemleri için kullanacağımız fonksiyonları ve bunların işlevlerini belirtelim.

feof(); Fonksiyonu: Bir dosyanın sonuna kadar okunup okunamadığını belirtir. Başka bir deyişle bir dosyayı baştan sona okumak için kullanılır. Zaten fonksiyonun ismi "File End Of File" anlamına gelir. Okunmaya çalışılan dosyanın sonuna erişilmesi durumunda sonuç true (1) olarak dönecek, aksi durumda ise false (0) olarak dönecektir. Genel olarak bir while döngüsü eşliğinde kullanılır. Yazım kuralı aşağıdaki gibidir;

Kod:
feof($ac);
Görüldüğü gibi bu fonksiyon tek bir parametre içerir ve içerdiği parametrede bir dosyayı açmak için kullandığımız değişkenin ismidir.

fgets(); ve fgetss(); Fonksiyonları: Bir dosyadan satır satır veri okumak için fgets(); fonksiyonu kullanılır. Yazım kuralı şöyledir;

Kod:
fgets($ac, 256);
Burada $ac değişkeni fopen(); ile dosyayı açan değişkendir. 256 rakamı ise maksimum okunacak byte miktarıdır. Fonksiyon yukarıdaki haliyle 255 byte okuyup sonlandırılacaktır.

Bir de benzer olarak fgetss(); fonksiyonu vardır. Bu fonksiyonun benzerinden tek farkı, okunan dosya içerisindeki HTML tag`lerini yok ediyor olmasıdır. Yazım kuralı şöyledir;

Kod:
fgetss($ac, 100, "<b><u>");
Yukarıda görüldüğü gibi ilk olarak dosyayı açmak için kullandığımız $ac değişkenini yazdık, sonra maksimum okunacak veriyi yazdık. En son yazdığımız argüman ise yok edilmemesini istediğimiz HTML tag`leridir. Fonksiyon belirtilenler haricindeki tüm tag`leri yok edecektir. Son bölüm isteğe bağlı olarak yazılabilir, hiçbir şey yazılmaması halinde tüm tag`ler yok edilecektir. Bu fonksiyonu kullanabileceğiniz alanlar genel olarak üyelerin üzerinde işlem yapabildiği dosyalar denilebilir. Örneğin üye bilgilerinin tutulduğu bir kayıt dosyamız var ve biz üye bilgilerini bu dosyadan alıyor olalım. Üye eğer kötü niyetli bir kişiyse herhangi bir bilgisini HTML kodu olarak girip sayfa düzenimizi bozabilir, hatta bir nevi hackleyebilir. Yazacağı bir JavaScript kodu ile kendi sayfasına yönlendirebilir. Kısacası sitenizi kötü emellerine alet edebilir. Bunları engellemek için PHP`ye dosyadan veri okuturken HTML tag`lerini yok etmek isteyebiliriz. İşte bu noktada bu fonksiyon işimize çok yarayacaktır.

fgetc(); Fonksiyonu: Bir dosyadan tek bir karakter okumak için fgetc(); fonksiyonu kullanılır. Fonksiyon her çağrıldığında bir karakter okuyacaktır. İçerisine tek bir parametre alır, bu da makalemizde $ac olarak gösterdiğimiz dosyayı açmamıza yarayan argümandır. Yazım kuralı şöyledir;

Kod:
fgetc($ac);
Bir örnekle pekiştirelim;

Kod:
$ac = fopen("kayitlar.txt", "r");
echo fgetc($ac);
fclose($ac);
Görüldüğü gibi öncelikle dosyamızı açtık, sonra tek bir karakter okutmak için fgetc(); fonksiyonunu kullandık ve en son olarak dosyamızı kapattık.

readfile(); Fonksiyonu: Bir seferde tüm dosyayı okumak için bu fonksiyonu kullanırız. Fonksiyon icra edilirken öncelikle dosya açılır, sonra okunur ve çıktı verilir. Dosyayı kendiliğinden açtığı için ekstadan bir fopen(); kullanmamıza gerek kalmaz. Genel yazım kuralını gösteren bir örnekle bu fonksiyonu geçelim;

Kod:
readfile("kayitlar.txt"); // Evet sadece bu kadar..
file(); Fonksiyonu: Bu fonksiyon ile dosya açılır, okunur ve her satırı bir diziye (array) kaydedilir. readfile(); fonksiyonu ile oldukça benzerdir fakat tek farkı çıktıyı bir dizi değişkenine atıyor olmasıdır. Aşağıdaki örneği inceleyin;

Kod:
$dizi = file("kayitlar.txt");
print_r($dizi);
echo "<br>".$dizi[3];
Burada dosya öncelikle açıldı, okundu ve her satırı $dizi dizisine birer eleman olarak kaydedildi. Sizin oluşturduğunuz kayitlar.txt belgesinin 4 satıra eşit ya da 4 satırdan fazla olduğunu düşünürsek yukarıdaki örnek gayet başarılı çalışacaktır. file(); fonksiyonu içerisine sadece kullanılacak olan dosyanın adresini alır. Başka bir parametre almaz.

fread(); Fonksiyonu: Bir dosyanın istediğimiz kadar kısmını okumak için bu fonksiyonu kullanırız. Dosyadan çekeceğimiz veri miktarını byte değerinden yazarız. Yazım kuralı aşağıdaki gibidir.

Kod:
fread($ac, veri_miktari);
Bunu bir örnekle pekiştirelim;

Kod:
$ac = fopen("kayitlar.txt", "r");
echo fread($ac, 6); // Toplam 6 byte miktarında veri okuyoruz.
fclose($ac);
Dosyayı Silmek && Yeni Bir Dosya Yaratmak

Dosya silmek için unlink(); fonksiyonunu kullanırız. Yazım kuralı aşağıdaki gibidir. İçerisine sadece silinecek olan dosyanın adresini alır.

Kod:
unlink("kayitlar.txt");
Yeni bir dosya yaratmak için ise touch(); fonksiyonu kullanılır. Tek bir parametre alır, bu parametre de dosya adını belirtir. Yazım kuralı aşağıdaki gibidir.

Kod:
touch("kayitlar.txt");
Dosya işlemlerinin birinci bölümü burada bitti. Makalede bir dosya üzerinde okuma ve yazma işlemlerini ve ayrıca dosya silme ve yaratma işlemlerini öğrendik. Bunları öğrenirken pek örnek veremedim, gelecek makalede zaten gerekli örnekleri bulacaksınız.

Hoşçakalın.

// gelecek konu: dosya işlemleri - 1 için örnekler.
// not olarak yazayım; bu dosya işlemlerini yazmak beni gerçekten yoruyor..

Mesajı son düzenleyen RestarT ( 21-05-04 - 02:52 )
  Alıntı Yaparak CevaplaAlıntı Yaparak Cevapla
Eski 15-05-04, 04:44 #57
Canver Networks Canver Networks çevrimdışı
Varsayılan Cvp: PHP - Notlar && Dersler

Peki dosyaları; kes, kopyala, yapıştır ???
  Alıntı Yaparak CevaplaAlıntı Yaparak Cevapla
Eski 15-05-04, 16:57 #58
RestarT RestarT çevrimdışı
Varsayılan Cvp: PHP - Notlar && Dersler

Biraz bekle hele.. Dosya işlemleri - 2 içerisinde değineceğim onlara da sanırım..
  Alıntı Yaparak CevaplaAlıntı Yaparak Cevapla
Eski 21-05-04, 16:43 #59
mca mca çevrimdışı
Varsayılan Cvp: PHP - Notlar && Dersler

kes kopyala yapıştır diye bişi var mı phpde ya?
yani text içerik olarak demiyorum .zip uzantılı bi dosyayı kesip başka bi klasöre yapıştırmak gibi?

yazın da biz de öğrenelim
  Alıntı Yaparak CevaplaAlıntı Yaparak Cevapla
Eski 21-05-04, 19:17 #60
RestarT RestarT çevrimdışı
Varsayılan Cvp: PHP - Notlar && Dersler

Dosya kopyalama olayı var
  Alıntı Yaparak CevaplaAlıntı Yaparak Cevapla
Cevapla

Bu konunun kısa yolunu aşağıdaki sitelere ekleyebilirsiniz

Konu Araçları

Gönderme Kuralları
Yeni konu açamazsınız
Cevap yazamazsınız
Dosya gönderemezsiniz
Mesajlarınızı düzenleyemezsiniz

BB code is Açık
Smiley Açık
[IMG] kodu Açık
HTML kodu Kapalı



Tüm saatler GMT +3. Şuan saat: 15:16
(Türkiye için artık GMT +3 seçilmelidir.)

 
5651 sayılı yasaya göre forumumuzdaki mesajlardan doğabilecek her türlü sorumluluk yazan kullanıcılara aittir. Şikayet Mailimiz. İçerik, Yer Sağlayıcı Bilgilerimiz.