Arama butonu
Bu konudaki kullanıcılar: 1 misafir, 1 mobil kullanıcı
185
Cevap
16295
Tıklama
0
Öne Çıkarma
Cevap: Sıfırdan PHP (6. sayfa)
A
20 yıl
Yüzbaşı

Arkadaşım öncelikle soru sormaktan çekinme kesinlikle, soru sormadan öğrenemezsin.Fakat şunu da söyleyim bende küsüratlı gelmiyor iki türlü de.İkinci kodu intval kullanmadan denedim yine aynı.eğer sen küsuratlı çıkan durumu buraya yazarsan bakarız belki gözden keçen bir yer vardır. Şimdi tekrar bir örnek verelim:

$a=155/10;

echo gettype($a);

echo '<br>';

$b=intval(155/10);

echo gettype($b);


Bu mesaja 1 cevap geldi.
M
20 yıl
Yüzbaşı
Konu Sahibi

Hocam soru sormaktan çekinmiyorum ama her yazımın karşılığında eğer kafamda 10 tane soru varsa 7,8 tanesini satır aralarında alıyorum ve devamlı sorarak da karşımdaki kişiyi bunaltmak istemiyorum...şöyle en son 3 ya da 4 mesajıma bi bakar mısın neler neler sormuşum... Ki bunun karşılığında daha fazla yanıt aldım... Sanki yük oluyorum gibi hissettiğimden dolayıda ara ara seni rahat bırakmak gerektiğini düşünüyorum :) Allah Senden Razı Olsun...

Konumuza dönüyoruz yine hocam :) bak istesek de istemesek de bi şekilde yine soruyorum ve konuyu irdeliyoruz :)

Hocam bak! Yukarıda yazmış olduğun kodları yazıp görüntüledim...
biri ondalık(double) diğeri(tamsayı) yani intval ondalık sayıyı tamsayıya dönüştürüyor... Gettype ı da bu vesileyle öğrenmiş oluyorum...verinin tipini bize bildiriyor...
Buraya kadar ok...

Şimdi ben öncelikle küsüratlı nasıl çıkıp çıkmadığı konusunda bir açıklık getirmem gerekiyor...
Hocam normalde ben o kodları yazmaya başladığımda senin sayfa listeleme yönteminden yola çıktım ve intvalsiz bir şekilde yapmaya çalıştım ve o anki sayfa sayısı limit sayısı ve satırsayisina göre herşey normal oluyordu... Ama bunu bu şekliyle kabul etmem doğru değil çünkü her kayıt eklendiğinde sayfa sayısı o oranda değişecek ve farklı durumlar ortaya çıkacaktı ayrıca limit sayısını da arada bir değiştirmek gerekiyordu...O nedenle satir sayılarını limit sayılarını ve sayfa sayılarını çeşitli kombinasyonlara tabi tutarak denedim ve örnek veriyorum kayıt sayısı çift iken bir sorun olmuyordu ama tek iken bazı sayılar küsüratlı gözüküyordu... Daha sonra kendi kendime düşündüm ve araştırdım intval öğesinin ondalık sayıyı tam sayıya çevirip aşağıya yuvarladığını öğrendim ve onu orada kullanmayı düşündüm ve onu yaptıktan sonra en son yine her türlü kombinasyonları denedim sonuç pozitif çıktı...

O nedenle sayfa listelemede neden intval kullanmadığımız halde sayılar küsüratlı çıkmıyor diye sorma gereği duydum... Ve senden aldığım yanıtla birlikte bir şey daha öğrendim for döngüsü ondalık sayıyı tam sayıya çeviriyor... Bu sefer daha da meraklandım bizim sayfa numaraların kontrol altına aldığımız metodda ki kullandığımız değişken intvalsiz for döngüsüne girmesine rağmen küsüratlı çıkıyor... Orada $ust değişkeni belirli bir şarta göre değer alıyor...Ama öyle gözle bakarak çıkarılacak bir şey değil gibi geliyor bana...Ancak hangi hallerde küsüratlı çıktığını bulduğumuz zaman değerlere baktığımızda o zaman nedeni bulmuş oluruz...


Hocam sonuç olarak o kodları oluştururken küsüratlı olarak çıktığına adım gibi eminim... O olayı çıkarır çıkarmaz da buraya yazarım...Ve irdeleriz..

Hocam! buraya gelirken boş geldim "gettype()" ımla dönüyorum
Tşk ederim...


Bu mesaja 1 cevap geldi.
A
20 yıl
Yüzbaşı

Arkadaşım bende küsuratlı çıkmadı diye sende de çıkmayacak diye bir şey yok tabii , dediğim gibi gözden kaçan bir yer vardır, buraya eklersin bakarız.

Ayrıca gettype(); ' le dönüyorum demişsin ama gettype(); settype(); 'siz olmaz :)

bir örnek yazalım:

$a=155/10;
echo $a , '<br>';
echo gettype($a), '<br>';


settype($a, "integer");
echo $a , '<br>';
echo gettype($a), '<br>';

Değişkenlerin tipini belirlemek önemlidir ve bu nedenle bir sürü fonksiyon vardır, başka bir örnek verecek olursak:

$b=127/17;
echo $b , '<br>';
echo gettype($b), '<br>';

$b=(int)$b;
echo $b , '<br>';
echo gettype($b), '<br>';

Zaman ilerledikçe zaten bir yere geleceksin ki bunlar lazım olacak ve sırayla öğreneceksin


Bu mesaja 1 cevap geldi.
M
20 yıl
Yüzbaşı
Konu Sahibi

Merhabalar Hocam!

Kod üzerinde çeşitli denemeler yaptım ve o küsürtalı sonucu buldum ve nedeninin nereden kaynaklandığını da tespit ettim ama yine de senin bu konuda ki fikrine ihtiyacım var...

Şimdi şöyle bir giriş yaparak ifade edeyim...
Yukarıda for döngüsü içine giren bir ondalık sayı tam sayıya döner diye yazmıştım ama bu her zaman geçerli bir kural değil...

Yukarıda şöyle bir deneme yapmıştık;
$d=155/10;

for($i=1; $i<=$d ;$i++){
echo $i.'<br>';
}

Burada alt limit zaten tamsayıyla başladığı için
1 den başlayacak birer sayı artarak üst limite kadar ilerleyecek
yani 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 aslında üst limitimiz 15,5 olduğu için bir sayı daha arttığında 16 olması gerekeceği için küsüratı almayıp bir önceki tamsayıda bırakıyor...

mesela biz orada alt limiti 1 yerine 1.5 kullanmış olsaydık..Üst limitteki küsürat gözükecekti ve şu şekilde sayılar dönecekti...
1.5 2.5 3.5 4.5 5.5 6.5 7.5 8.5 9.5 10.5 11.5 12.5 13.5 14.5 15.5

