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