• 12-07-2009, 16:44:01
    #10
    Üyeliği durduruldu
    janocan adlı üyeden alıntı: mesajı görüntüle
    Teşekkür ederim, bu sorun çözüldü.

    Şimdi farzediyorum ki biri bir yazarın adını yazıp arama yaptı, arama motorum sadece yazarlar arasında öyle biri varsa vermeli.

    Fakat şimdi ben ne ararsam arayayım, arama motorum sitede var olan tüm verileri sıraya diziyor.
    <?
    if( !isset( $limit) )$limit=0;
    $sorgu=mysql_query( "SELECT oykuler.id, oykuler.yayin, oykuler.yazarid, oykuler.turid, oykuler.dilid, yazarlar.ad, diller.ad, turler.ad"
    . "\n FROM oykuler"
    . "\n JOIN INNER yazarlar ON oykuler.yazarid = yazarlar.id"
    . "\n JOIN INNER turler ON oykuler.turid = turler.id"
    . "\n JOIN INNER diller ON oykuler.dilid = diller.id"
    . "\n WHERE yazarlar.ad LIKE '% $ara%' OR turler.ad LIKE '% $ara%' OR diller.ad LIKE '% $ara%' AND oykuler.yayin='E' ORDER BY oykuler.id LIMIT $limit,20" , $link);
    while(
    $veri = mysql_fetch_array($sorgu) )
    {
    ?>
    inner join yerine left join kullanın biraz daha hızlı olucaktır.

    yazarlar.ad LIKE '% $ara%' OR turler.ad LIKE '% $ara%' OR diller.ad LIKE '% $ara%' AND oykuler.yayin='E'
    yazımı yanlıştır
    (yazarlar.ad LIKE '% $ara%' OR turler.ad LIKE '% $ara%' OR diller.ad LIKE '% $ara%') AND (oykuler.yayin='E')

    tüm verilerin listelenmemesi için php ile kontrol ederek yazar adı girilmiş ise
    where (yazarlar.ad LIKE '%$ara%') AND (oykuler.yayin='E')
    tüm alanlarda arama yapmayın ve OR yerine AND kullanın

    kullanıcı yazar adı girdi ve hem de tür seçti ise
    where (yazarlar.ad LIKE '%$ara%' AND turler.ad LIKE '%$ara%') AND (oykuler.yayin='E')
    vs vs...

    kolay gelsin
  • 12-07-2009, 22:46:36
    #11
    sweatcell hocama sonsuz teşekkürlerimi sunuyorum. Söylediklerinizin hepsini yapınca artık hiçbir sonuç vermemeye başladı. Belki hata bendendir tabii, yaptıklarım hakkında tam olarak tecrübe sahibi değilimi.

    bir de şunu merak ediyorum...
    (if) eğer diller seçeneğinden bir dil seçildiyse sadece o dildeki içerikleri sırala
    (if) eğer yazarlar seçeneğinden bir yazar seçildiyse sadece o yazarın içeriklerini sırala
    (if) eğer bir tür seçildiyse sadece o türün içeriklerini sırala...
    Çoklu aramadaki derdim bu, bu mysql bölümünü de bunun için hazırladım.
  • 12-07-2009, 23:05:04
    #12
    Ntie adlı üyeden alıntı: mesajı görüntüle
    <?php
    include("aynasiz.php");
    $nerde=mysql_query( "SELECT model, marka, sehir FROM arac_satis WHERE model LIKE '% $ara%' OR marka LIKE '% $ara%' OR sehir LIKE '% $ara%' ORDER BY id LIMIT $limit,20" , $link);
    $sonuc=0;
    while($bul=mysql_fetch_array($nerde))
    {
    $sonuc++;
    $model = $bul['model'];
    $marka = $bul['marka'];
    echo "kayit var İşte burda $model ve $marka";
    }
    if ($sonuc==0){
    echo "Sonuç yoksa yapacak birşeyde yok demektir.";
    }
    ?>
    .
    Demiş bir yerde...