Sonuç olarak for döngüsünde alt limit ondalık sayı ise ondalık olarak dönmeye devam edecek...


Buradan hareketle bizim sayfa kontrolündeki küsüratlı olayının hangi parametrede çıkardığımı belirteyim...

Kodumuz şuydu;


$sayfa_sayisi=intval($satir_sayisi/$limit);
$sayfa_sayisi=($satir_sayisi %$limit !=0 ) ? $sayfa_sayisi+1 : $sayfa_sayisi;

$sayfa=($sayfa == 0 || $sayfa=='')? 1 : $sayfa ;
$alt=($sayfa<($sayfa_sayisi-4))? $sayfa : ($sayfa_sayisi-4);
$ust= (($sayfa+4)<$sayfa_sayisi)?($sayfa+4):($sayfa_sayisi);

echo ($sayfa>1 )? '<a data-test="test" rel="nofollow" style="word-wrap: break-word; text-decoration: underline;" target="_blank" onclick="return dhExternalLinkRedirect(this)" href="/ExternalLinkRedirect?module=pgdcode&messageId=3487522&url='.$PHP_SELF.'?sayfa='.($sayfa-1).'" data-href="'.$PHP_SELF.'?sayfa='.($sayfa-1).'"><b>Geri</b></a> ':' ';

for($i=$alt; $i<=$ust ;$i++){

echo ($i != $sayfa) ? '<a data-test="test" rel="nofollow" style="word-wrap: break-word; text-decoration: underline;" target="_blank" onclick="return dhExternalLinkRedirect(this)" href="/ExternalLinkRedirect?module=pgdcode&messageId=3487522&url='.$PHP_SELF.'?sayfa=' .$i. '" data-href="'.$PHP_SELF.'?sayfa=' .$i. '"><b>'.$i.'</b> </a>' :'<b>['. $i.']</b> ' ;
}


echo ($sayfa<$sayfa_sayisi ) ? ' <a data-test="test" rel="nofollow" style="word-wrap: break-word; text-decoration: underline;" target="_blank" onclick="return dhExternalLinkRedirect(this)" href="/ExternalLinkRedirect?module=pgdcode&messageId=3487522&url='.$PHP_SELF.'?sayfa='.($sayfa+1).'" data-href="'.$PHP_SELF.'?sayfa='.($sayfa+1).'"><b>İleri</b></a> <a href='.$PHP_SELF.'?sayfa='.$sayfa_sayisi.'> >> </a> ' :'';



Yukarıdaki kod içinde intvali kullanmayacağımızı var sayıyorum...
Ve parametreleri veriyorum...
satırsayımız 17
limitimiz 2
ve sayfa sayımız 9

bu verileri yerine koyup altıncı sayfada olduğumuzu düşündüğümüz zaman...
görüntü aynen şöyle oluyor ;
<< geri 5.5 6.5 7.5 8.5 9.5 ileri >>

yani alt limit üst limitin küsüratından 4 eksik bir sayıdan başlayacağı için küsüratlı bir sayıdan başlamış oluyor...

Yani sonuç olarak böyle bir kod içinde intval kullanmadığımız takdirde sayılar küsüratlı geleceği yerlerde küsüratlı olarak gösterilecek...

Evet yaptığım tespitler bunlar hocam ....Bu konudaki düşüncelerini bekliyorum...


Bu mesaja 1 cevap geldi.
A
20 yıl
Yüzbaşı

Arkadaşım bende küsurat çıkmamasına rağmen yukarıda bu konuya değinmiştim hatırlarsan:

quote:

Diğer soruna gelince yani intval kullanma meselesi şimdi önce şu örneğe bir bak:
...
...
Sonra da yukarıda for döngüsünde sayacı hangi değişkene göre verdiğimize bak sanırım anlarsın neden öyle olduğunu.


Buradan çıkan sonuç nedir sence ? Demek ki yazdığımız kodları her ihtimale karşı test edip gözden geçirmemiz gerekiyor.Çünkü hiç ummadığımız anda ummadığımız bir şey çıkabilir.Farklı olabilecek durumlar hemen o anda aklımıza gelmeyebilir veya düşünmekle aklımıza gelmeyebilir. En iyisi kod yazımını bitirdikten sonra belli bir süre değişkenleri değiştirip farklı durumlarda programın nasıl tepki verdiğini kontrol etmektir.


Bu mesaja 1 cevap geldi.
M
20 yıl
Yüzbaşı
Konu Sahibi

Hocam yazdıklarına katılıyorum zaten yukarıda detaylı bir şekilde yazmamdaki sebep acaba düşündüğüm mantık doğru mu yanlış mı?

Çünkü gerçekten php de bir işlevin çok alternatifleri olduğu için ne yaptığımı bilerek anlayarak yapmayı tercih ettiğimden dolayı irdeliyorum...

Sen bana for döngüsü içindeki ondalık sayı örneğini göstermemiş olsaydın... Ben sayfa sayılarını kontrol altına alırken intval kullanacaktım ve sadece işimi görsün diye... Yani belki de hiç bir zaman sorgulamayacaktım bu intvali burada neden kullanmak zorunda olduğumuzu...
Ama şimdi neden orada kullanmak zorunda olduğumu anlamış durumdayım...

Bilgilerin için tşk ederim hocam...


Bu mesaja 1 cevap geldi.
A
20 yıl
Yüzbaşı

Estağfurullah arkadaşım, elbette ki izlediğin mantık doğru, zaten bu tür hazır fonksiyonlar olmasının nedeni devamlı ihtiyaç duyulmasıdır.Çünkü düşünecek olursak intval diye bir fonksiyon olmasaydı ne yapardık?

herhalde yukarıdaki örnekden devamla mesela:

//kaç sayfa olduğunu buluyoruz
$sayfa_kac=$satir_sayisi/$limit;

//explode ile noktadan bölüyoruz
$sayfa_limit=explode('.',$sayfa_kac);

//eğer kalan 0 değilse noktadan önceki kısmı 1 arttırıyoruz, kalan tamsa aynen bırakıyoruz.
$sayfa_sayisi=($satir_sayisi % $limit !=0) ? $sayfa_limit[0]+1 :$sayfa_limit[0];

gibi bir yol izlerdik.Oysa intval ile daha çabuk ve rahat yapıyoruz.Bu arada yukarıda geçen (int), ve settype, fonksiyonlarını da denedin umarım.


Bu mesaja 1 cevap geldi.
M
20 yıl
Yüzbaşı
Konu Sahibi

Hocam bu explode yöntemi uzun olsa bile bence güzel bir yöntem ayrıca sonuca ulaşmak için de çeşitlilik katıyor insanın zihnine...
Yukarıdaki settype fonksiyonunu deneme fırsatını yeni buldum ve... Anladığım kadarıyla Settype içindeki değişkenin veri türünü değiştiriyor...
Ben ondalık bir sayıda yaptım onun gettype ile veri türünü integer yaptı ayrıca ondalık sayının ondalık kısmını almadan gösterdi...
Yani şöyle;

