MySQL veritabani
tablolarinda kullanilan ve bir tablo alaninin
AUTO_INCREMENT olarak tanimlanmasi sonucu her satirdaki verinin
kolayca
indexlenebildigi (MySQL Primary Key olarak tanimalanan alani
ayni
zamanda indexler.) ve birbirinden essiz olarak ayrilabildigi
alanlari tutup
da verilerinizi web uzerinde gosterirken numaralandirmak icin
kullanmayiniz.
Unutmayin tablodaki her alan PRIMARY KEY (birincil anahtar)
olarak
tanimlanabildigi gibi bu tablo alanlarinin birlesimi olarak
da PRIMARY KEY
tanimlanabilir.Sonucta bir veriyi sildiginizde artik o alana
ayrilmis olan
sayisal deger tabloda bir asimetriklik yaratir.Ornegin verileriniz
1,2,3,4,5...
olarak siralaniyor ise dogal olarak siz 4 degerine sahip veriyi
sildiginizde
artik bu sayisal siralama da bozulur.
Bu durumda direkt olarak bu alandan aldiginiz verileri,asagidan
yukari dogru
siralama yaparken HTML sayfasinda index olarak kullanirsaniz,sonucta
ilk
baslarda basarili olsaniz dahi sonradan yeni veriler eklendiginde
veya
silindiginde sizde bu isten zararli cikarsiniz...
Bu ornegimizde sizlere bir dongu icinde verilerinizi nasil
kolayca
numaralandirabileceginizi gosterecegiz.Boylece veritabanindaki
bir alani alip
gostermek yerine dongu sayacini siralama araci olarak kullanacagiz.
Veritabani tablosundaki 1,2,3,4,5,7,9,12 gibi degerler artik
bizim icin herhangi
bir sorun teskil etmeyecek.Hem zaten o alanlar verileri kullaniciya
gosterirken
siralama araci olarak degil,verileri tanimlamak icin birer
essiz anahtar olmasi
amaciyla kullaniliyorlar...
Simdi elimizde bir veritabani tablosu var ve bizde bu tablodan
yapilan arama
sonuclarini ekranda listeleyecegiz.Bu listeleme ornegin 8
kayit arama sonucunda
bulunmus ise 1 den 8'e kadar yapilacak.Ornegimizde bir kitapcidaki
veritabaninda
ornegin degisik kategorilerdeki kitaplari verdigimiz anahtar
kelimelerle
aradigimizi dusunelim.Kullanici bir cek-birak menuden kategoriyi
seciyor ve
altindaki kucuk arama kutusuna ise istedigi anahtar kelimeyi
yaziyor.
Simdi bu HTML arama sayfasini gormek icin asagidaki linke
tiklayiniz :
http://www.turk-php.com/ornekler/mysql/kitap_ara.html
Evet bu basit sayfayi gordugunuze gore simdi bu sayfadan alinan
verilerin MySQL
veritabaninda, PHP kullanilarak nasil uygulandigina bakalim.Hersey
belirli bir
sira ile ve normal sekilde gerceklestiriliyor.Tek fark HTML
ciktisi alinirken
buldugumuz arama sonucuna gore tum kayitlari 1 den baslayarak
numaralandirarak
listeliyoruz...
Sozu fazla uzatmadan koda gecelim :
<html>
<head>
<title>Arama Sonuclari</title>
<body>
<h1> .::: Arama Sonuclari :::.</h1>
<?php
trim ($aranan_kelime); //Kelimenin saginda ve solundaki
beyaz bosluklari sil
if (!$aranan_kategori || !$aranan_kelime)
{
echo "Arama ile ilgili tum detaylari girmediniz";
exit;
}
$aranan_kelime = addslashes($aranan_kelime); //Gerekli olan
yerlere slash ekle
$aranan_kategori = addslashes($aranan_kategori);
$db = mysql_pconnect("localhost","turkphp_user","*******");
if (!$db)
{
echo "Veritabani ile ilgili bir problem var";
exit;
}
mysql_select_db("turkphp_veritabani");
$sorgu = "SELECT * FROM kitaplar";
$sorgu .= " WHERE ". $aranan_kategori ." LIKE '%". $aranan_kelime
."%'";
$sonuc = mysql_query ($sorgu);
$sonuc_sayisi = mysql_num_rows($sonuc);
echo "<p>Bulunan Sonuc Sayisi : ". $sonuc_sayisi ."</p>";
for ($i=0; $i<$sonuc_sayisi;$i++)
{
$satir = mysql_fetch_array($sonuc);
echo "<p><strong>". ($i+1) ."Baslik:";
echo htmlspecialchars(stripslashes($satir["baslik"]));
echo "</strong><br>Yazar:";
echo htmlspecialchars(stripslashes($satir["yazar"]));
echo "<br>ISBN:";
echo htmlspecialchars(stripslashes($satir["isbn"]));
echo "<br>Fiyat:";
echo htmlspecialchars(stripslashes($satir["fiyat"]));
echo "</p>";
}
?>
</body>
</html>
Ornek Dosyalar
http://www.turk-php.com/ornekler/mysql/kitap_ara.html
http://www.turk-php.com/ornekler/mysql/kitap_ara.phps
http://www.turk-php.com/ornekler/mysql/kitap_ara.sql
Serkan Hadi Ceylani
serkan@turk-php.com
|