• 12-08-2007, 03:24:12
    #1
    merhaba arkadaşlar,
    şu an saat 03.20 ve ben hala internette çözemediğim bir konuyu araştırmaktayım. inşAllah burda çözeceğiz.

    benim çözemediğim konu şudur arkadaşlar.

    site adresi : Programlar Full Programlar Oyunlar indir Download Yeni Son Sürüm

    mesela web sitemde arama yapıyorum

    örnek:
    "winamp" kelimesini aradığımda 30 adet program listeleniyor. fakat
    "winamp player" veya "winamp media" yazdığımda sıfır sonuç çıkıyor.

    aslında sitemde bu kelimelere ait bir çok program ve açıklama var. ve benim istediğim ise

    örnek : "winamp player" diye arama yaptığımızda hem "winamp" hemde "player" kelimesi geçen program veya açıklamaları listeletmek istiyorum.

    arkadaşlar bunu nasıl yapabiliriz php coder arkadaşlar için belkide basit bir konudur fakat ben yapamadım yardım ederseniz çok makbule geçecek.

    ara.php ve sol.php dosyasını txt yapıp ekledim inceleyebilirsiniz. saygılar.
  • 12-08-2007, 07:28:47
    #2
    Üyeliği durduruldu
    Kodu açıp bakmadım ama yapacağını söyleyebilirim önce gelen kelime gurubunu explode ile dizi içine parçalar halinde atacaksın winamp player şeklinde 2 kelimen olacak sonra aşağıya kelime sayısı kadar dönecen bir döngü oluşturman lazım count($dizi) bundan faydalanabilirsin.
    Bundan önce sql cümlesinin başını yazman lazım where den sonraki kısım için döngü başlatıp sorguyu tamamlaman lazım sana örnek bir sorgu yazcağım bunun gibi birşey oluşturursan döngülerler sorunun çözülür.
    SELECT * FROM table WHERE (baslik LIKE '%winamp%' OR title LIKE '%player%' ...... aynı şekilde devam ettire bilirsin aralarına OR koyarak) OR (acikalama LIKE '%winamp%' OR acikalama LIKE '%player%' buda aynı şekilde devam ettirilebilir)
    eğer başlık ve açıklama içinde hem winamp hem player geçen kayıtları görmek istiyorsan baslik LIKE '%winamp%' OR title LIKE Buradaki ve
    acikalama LIKE '%winamp%' OR acikalama LIKE '%player%' Buradaki OR ları AND yapabilirsin.
    Benden bu kadar. Kolay gelsin
  • 12-08-2007, 08:41:46
    #3
    Ben de forumda bir cümledeki farklı kelimeleri ayırt etmeyi yazmıştım bi kaç gün önce. onunla aranan cümleyi kelimelere bölebilirsin.
    $aranalar=explode(" ",$aramadegiskeni);
    şeklinde başlayacaksın. işlemler gerçekleşince
    $sonsayi=count($arananlar)-1;
    for ($i=0;$i<count($arananlar);$i++);
    if($i != 0)
    $arama.=' OR LIKE\'%';
    $arama.=$arananlar[$i];
    if ($i!=$sonsayi)
    $arama.='%\'';
    }

    yazıp sorgu içine sokabilirsin. bunları yapınca, ersinin yazdğı sorguyu kullanabilir hale geliyosun.
  • 12-08-2007, 10:24:29
    #4
    Üyeliği durduruldu
    Seyranli adlı üyeden alıntı: mesajı görüntüle
    Ben de forumda bir cümledeki farklı kelimeleri ayırt etmeyi yazmıştım bi kaç gün önce. onunla aranan cümleyi kelimelere bölebilirsin.
    $aranalar=explode(&quot; &quot;,$aramadegiskeni);
    şeklinde başlayacaksın. işlemler gerçekleşince
    $sonsayi=count($arananlar)-1;
    for ($i=0;$i<count($arananlar);$i++);
    if($i != 0)
    $arama.=' OR LIKE\'%';
    $arama.=$arananlar[$i];
    if ($i!=$sonsayi)
    $arama.='%\'';
    }

    yazıp sorgu içine sokabilirsin. bunları yapınca, ersinin yazdğı sorguyu kullanabilir hale geliyosun.
    evet aynen bunu demek istemiştim
  • 13-08-2007, 16:06:17
    #5
    Üyeliği durduruldu
    aynı sorun bende var

    yukardaki seyranlı arkadaşın verdiği kodu aşağıdaki koda nasıl entegre edebiliriz?
    Alıntı
    <?

    if (!$k1) { $k1=0; }
    $k2=3;
    $k3=$k1-$k2;
    $k4=$k1+$k2;

    if ($lisans=="") { $a1="id like '%'";} else { $a1="lisans='$lisans'"; }
    if ($ad=="") { $a2="id like '%'";} else { $a2="ad like '$ad%'"; }
    if ($q=="") { $a0="id like '%'";} else { $a0="ad like '%$q%'"; }

    $toplam1=mysql_query("select * from z_inndir WHERE (durum='a') and ($a0) and ($a1) and ($a2) ");
    $toplamsayi1=mysql_num_rows($toplam1);
    $sorgu1=mysql_query("select * from z_inndir WHERE (durum='a') and ($a0) and ($a1) and ($a2) order by hit desc limit $k1, $k2 ");
    while ($satir = mysql_fetch_array($sorgu1)):
    ?>
  • 13-08-2007, 17:16:55
    #6
    ben lisans için yazıyorum sen de ad ve q içine aynı şeyleri yazarın.
     if ($lisans=="") { 
    $a1="id like '%'";
    } else { 
    $arama="";
     $aranalar=explode(" ",$lisans);
     şeklinde başlayacaksın. işlemler gerçekleşince
     $sonsayi=count($arananlar)-1;
     for ($i=0;$i<count($arananlar);$i++);
     if($i != 0)
     $arama.=' OR LIKE\'%';
     $arama.=$arananlar[$i];
     if ($i!=$sonsayi)
     $arama.='%\'';
     }
    $a1="lisans='$arama'"; 
    }
  • 13-08-2007, 17:56:43
    #7
    Üyeliği durduruldu
    Seyranli
    kardeş sanırım olmadı yada ben yapamadım. bir kaç deneme yaptım aramada hiç sonuç çıkmadı ben tam olarak hangi kodu eklemem lazım zahmet olmazsa hazır olarak kodu verebilecekmisin. ekleyeyim. iyi günler
  • 13-08-2007, 17:58:14
    #8
    tamam önce ben bi deneyim o halde. belki ben de yanlış yazmışımdır kontrol etmedim
  • 13-08-2007, 18:03:03
    #9
    <?
     
     if (!$k1) { $k1=0; }
     $k2=3;
     $k3=$k1-$k2;
     $k4=$k1+$k2;
     
     if ($lisans=="")
    $a1="id like '%'";
    else { 
    $arama="";
     $arananlar=explode(" ",$lisans);
     $sonsayi=count($arananlar)-1;
     for ($i=0;$i<count($arananlar);$i++) {
     if($i != 0)
     $arama.=' OR LIKE \'%';
     $arama.=$arananlar[$i];
     if ($i!=$sonsayi)
     $arama.='%\'';
     }
    $a1="lisans='%$arama'";
    }
     if ($ad=="")$a2="id like '%'";} else { $a2="ad like '$ad%'"; }
     if ($q=="") { $a0="id like '%'";} else { $a0="ad like '%$q%'"; }
     
     $toplam1=mysql_query("select * from z_inndir WHERE (durum='a') and ($a0) and ($a1) and ($a2) ");
     $toplamsayi1=mysql_num_rows($toplam1);
    $sorgu1=mysql_query("select * from z_inndir WHERE (durum='a') and ($a0) and ($a1) and ($a2) order by hit desc limit $k1, $k2 ");
     while ($satir = mysql_fetch_array($sorgu1)): 
     ?>
    şimdi çalışır sanırım az önce bi yazım hatası, bi mantık hatası, bi de sintaks hatası yapmışım