$i=25/2; // bunun ondalık olarak görüntüsü 12.5 oluyor

settype($i , integer) // burada $i integere yani tam sayıya dönüşüyor
echo gettype($i); // burada ekrana integer yazısını yazdırıyoruz...(hocam eğer biz bunun tam sayı olduğunu biliyorsak bunu ekrana yazdırmamızın ya da orada kullanmamızın ne anlamı var? Acaba bu fonksiyon if yapısı tarzındaki operatörlerde mi kullanılıyor...Yani veri türüne bak eğer ondalıksa şunu yap değilse bunu yap gibi...

echo $i; // ekranda 12 çıkıyor...


Sanki bu settype ile intval görevini de yapabiliriz gibi geldi bana...
Yani hem intval hem explode hem de settype bizim yukarıdaki sorunumuzu halletmemizde kullanabileceğimiz elemanlar diye düşünüyorum... Ne dersin hocam? !


Bu mesaja 1 cevap geldi.
A
20 yıl
Yüzbaşı

Arkadaşım aynen öyle, zaten o nedenle yazdım onları yani baştan beri söylediğim gibi bir işi yapmanın farklı yolları olduğunu unutma diye.

settype ve gettype düşündüğün gibi kontrol etmek ve veri türünü değiştirmek için kullanılıyor.Yani mesela

if( gettype($a)=="integer" ){

işlemi yap

}
else {

settype($a,"integer");

işlemi yap

}

Tabii hiç kontrol etmeden direk

$a=(int)$a;

veya

settype ($a, "integer");

gibide kullanabilirsin, bu tamamen o anda ihtiyacın olan duruma bağlı.


Bu mesaja 1 cevap geldi.
M
20 yıl
Yüzbaşı
Konu Sahibi

Afedersin hocam (int) fonksiyonunu gözden kaçırmışım ...En son mesajında ancak uyanabildim ve deneyip uygulayıp öğrendim... Sanırım onu gözden kaçırdığımı farketmiş olacaksın ki... Onu da yazmadan geçmedin...:) Sağolasın!

Hocam bu konuyu sayende kafamda çok iyi biçimde şekillendirdim...

Neyse hocam ben araştırmalarıma döneyim...Kafama takıldığı yerde buraya yazarım...

Tşk ederim...


Bu mesaja 1 cevap geldi.
M
20 yıl
Yüzbaşı
Konu Sahibi

Merhabalar Hocam!

Buralarda mısın bilmiyorum ama bir konu üzerinde bayağı bi kafa yordum ve gerek internetten ve gerekse elimdeki dökümanlarda anlatımlarına rastlamadığım için farklı forumlarda sorularıma yanıt aradım ama tam olarak amacıma ulaşamadım...

Yapmak istediğim şey kategori ve alt kategoriler ve bu kategorilere bağlı olan veriler... Öğrendiğim kadarıyla iki tablo şeklinde çalışılıyor...Ve bu tablolar arasında ilişkilendirilmeler yapılıyor...

Örnek vermek gerekirse;

Edebiyat
Spor
Müzik

diye en üst kategoriler gidiyor... Uzun olmaması için biz en baştaki edebiyatı örnek verelim


Bu tabloya Kategoriler diyelim

no------Kategori -------- Üst_kategori

1 ------Edebiyat-----------------0

2 ------Türk edebiyatı----------1
3-------Dünya edebiyatı-------1
4-------Türkçe Roman --------2
5-------Yabancı Roman--------3
6-------Türkçe şiir-------------2
7-------Yabancı şiir------------3


Bu tablonun yapısında gerek üst ve gerekse onun altındaki diğer kategoriler sürekli eklenmeye hazır bir vaziyette... Bir de bu kategorilere bağlı başka bir tablo hazırlamak gerekiyor...

Mesela kategorilerdeki Türkçe ya da yabancı şiir ya da romanın altında bulunan şiirler ya da romanların girildiği bir tablo...Mesela şöyle diyelim

Tablomuzun adı SIIRLER olsun

no------kategori_no-------şiir

1------------6-----------Otuz Beş Yaş


Şimdi bu iki tablo arasındaki ilişkiyi sorgu yaparken nasıl ilişkilendiricez..
Yani gerek veri girerken ve gerekse veri çekerken...Sorgular nasıl hazırlanmalı...
Mesela Türk şiirine ait tüm şiirleri hazırlamak için nasıl bir sorgu hazırlamak gerekiyor ya da Yabancı şiirlere bir adet şiir girmemiz gerektiğinde nasıl bir sorgu hazırlamalayız...

Aslında kafamda ne yapmak istediğimi çok iyi billiyorum ama iki tabloyu bir birine nasıl ilişkilendirebilirim bilmiyorum... Yani bir sorgu içinde iki tablo ilişkilendirilirken tablo isimleri ve alanları nasıl bir düzende yazılır...Bunu bilmiyorum...


Yani yukarıdaki vermiş olduğum örnek sadece öylesine verdiğim bir örnekti ben burada sadece bu yapıda iki tabloyla nasıl çalışabilirizin yanıtını arıyorum...

Aslında bu konuda yazacağım çok şey var ama şimdilik burada bir virgül koyuyorum...

Teşekürler...





< Bu mesaj bu kişi tarafından değiştirildi maratbilgin -- 26 Temmuz 2005, 5:49:42 >
Bu mesaja 1 cevap geldi.
A
20 yıl
Yüzbaşı

Arkadaşım bu sorduğunun çeşitli yöntemleri vardır, en çok kullanılan şeklinde önce ana kategori çağrılır, anakategorilerin idsine göre alt kategoriyi çağırırsın, tabii ki aralarında ortak id kullanman gerekir.

yani önce anakategorilerin hepsini listelersin,

Edebiyat
spor
sinema

gibi, daha sonra istersen link verip GET olarak veya <option> içinde POST olarak bu kategorilerin idsine göre alt kategorileri listelersin yani:

sorgu1='select * from kategoriler';

while ( ..............){

echo '<a data-test="test" rel="nofollow" style="word-wrap: break-word; text-decoration: underline;" target="_blank" onclick="return dhExternalLinkRedirect(this)" href="/ExternalLinkRedirect?module=pgdcode&messageId=3540289&url= '.$PHP_SELF.' ?kategorino='. $sonuc[id] .' " data-href=" '.$PHP_SELF.' ?kategorino='. $sonuc[id] .' ">'. $sonuc[kategori] .'</a><br>';

}

veya

while ( ..............){

echo '<option value=" ' .$sonuc[id] .' ">'. $sonuc[kategori] .'</option><br>';

}

gibi, temel olarak mantık budur.


Birden fazla tabloda sorgu yapmaya gelince bunun için değişik yöntemler vardır.ancak önce tablolar arasında ortak bir alan olmalıdır ki sorgunu o alana göre yaparsın.

