• 08-10-2009, 19:38:06
    #1
    Ö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...
  • 08-10-2009, 19:41:36
    #2
    $cek = mysql_query("SELECT baslik FROM yazilar where KOLONADI like '$arama'");

    altı çizili ve kırmızı olan yeri ekleyiniz kendi tablonuza göre
  • 08-10-2009, 19:46:33
    #3
    Haymac adlı üyeden alıntı: mesajı görüntüle
    $cek = mysql_query("SELECT baslik FROM yazilar where KOLONADI like '$arama'");

    altı çizili ve kırmızı olan yeri ekleyiniz kendi tablonuza göre
    öncelikle çok saol...
    hocam verdigim kelimede kelimenin geçtigi baslikları çekmedi maalesef..
  • 08-10-2009, 19:48:24
    #4
    $cek = mysql_query("SELECT baslik FROM yazilar where KOLONADI like '%$arama%'");

    yapınız. % karakteride ekleyelim o zaman.
  • 08-10-2009, 19:54:08
    #5
    Haymac adlı üyeden alıntı: mesajı görüntüle
    $cek = mysql_query("SELECT baslik FROM yazilar where KOLONADI like '%$arama%'");

    yapınız. % karakteride ekleyelim o zaman.
    hocam çok teşekkür ederim verdiginiz şekilde oldu...
  • 08-10-2009, 20:39:02
    #6
    Üyeliği durduruldu
    Z9Real adlı üyeden alıntı: mesajı görüntüle
    Ö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.