Öncelikle merhabalar
arkadaşlar phpde arama yapmak konusunu çok araştırdım ama hep hazır kodlar verilmiş... O kodlar içindende şöyle bir şey çıkardım...
ara.php?arama=kelime
şeklinde yapmak istedim..
<?php
$arama=$_GET['arama'];
$cek = mysql_query("SELECT baslik FROM yazilar like '$arama'");
while($yaz = mysql_fetch_array($cek)){
echo "$yaz[baslik]<br>";
}
?>yalnız olmadı...
bu kodlarda nasıl bir düzenleme yaparsak arama yapabilrim...
ilgilenen herkese teşekkürler...
Sorgu cümlende hata var, SELECT baslik FROM yazilar like '$arama' yerine SELECT baslik FROM yazilar WHERE alanadi like '$arama'
şeklinde yaparsan çalışır.
Ayrıca like '$arama' şeklinde kullanmak bulunacak olan şeyi kesin ifade olarak kabul eder, yani aranan sözcükler bire bir aynı verieleri bulur, toleranslı değildir. LIKE ve ardından gelen
% işareti ile kriterimizi belirtir veriyi çekeriz. Örnekler ve açıklamalar ile detaylandıralım,
Like komutunda "%" işareti kullanımı
Aşağıdaki sql sorgusuyla Username sütununda "
de" geçen olan bütün kayıtlar dönecektir; deniz, önder, adem, derya, hande vs vs.
SELECT * FROM users WHERE username LIKE '%de%'
Eğer birden çok field içinde arama yapılmak isteniyorsa AND ve OR ifadeleri kullanılarak
birden çok field içinde arama yapılabilir, aşağıdaki örneğimiz makaleler tablosunun
baslik ve yazi fieldlerinde "elma" kelimesi geçen kayıtları döndürür,
fakat burada dikkat edilmesi gereken, "elma" kelimesinin 2 alandada geçmesi şartıdır. SELECT * FROM makaleler WHERE baslik LIKE '%elma%' AND yazi LIKE '%elma%'
OR İfadesi kullanılarakta seçilen alanlardan her hangi birinde arama sözcüğü geçiyorsa kayıt listelenir,
AND ile aynı değildir! Aşağıdaki örnek,
baslik veya yazi alanında "elma" geçen tüm satırları döndürür.
SELECT * FROM makaleler WHERE baslik LIKE '%elma%' OR yazi LIKE '%elma%'
Aşağıdaki sorguda
username sütununda ilk iki harfi
"mu" olan bütün kayıtlar dönecektir; murat, mustafa, muzaffer vs vs..
SELECT * FROM users WHERE username LIKE 'mu%'
bu sefer ise username sütunundaki "m" harfi ile başlayan kayıtlar döndürülür. SELECT * FROM users WHERE username LIKE 'm%'
Birde bu % işaretinin, kelimenin sonundan arayan kullanımı var, bu örneğimiz lastname sütunundaki sonu "az" olan satırları listeleyecektir;
yılmaz, kaymaz, solmaz vs vs.
SELECT * FROM users WHERE lastname LIKE '%az'
Bu şekildede lastname sutünundasonu "z" ile biten satırlar döndürülür.
SELECT * FROM users WHERE name LIKE '%z'
NOT LIKE kullanımı
Not like komutunuda, adından anlayacağımız gibi, belirlediğimiz koşula uymayan satırları listelemek için kullanıyoruz.
ör; "ke" ile başlamayan satırlar, yani kemal, kezban, kerem, kenan vb isimler hariç tüm kayıtları alır. hasan, murat, recep, döndü (
) herneyse.
örnek verelim;
SELECT * FROM users WHERE name NOT LIKE 'ke%'
Birde like nin regexp olayı var, burada sadece genel kullanım komutlarını anlattım, ilerde onun için makale yazacağım, kolay gelsin.