select * from tablo1, tablo2

gibi bir sorgu tablo1 ve tablo2 deki bütün kayıtları yan yana listelerken

select tablo1.alan1, tablo2.alan1, from tablo1, tablo2

gibi bir sorgu sadece tablo1 ve tablo2 deki alan1 bölümlerini yan yana listeler

select tablo1.alan1, tablo2.alan1, from tablo1, tablo2 where ( tablo1.alan1=şart ) and ( tablo2.alan1=şart)

sorgusu ise verdiğin şarta göre tablo1 ve tablo2 deki alan1 bölümlerini yanyana listeler.

Alt alta listelemen için union kullanman gerekir.Yani:

( select tablo1.alan1 from tablo1 where=şart) union
( select tablo2.alan1 from tablo2 where=şart)

gibi.

Temelde kullanılan yöntem budur . Ancak her zaman söylediğim gibi bir işi illa aynı yoldan yapacaksın diye bir kural yoktur. Ben sana konuyla ilgili çok güzel bir link veriyim oradaki örneği incele, ne kadar kullanışlı bir yol olduğunu görürsün.

http://forum.ceviz.net/showthread.php?t=7225

Kusura bakma meşgul olduğumdan çok detaylı açıklama yapamadım ancak, verdiğim linkden bayağı faydalanacağını düşünüyorum.Takıldığın yer olursa yine burada sorarsın.


Bu mesaja 1 cevap geldi.
M
20 yıl
Yüzbaşı
Konu Sahibi

Hocam, meşgul olduğum için fazla detaylı açıklayamadım kusura bakma diyorsun(Estağfirullah) ama hem detaylı anlatmışsın hem de bana yol gösterecek nitelikte bilgiler vermişsin... Tam aradığım tarzda bilgiler var bu yazılarının için de .... Ben bunlarla kendimce bişeyler yapmaya çalışayım bakalım...

O vermiş olduğun linke de baktım fakat o bana biraz daha profesyonel gibi geldi...Yani önce ben bi acemice bişeyler yapayım ki daha sonra o tarzda kodlarla uğraşabileyim...

Senin vermiş olduğun bilgiler şimdilik yeterli gibi geliyor hocam... Neler yaptığımı daha sonra buraya yazarım... Bilgilerin için tekrar tekrar teşekkür ediyorum hocam!


Bu mesaja 1 cevap geldi.
A
20 yıl
Yüzbaşı

Estağfurullah arkadaşım rica ederim. Fırsat bulduğumca açık yazmak istiyorum o nedenle öyle diyorum.Vermiş olduğum linkteki bilgiler elbette daha profesyonelce kullanımlar için ancak sırf baştan beri dediğim gibi bir işi yapmanın bir çok yolu olduğunu unutmaman için ekledim, yoksa temelde kullanılan mantık yukarıdadır.

Neyse sen uğraş bakalım inanıyorum ki rahatlıkla üstesinden gelirsin.


Bu mesaja 1 cevap geldi.
M
20 yıl
Yüzbaşı
Konu Sahibi

Selam hocam! Düşüncelerin için tşk ederim.

Konu uzun olduğu için ben hemen neler yaptığıma geçiyorum :)

Kodları yazmadan önce bir giriş yapmak istiyorum...
Burada bir şair isimlerinin bulunduğu bir sayfa ve bu şairlere ait şiirlerin olduğu başka bir sayfa...Tabi bu iki kısmı yapmak için tam 7 tane sayfa hazırladım :))) Yani bir şairin birden fazla şiiri olabileceği için bunu iki tabloda hazırladım... birinci tabloda şairler ikinci tabloda da şiirler olacak...

Önce hazırladığım tabloları yazıyorum

Şairler tablosu:
 CREATE TABLE sairler ( 
no int(8) unsigned NOT NULL auto_increment,
sair varchar(255) NOT NULL default '',
PRIMARY KEY (no)
) TYPE=MyISAM;


Siirler Tablosu

 CREATE TABLE siirler ( 
no int(8) unsigned NOT NULL auto_increment,
siir_adi varchar(255) NOT NULL default '',
siir mediumtext NOT NULL,
sairno varchar(8) NOT NULL default '',
PRIMARY KEY (no)
) TYPE=MyISAM;



Bu tabloları hazırladıktan sonra... İlk başlangıç olarak önce şair isimlerini girmek için bir sair kayıt formu hazırlamam gerekiyordu ve bir "sairekle.html" sayfası hazırladım...

Sairekle sayfası
 <html> 
<body>
<form action=sairkayit.php method=get>
Sair adı:<input type=text name=sair>
<input type=submit value=gönder>
</form>
</body>
</html>


Sair ismin yazıp gönder dediğimizde veritabanına işlemesi için hazırlamış olduğum sairkayit.php dosyasına gidiyor
sairkayit.php
 <?php 

$sair=$_GET[sair];

mysql_connect("localhost","root");

mysql_select_db(edebiyat);


$sql='INSERT INTO sairler(sair) VALUES("'.$sair.'")';

mysql_query($sql);

header("Location:siirekle.php");

?>



Bu sayfada işlem olur olmaz header başlığıyla siirekle.php dosyasına yönlendiriyoruz...

Siirekle.php dosyamızda şöyle:
 <?php 


mysql_connect("localhost","root");

mysql_select_db(edebiyat);

$sql='SELECT * FROM sairler ORDER BY sair DESC';
$sorgu=mysql_query($sql);

echo '<form action=siirkayit.php method=get>Şair Adı:<select name="sair">';

while($veri=mysql_fetch_array($sorgu)){

echo '<option value='.$veri[no].'>'.$veri[sair].'</option>';
}

echo '</select><br>Şiir Adı:<input type=text name="siir_adi"><br>
Şiir:<textarea name="siir" rows=15 cols=35></textarea><br>
<input type=submit value=gönder></form>';

?>


Şiir ekle dosyamızın içinde bir formumuz var ve burada form içinde select tagları içine şair isimlerini çağırıyoruz ve diğer form değerleri girildikten sonra tüm değerleri...siirkayit.php dosyasına gönderiyoruz...

Siirkayıt dosyası da şöyle...
<?php 

$sairno=$_GET[sair];
$siir_adi=$_GET[siir_adi];
$siir=nl2br($_GET[siir]);

mysql_connect("localhost","root");

mysql_select_db(edebiyat);

$sql='INSERT INTO siirler(sairno,siir_adi,siir)
VALUES("'.$sairno.'","'.$siir_adi.'","'.$siir.'")';
$sorgu=mysql_query($sql);


header("location:sairlist.php");


?>



Buradaki sayfada sairler tablosundaki no alanını siirler tablosundaki sairno alanına eşitliyoruz... Ve şiirler tablosuna kaydımızı yapıyoruz...Yani şiirler tablosundaki sairno sairler tablosundaki no alanının değerini alıyor...
Şiirler tablosuna kayıtlar yapıldıktan sonra...sadece şairlerin listesinin bulunduğu sayfaya yönlendirme yapıyoruz...

Sairlist sayfamız da şöyle...
<?php 



mysql_connect("localhost","root");

mysql_select_db(edebiyat);

$sql='SELECT * FROM sairler ORDER BY sair ASC';
$sorgu=mysql_query($sql);


while($veri=mysql_fetch_array($sorgu)){

echo '<a data-test="test" rel="nofollow" style="word-wrap: break-word; text-decoration: underline;" target="_blank" onclick="return dhExternalLinkRedirect(this)" href="/ExternalLinkRedirect?module=pgdcode&messageId=3560580&url=siirsayfasi.php?sair='.$veri[sair].'" data-href="siirsayfasi.php?sair='.$veri[sair].'">'. $veri[sair].'</a><br>';
}


?>



Bu sayfada sairlerin isimleri linkli bir şekilde sıralanıyor ve linklerden herhangi birine tıklandığında siirsayfasi.php de hazırlanmış olan tıklanan linkteki şaire ait şiirlerin adlarının bulunduğu bir sayfa çıkıyor...

Siirsayfası da şöyle...
 <?php 

$sair=$_GET[sair];

mysql_connect("localhost","root");

mysql_select_db(edebiyat);

$sql='SELECT siirler.no,siirler.siir_adi FROM siirler,sairler
WHERE sairler.sair="'.$sair.'" AND siirler.sairno=sairler.no
ORDER BY siir_adi ASC';
$sorgu=mysql_query($sql);

echo $sair.'<br><hr>';
while($veri=mysql_fetch_array($sorgu)){

echo '<a href="siirler.php?sair='.$sair.'&no='.$veri[no].'">'
. $veri[siir_adi].'</a><br>';
}


?>



Ve şiirler sayfasında iki tablo arasında bağlantı kurarak şaire ait olan şiir adlarını sayfada listeledim... Ve bu listelenen şiir isimleri de linkli bir şekilde sayfa gösteriliyor....Hangi şiiradına tıklarsam şiirler.php sayfasına giderek o başlıklı şiiri sayfada gösteriyor...

Şiirler sayfasının kodları da şöyle...

 <a data-test="test" rel="nofollow" style="word-wrap: break-word; text-decoration: underline;" target="_blank" onclick="return dhExternalLinkRedirect(this)" href="/ExternalLinkRedirect?module=pgdcode&messageId=3560580&url=sairekle.html" data-href="sairekle.html">Şair Ekle</a>      
<a data-test="test" rel="nofollow" style="word-wrap: break-word; text-decoration: underline;" target="_blank" onclick="return dhExternalLinkRedirect(this)" href="/ExternalLinkRedirect?module=pgdcode&messageId=3560580&url=siirekle.php" data-href="siirekle.php">Şiir Ekle</a>
    
<a data-test="test" rel="nofollow" style="word-wrap: break-word; text-decoration: underline;" target="_blank" onclick="return dhExternalLinkRedirect(this)" href="/ExternalLinkRedirect?module=pgdcode&messageId=3560580&url=sairlist.php" data-href="sairlist.php">Şair listesi</a><br>

<?php

$no=$_GET[no];
$sair=$_GET[sair];

mysql_connect("localhost","root");

mysql_select_db(edebiyat);

$sql='SELECT * FROM siirler WHERE no="'.$no.'"';
$sorgu=mysql_query($sql);


$veri=mysql_fetch_array($sorgu);

echo '<table align=center><tr><td>
<font face verdana color=red><b>'.$sair.'</b></font>
<br><hr><br></td></tr>';
echo '<tr><td><b>'.$veri[siir_adi].'</b><br><br></td></tr>
<tr><td>'. $veri[siir].'</td></tr></table>';



?>



Evet kodlar bu kadarcık Dimi ne kadar az...7 sayfalık...:))

Hocam öncelikle bu kodları sadece ve sadece çift tablodan nasıl veri çekilir ve iki tablo bağlantılı olarak veritabanına nasıl veri girebiliriz diye denedim... Yani asıl kafamda en üstte söylediğim gibi sınırsız bir üst kategori uygulaması yapmaktı ama onu yapmaya başlarken bir yerde tıkandığımı anladım. Tıkandım derken yapmasına yapıyorum ama edinmem gereken ve eksik kalan yerleri tamamlamam için bir çok örnekler bulmam ve bilgiler edinmem gerektiğime inanıyorum... Yukarıda yazmış olduklarımdan teorik olarak sormak istediğim sorular var ama öncelikle senin bir kontrol edip atmış olduğum adımın ne denli doğru ya da yanlış olduğunu öğrenmek istiyorum...

Bu kodları bugün üçüncü kez yazmak durumunda kaldım...benim pc de deepfreeze kurulu olduğu için ilk hazırladığımda elektirikler gitti ve dosyalar silindi..İkincisinde bi arkadaş gelmişti bilgisayarın kasasını açmak durumundaydık...Sayfaları yedeklemeyi unutmuştum ve o telaşla farkında olmadan bilgisayarı kapatıp açtığımda bu kodlarla uğraşmak istediğimde bilgisayarda deepfreeze kurulu olduğunu anladım ve sinir küpü oldum... :( Ama bunda da vardır bir hayır deyip yeniden yazdım ve bu yazdığımda satır açıklamaları falan girmedim... çünkü gerçekten bunalmıştım... O nedenle şeklen değil de mantıken doğru yolda olup olmadığına bakarsan sevinirim :))

Yorumlarını bekliyorum hocam..
Saygılar...





< Bu mesaj bu kişi tarafından değiştirildi maratbilgin -- 28 Temmuz 2005, 4:38:23 >
Bu mesaja 1 cevap geldi.
A
20 yıl
Yüzbaşı

Arkadaşım öncelikle şunu söylemek istiyorum konu ile alakası yok belki ama :) deepfreeze yerine Norton Ghost kullansan daha iyi gibime geliyor. Ben ghost kullanıyorum ve sabit diskim C,D,E olarak 3 bölüm. C ye gerekli olan ve devamlı kullandığım programlarımı kurdum, Daha sonra Ghostla C nin imajını D ye aldım ayrıca belgelerim ve diğer önemli şeyleri de D de tutuyorum. Böylece kontrol bende oluyor en azından yani sadece ben istediğimde 5 dakikada Bilgisayarı temiz kurulum yapdığım hale getiriyor. Ayrıca web kök dizini olarak C yi seçtiğim için yaptığım çalışmaları mutlaka D ye yedeklerim, ne olur ne olmaz, bir kaç kere başım ağrıdı çünkü, neyse :)

Kodları okurken kafam karıştı, şu anda kafam allak bullak kaç saattir çalışıyorum bir kaç saat sonra sakin kafayla bakarım ancak şunu söyleyim kendini şimdiden sayfayı kendine post ettirmeye alıştır, hem bu kadar fazla sayfaya gerek kalmaz hem de kodların daha derli toplu olur. Biliyorum şu an deneme için böyle yapıyorsun ancak kendini alıştır ki sonra zor gelmesin :)

Şu an için dediğim gibi tam olarak bakamadım ancak seni yine tebrik ediyorum gayet güzel ilerliyorsun, İnşaallah böyle devam eder.


Bu mesaja 1 cevap geldi.
M
20 yıl
Yüzbaşı
Konu Sahibi

Hocam öncelikle Harddiskimin durumunu belirteyim C ve D olmak üzere ikiye böldüm ve birinde 98 diğerinde xp var ve genelde xp kullanıyorum ne zaman 98 ile ilgili bir işim olursa onu kullanıyorum... Ayrıca her ikisinin de norton ghost ile cd ye imajını aldım... Ve deep freeze kurdum... Deep freeze kurmamdaki sebep de şu; hem internette dolaşmış olduğum sayfalardan dolayı temprary files dosyasının artmaması hem de adsl kullandığım için gerek spy trojan vs gibi unsurların bilgisayar yerleşmesi yüksek ihtimal oluyor...Deep freeze de pc ye reset çekmemle pc sıfırlanıyor... Bilgisayara yaklaşık 8 ay önce format çekmiştim ve şu anda bile yeni format çekilmiş gibi performans gösteriyor... Deepfreeze de sanal bellek oluşturup kayıt etmek istediğimiz dosyaları buraya kaydedebiliyoruz ama ben gerek duymuyorum...Ben kaydedeceğim dosyaları hafıza kartına yüklüyorum ve bunu deepfreeze devre dışı bıraktığım zaman pc ye yüklüyorum ya da cd de yedekliyorum... Yani işimi rahat rahat görüyorum... Şu andaki kullanmış olduğumuz programlara bakıyorum ve 5 sene öncesine dönüyorum...Bayağı bir gelişme var...

Yine de tavsiyen için tşk ederim hocam ...Gerçekten Norton Ghost vazgeçilmez bir program..

Konuya dönüyorum :)

Hocam yazdığım kodlara hemen bakmana gerek yok yani ne zaman müsait olursan o zaman bakarsın... Ki üstelik çalışma esnasındaymışsın...İşlerinin arasında bir de buna bakma gibi bir durum olursa ben vicdanen rahat olamam...
O nedenle sen istersen 15 gün sonra yanıt ver veya belki müsait değilsindir hiç verme...Geçmişte yazmış oldukların bana kazandırdıklarını bir kenara atamam... Lütfen kendini ne zaman rahat hissedersen ve ne zaman sakin bir kafayla müsait görürsen o zaman yanıt ver...

Sayfayı kendine post ettirme konusuna gelince aslında bunun gibi birçok şey var kafama takılan ama bazı şeyleri öğrenmeden bunları sormanın pek bir anlamı olmaz gibime geliyor... Çünkü ilk defa böyle 7 sayfalık bir birine bağlı bir script hazırladım... Önce bunun yapılma yolunu bilmem gerekir ki daha sonra bunu daha modernize bir şekle sokabileyim...

Ama hocam gerçekten sana söylüyorum...Kaynak kitaplara, dökümanlara,internette makalere, forumlardaki yazılara vs hepsine bakıyorum...Oralarda bilinç altına teorik olarak bilgiler alıyorum fakat uygulamaya geçmeden önce anahtarı hep senden alıyorum..:) Teşşekürler Hocam !

Ayrıca iyi çalışmalar...


Bu mesaja 1 cevap geldi.
A
20 yıl
Yüzbaşı

Arkadaşım düşüncelerin için teşekkür ederim öncelikle.Kodları inceledim, denemedim tabii ama şu haliyle bir yanlışlık yok ve güzel bağlamışsın.Ancak bir kaç şey söylemem lazım.

Öncelikle veritabanı bağlantını en başlarda yapmış olduğumuz gibi ayrı bir sayfada yap ve require_once ile çağır ayrıca bağlantıyı mysql_pconnect ile kalıcı olarak bir kere yap ve tekrar tekrar bağlanma daha hızlı olur. Ayrıca SELECT gibi veritabanından değer döndüren sorgulardan sonra mutlaka mysql_free_result() ile hafızayı boşalt.

İkinci olarak formdan bilgi gönderdiğin durumlarda POST kullan, hep GET kullanmışsın.GET kullandığın durumlarda gönderdiğin bilgi hem sınırlıdır hem de UTF ile kodlanmış metin olarak tarayıcının adres çubuğunda kötü bir görünüme neden olur.

Üçüncüsü de sayfayı kendine POST ettirme konusunda gözün korkmasın zor bir şey değil, tek yapacağın
POST değişkeni dolu mu bakacaksın, doluysa işlemi yapacaksın yani:

<?php

if( isset($_POST) ) {

$deger=$_POST['deger'];
$deger2=$_POST['deger2'];

$sql=...............
mysql_query($sql);
..........
..........
...........
//Daha sonra ister yönlendirme yaparsın:

header( 'Location: yonlendirilecek.php');

//veya mesajını yazarsın:
echo 'İşleminiz yapılmıştır';

// gibi

}

?>

<html>
Form bölümünü buraya yazacaksın action olarak kendini göstereceksin yani:

<form name="formadi" method="post" action="<?php echo $PHP_SELF ; ?>" >
..........
............
...........

</html>

Gördün mü bu kadar basit, biliyorum baştan normalini yapıyım diyorsun ancak dediğim gibi kendini şimdiden alıştırtırsan daha iyi olur, hatta sayfayı kendine bir kaç kere POST bile ettirebilirsin.

Neyse benimki sadece tavsiye, tabii ki kendi çalışma şeklini kendin belirleyeceksin, çünkü en iyi yol bildiğin yoldur unutma.

Bunların dışında tebrik ederim gayet güzel yapmışsın.


Bu mesaja 1 cevap geldi.
M
20 yıl
Yüzbaşı
Konu Sahibi

Hocam yanıtların için öncelikle tşk ederim... Sanki beynimi okuyorsun...Nedenini söylemeden önce birkaç şey belirteyim...

Yukarıda hazırlamış olduğum kodlar zaten kategori konusuna bir girişti... Asıl yapmak istediğim üst kategorinin altında birden fazla kategori oluşturabilmeyi öğrenmek...Tabi bunu yapmayı öğrenmek için önce yukarıda hazırlamış olduğum basit bir uygulamayı yapmaktı... Bunu yapıp ve akabinde senden alacağım yanıtlar doğrultusunda sorularımı sorarak diğer konuya adım atmaktı... Ama eksik olma sen soracağım sorulardan bir kaçına yanıt verdin... :))

Şimdi sorularıma geçiyorum hocam;

Madde madde belirteyim ki karışmasın...Hem her madde ye ait bir açıklama yapayım ki daha anlaşılır olsun...

1) mysql_free_result; komutu...

Hocam inanır mısın bu komutu senden gördüğüm için bu kodlar içinde uyguladım ve bu komutta hata verdi...Şimdiki yazını okuduğumda '"SELECT" gibi veritabanından değer döndüren sorgulardan sonra mutlaka hafızayı boşalt' demişsin Sanırım ben bunu Insert sorgusunda kullanmış olacağım ki orada hata verdi, Eğer doğruysa.. SELECT sorgusundan başka herhangi bir sorguda da bunu kullanmak gerekiyor mu?

2)mysql_pconnect();

Hocam bunun sürekli bir bağlantı olduğunu ve bunu kullandığımızda iki de bir bağlantı yapılmayacağı için hız performansı yükseliyor... Hocam tamam bu kodu ben sürekli kullanırım ama neden çoğu makalelerde mysql_connect() kullanılıyor hatta biz bile bu topicte ilk yazdığımız kodlarda mysql_connect kullandık... Aslında buna benzer kafama takılan çok şey var... mesela close,exit vs gibi...

3)$_POST;

Hocam bu konuda nasıl bir tecrübe yaşadığımı belirteyim... Ben yukarıdaki kodları buraya yazdıktan sonra...Senden henüz yanıt gelmemişti...Ve o kodları kullanarak yaklaşık 20 ,30 tane şiir yükledim formdan veri tabanına... Tabi form da get metoduyla hazırlanmıştı... Göndermiş olduğum bir şiir çok uzundu ...formdan gönderiyorum gitmiyor, gönderiyorum gitmiyor... Bir an moralim o kadar bozulmuştu ki...Yazmış olduğum kodlar bir yere kadar çalışıyor ve sonrasında sekteye uğruyor diye hevesim kursağımda kalmıştı...Tabi yetinmedim durdum düşündüm neden gitmiyor diye...Sonra bir kısa bir de uzun şiir gönderdim kısa olan gitti uzun gitmedi...Daha sonra uzun olandan azar azar yazı silerek gönderdim ...Karakter sayısı bir müddet sonra azalınca gönderdim..Ve sonra farkına vardım ki göndermiş olduğumuz get metodlu formdaki veriler browserın adres çubuğuna yerleşiyor ve sanırım yazmış olduğum şiirin karakter sayısı browserın kapasitesini aşıyor.. o nedenle kabul etmiyor... Ne yapmalıyım diye düşündüm...Daha sonra Post metodunun verileri adres çubuğunda göstermediğini bildiğim için bu metodu denedim... VE o uzun mesajı gönderdim...Ve o kadar büyük bir haz duydum ki... Bu olayla birlikte POST ile GET arasındaki farkı çok iyi anladım... Daha sonra senin yanıtında da böyle bir yanıt alınca hem şaşırdım hem de çok mutlu oldum...Yani ben get metoduyla hazırlayıp ve üzerinde uzun bir şiir denemesi yapmamış olsaydım ileride hazırlayacağım bir script te bunun hiç farkına varamayacaktım...Ama ben bunu denememiş olsaydım bile demekki bu konuda beni uyarmış olacaktın...Bu nedenle gerçekten çok sağol hocam...(Gerçekten çok önemli bir konu); Peki hocam biz bütün işlemlerimizi post üzerinden yapmış olursak get metodu ne işe yarar...Ya da get metodunu kullanacağımız belirgin bir yer var mı? Yani şöyle bir uygulamada ancak get metodu kullanılabilir diyebileceğimiz bir yer var mı? Çünkü bu durumda Post daha kullanışlı gibi geldi...

4)Hocam header başıkları için daha önceki mesajlarımda bir soru sormuştum... Yani html tagından sonra kullanıldığı takdirde hata mesajı çıkar diye... Sen de bana sayfanın en başına ob_start() kullanırsın sorun çözülür demiştin... Ben bunu böyle bir durumda kullandım... Yani sayfada html kullanılmış ve ortalarda ya da sonlarda header kullanıldığında sayfanın en başına <?php ob_start(); ?> diye bir kod ekledim bu sefer bu kod hata verdi.. Acaba PHP.ini ile ilgili ayarlamam gereken bir yer mi var...?

5)Sayfayı kendine post etmek;

Yukarıda yazmış olduğun kodlarda peki sıralama önemli mi hocam...

Yani ilk önce <?php ?> kodları yazılmış sonra html içinde form kodları ... Bunların yerini değiştirsek bir sorun olur mu? yani sıralama önemli mi? Yani önce html ve içinde form kodları... Daha sonra <?php ?> kodları...

Bir de o form içine php kodları gömülmüş... Bu yöntem bende çalışmıyor... yani html içine php kodunu gömdüğümde hata veriyor... Yine burada aynı soruyu soruyorum PHP.ini nde yapmamız gereken bir ayar var mı? Ya da şöyle belirteyim ....İlk defa kurmuş olduğumuz php sunucusunda yapılacak ve olması gereken ayarlar nelerdir...? Çünkü biz mevcut ayarları kabul ederek kodlarımızı çalıştırıyoruz...


Bir de form içinde <form name= formadi.... Buradaki name bölümünün kullanılmasındaki sebep nedir? Yani normalde diyelim ki input bölümünün name=ad values=marat olarak yazdığımızda... $adi="marat"; değişken ve değer atıyor... Bu forum name bölümünün nasıl bir işlevi oluyor?



6) Hazırlamış olduğum kodlarda bir sorguda iki tabloyu nasıl ilişkilendirdiğim konusunda bişey demediğine göre doğru yolda olduğumu sanıyorum... O konuya değinmeden Form içinde kullanmış olduğum Select tagı hakkında birşey sormak ve tam olarak emin olmak istiyorum...
Mesela form içinde şöyle bir tag olduğunu varsayalım...
<select name=ad>
<option values=1>ahmet</option>
<option values=2>mehmet</option>
<option values=125>Veli</option>
</select>

Şimdi form içinde;
ahmet seçilirse $ad=1
mehmet seçilirse $ad=2
veli seçilirse $ad=125

olarak mı atanır... Yani ben o select tagındaki ilişkiyi kuralını bildiğimden değil php kodlarındaki mantığı düşünüp buraya tatbik ederek yaptım :))
Acaba select tagının mantığı yukarıda belirttiğim şekilde mi işliyor...?

Hocam umarım abuk subuk sorular sormamışımdır...

Teşekkürler...





< Bu mesaj bu kişi tarafından değiştirildi maratbilgin -- 30 Temmuz 2005, 19:54:21 >
Bu mesaja 1 cevap geldi.
A
20 yıl
Yüzbaşı

Arkadaşım daha öncede değiğim gibi soru sormaktan çekinme.Aslında başına böyle aksaklıklar gelmesi bir bakıma bayağı iyidir.Çünkü hatanın nerede olduğunu bulmak için uğraşırsın bulduğunda ise adeta beynine
kazınır, bir daha unutmazsın.Sorularına gelince:

1-) mysql_free_result(); komutunu yukarıda da söylediğim gibi select gibi bize bir bilgi kümesi döndüren sorgulardan sonra kullanmalıyız ki böylece işimiz bittikten sonra
hala hafızada yer ayrılmamış olur.Mesela

$sorgu='select * from tablo1';
mysql_query($sorgu);

$sorgu='select * from tablo2';
mysql_query($sorgu);

değişkenimiz değişmesine rağmen ilk komutta hafızaya ayrılan alanı boşaltmadığımızdan select * from tablo1' den dönen bilgi hala hafızada tutulur.
Eğer insert, update, delete gibi geriye bilgi dönmeyen sorgu yapacaksak mysql_query() yerine mysql_unbuffered_query() kullanmalıyız ki boş yere tampona işimize yaramayacak
bilgi atılmasın.Tabii etkilenen satırları bilmeye ihtiyacımız yoksa.Yani yukarıda ki örnekte senin bir şair eklemen veya şiir eklemenden sonra geriye bir bilgi dönmesi gerekmez.

2-) mysql_pconnect(); kullanımı da hatırlarsan en başlarda söylememiştim ama daha sonra mysql_pconnect(); kullanmalısın demiştim onun nedeni de baştan kafanı karıştırmamak içindi
tıpkı yukarıda mysql_unbuffered_query()' den şimdi bahsetmem gibi.mysql_pconnect(); tıpkı mysql_connect() gibidir ancak iki farkı vardır.Birincisi mysql_pconnect(); kullandığımız zaman
program önce aynı değişkenlerle yani host, kullanıcı adı ve şifre ile yapılmış bir bağlantı linki arar varsa o bağlantıyı kullanır yoksa oluşturur.
İkincisi ise bu bağlantı mysql_close() komutuyla kapanmaz, o nedenle persistent yani kalıcı bağlantı denir.mysql_connect()ise her seferinde yeni bir bağlantı oluşturur ve sen bir
yerde mysql_close() kullanmadıyan scriptin bitiminde kendisi program tarafından kapatılır.mysql_close() kullandıysan o anda kapatılır.O nedenle mysql_pconnect(); kullanımı daha hızlıdır.

3-) POST ve GET metoduna gelince hangisi o anda senin için uygunsa onu kullanman gerekir.GET metodu yukarıda da dediğimiz gibi sınırlıdır.POST ile ise sınırsız bilgi gönderebilirsin.
Tabii sunucudan belli bir limit konulur ancak teorik olarak istediğimiz kadar bilgi gönderebiliriz.Çok fazla bilgi göndermemiz gereken formların olduğu sayfalarda POST tabii ki daha kullanuşlıdır.
Ancak GET metodu da kimi yerde daha rahat olur, yani sen bir link verirken direk <a href="falan.php?a=155&b=17"> gibi direk bilgi gönderebilirsin.Oysa POST da bunu yapabilmen için tek tek tanımlaman lazımdır.
Uzun lafın kısası o anda senin için hangisi uygunsa onu kullanırsın.

4-) Bunun Php.ini ile alaksı yok normalde tarayıcıya header göndermeden önce ister html olsun ister echo ile ekrana çıktı verdiysen hata verir.ob_start(); koymanın amacı ise önce sayfanın tamamen yorumlanıp
sonra çıktıyı göndermesini sağlamaktır.Zaten ob_start() fonksiyonu output buffering demektir.Kullanımında <?php yazdıktan sonra direk ob_start(); yazmalısın sayfanın en başında bir tek beyaz boşluk olsa bile
hata verir ayrıca optimize kullanım için en sonda ob_end_flush();kullanarak hafızayı temizlemelisin yani:
<?php
ob_start();
.........
..........
...........

ob_end_flush();

?>

şeklinde olacak.Yalnız sakın yanlış düşünme ob_start(); pek çok yerde kullanılır.Mesela manuelde geçen örneğin benzerini veriyim burada:

<?php

function degistir($deneme)
{
return (str_replace('elma', 'portakal', $deneme));
}

ob_start("degistir");

?>

<html>
<body>
elma yazdık portakal olacak
</body>
</html>

<?php

ob_end_flush();

?>

gördüğün gibi program önce verdiğimiz fonksiyonları uyguluyor sonra çıktıyı veriyor.

5- ) Sıralama yazdığın sayfaya göre önemlidir, yani başta denetlemeyi yaparsın sonra denetlemenin sonucuna göre işlem yaparsın.
eğer <?php ;?> kısmını HTML bölümünden sonraya alırsan program baş tarafta HTML kısmını işler sonra kod bölümüne geçer.Bu da yanlış sonuç doğurur.

Form içine HTMl kodları gömülmüş bu yöntem bende çalışmıyor demişsin, ancak çalışması için sayfanın html değil php uzantılı olması gerekir.Şimdi kafan karışmasın
çok yerde html uzantılı gözüküyor diye ama unutma ki onu sunucu ayarlarından değiştiriyorlar.Tıpkı bu forumun da asp olmasına rağmen uzantısının html görünmesi gibi
Ayrıca hatırlarsan daha önce de değindiğim gibi html ile yapabildiğin işi PHP ye echo ile bastırmaktansa php kodu kullandığın yerde html içine kodu gömmek çok
daha performanslı çalışır.Çünkü PHP yorumlayıcı gereksiz yere html ile uğraşmamış olur.

form name ise php ile değil daha ziyade HTMl ile alakalıdır. Javascript ve DOM kullanacağın zaman istediğin elemana name özelliği ile ulaşırsın hatta
şimdiden elini alıştırıp hem name hem de id vermen gerekir.Yani diyelim ki bir formun ve isim diye bir inputun var

<form name="deneme" id="deneme" ........>
<input type="text" name="isim" id="isim">
<input type="submit" value="gönder" onClick="return onay()">

gibi.Daha sonra javascript ile denetim yapman gerektiğinde
mesela:

<script type="text/javascript">

function onay(){
var i= document.deneme.isim.value
if (i=='' || i==null){
alert ('Lütfen İsminizi yazınız');
return false;
}
}
</script>

gibi denetleme yapmanı sağlar.Gördüğün gibi burada i değişkenimize formun ismine ve inputumuzun ismine göre değer veriyoruz.Aynı şekilde id ile de değer verebilirdik.

6-) <select> tagının kullanımı dediğin gibidir yani eğer <select><option value="1">Ahmet</option></select> şeklindeyse PHP ile bu değeri aldığımızda
bize 1 değeri gelir.Eğer <select><option>ahmet</option></select> gibi kullanırsak yani option value'si yoksa değer olarak 'Ahmet' gelir.