• 09-07-2007, 23:58:19
    #1
    Kimlik doğrulama veya yönetimden onay bekliyor.
    site içi arama motoru yaptım. tek bir tabloda arama yapıyor ben sonucu farklı sorgularla ayrı listelemek istiyorum .su an katagorisi=0 olan urunleri alıyor buna birde katagorisi=1 olanları eklemek istiyorum .ayrı listeletecem için aynı anda yaptığım sorguda 1 olan varsa onuda ayrı yazdıracam çünkü linkleri farklı olacak..yardım edecek arkadaşlara teşekkür ederim.

    Alıntı
    //önce tüm kelimelerler aranıyor
    $SQL="SELECT id FROM urun WHERE kimin=0 AND ( icerik like '%$string%' or uygulama like '%$string%' or
    isim like '%$string%' )";
    $sorgu=mysql_query($SQL) ;

    if(mysql_num_rows($sorgu)==0) {
    echo "arama sonucunda hiç bir şey bulunamadı";
    exit();
    }
    if (!$sorgu)
    { echo("<P>Error performing query: " . mysql_error() . "</P>"); exit();}
    $arguman=0;
    $adet=0;
    while($sira=mysql_fetch_array($sorgu))
    {
    //bulunan değerler sonuç arrayine yazılıyor.
    $sonuc[$arguman]=$sira["id"];
    $arguman++;
    }
    if($string{0}!='"')
    {

    //burada aynı kayıtın tekrar alınmaması sağlanıyor
    if($sira["id"]!=$sonuc[$i])
    $sonuc[$arguman]=$sira["id"];
    $arguman++;
    $i++;

    }
    for($i=0;$i<count($sonuc);$i++)
    {
    $SQL="SELECT * FROM urun WHERE kategori=0 AND id='$sonuc[$i]'"; //burda katagorisi=0 olan urunleri alıyor
    $sorgu=mysql_query($SQL) ;
    if (!$sorgu)
    { echo("<P>Error performing query: " . mysql_error() . "</P>"); exit();}
    while($sira=mysql_fetch_array($sorgu))
    {
    ?>
    <? echo $sira["isim"]; ?>//burda katagorisi=0 olan urunler listelenior

    <?php
    }
    }
    mysql_close;
    ?>
  • 10-07-2007, 00:51:29
    #2
    <?php
    //önce tüm kelimelerler aranıyor
    $SQL="SELECT id FROM urun WHERE kimin=0 AND ( icerik like '%$string%' or uygulama like '%$string%' or
    isim like '%$string%' )";
    $sorgu=mysql_query($SQL) ;
    
    if(mysql_num_rows($sorgu)==0) {
    echo "arama sonucunda hiç bir şey bulunamadı";
    exit();
    }
    if (!$sorgu)
    { echo("<P>Error performing query: " . mysql_error() . "</P>"); exit();}
    $arguman=0;
    $adet=0;
    while($sira=mysql_fetch_array($sorgu))
    {
    //bulunan değerler sonuç arrayine yazılıyor.
    $sonuc[$arguman]=$sira["id"];
    $arguman++;
    }
    if($string{0}!='"')
    {
    
    //burada aynı kayıtın tekrar alınmaması sağlanıyor
    $id_liste = array();
    if($sira["id"]!=$sonuc[$i])
    $id_liste[]=$sira["id"];
    $arguman++;
    $i++;
    
    }
    
    $sql_id = implode(',',$id_liste);
    
    $SQL="SELECT isim, kategori FROM urun WHERE kategori IN(0,1) AND id IN($sql_id)";
    $sorgu=mysql_query($SQL) ;
    if (!$sorgu)
    { echo("<P>Error performing query: " . mysql_error() . "</P>"); exit();}
    
    $kategori_liste = array();
    while($sira=mysql_fetch_array($sorgu))
    {
        $kategori_liste[$sira['kategori']][] = $sira['isim'];
    }
    
    }
    mysql_close;
    
    
    // kategorisi 0 olan liste
    
    foreach ($kategori_liste[0] as $k_liste_0) {
        echo $k_liste_0['isim'];
    }
    
    
    // kategorisi 1 olan liste
    foreach ($kategori_liste[1] as $k_liste_1) {
        echo $k_liste_1['isim'];
    }
    ?>
    kodlarının sonlarını değiştirdim. Fakat hiçbir şekilde test etmedim kodları. Yani yazım ve parantez hatalarım olabilir. Sadece fikir vermesi açısından ekliyorum

    ID numaralarını dizi değişken içerisine attım öncelikle ve sonrasında bunları "," ile birleştirdim. Yapmış olduğun SQL sorgusunda IN fonksiyonu ile ID numaraları az önce birleştirdiğim değelerden olanları ve yine IN ile kategorisi 0 ya da 1 olanları tek bir sorgu ile çektirdim. Sonra bunların hepsini kategori ID sine bağlı olmak üzere dizi değişkene attım. Son olaraksa 0 ve 1 kategorilerini sırayla yazdırdım
  • 10-07-2007, 04:38:46
    #3
    Yönetici onayı bekliyor
    öncelikle teşekkürler ama çalışmadı ve karışık geldi bana çok.aslıda mantık doğru ama anlamdım.

    Error performing query: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ')' at line 1
  • 10-07-2007, 05:26:39
    #4
    Yönetici onayı bekliyor
    şu şekilde yaptım istediğim olduda ürünlerin hepsini listelettim katogori yi almadan sonra kategorisi=0 olan olmayan die ayırarak yazırdım.sorguyuda içerde tekrar yapabiliorum. cod larda hata varmı ,perfomas kaybı olurmu bu şekilde localde gayet hızlı ama..
    Alıntı
    //önce tüm kelimelerler aranıyor
    $SQL="SELECT id FROM urun WHERE kimin=0 AND ( icerik like '%$string%' or uygulama like '%$string%' or
    isim like '%$string%' )";
    $sorgu=mysql_query($SQL) ;

    if(mysql_num_rows($sorgu)==0) {
    echo "arama sonucunda hiç bir şey bulunamadı";
    exit();
    }
    if (!$sorgu)
    { echo("<P>Error performing query: " . mysql_error() . "</P>"); exit();}
    $arguman=0;
    $adet=0;
    while($sira=mysql_fetch_array($sorgu))
    {
    //bulunan değerler sonuç arrayine yazılıyor.
    $sonuc[$arguman]=$sira["id"];
    $arguman++;
    }
    if($string{0}!='"')
    {

    //burada aynı kayıtın tekrar alınmaması sağlanıyor
    if($sira["id"]!=$sonuc[$i])
    $sonuc[$arguman]=$sira["id"];
    $arguman++;
    $i++;



    }
    for($i=0;$i<count($sonuc);$i++)
    {
    $SQL="SELECT * FROM urun WHERE id='$sonuc[$i]'";
    $sorgu=mysql_query($SQL) ;


    if (!$sorgu)
    { echo("<P>Error performing query: " . mysql_error() . "</P>"); exit();}
    while($sira=mysql_fetch_array($sorgu)) {
    if($sira["kategori"]==0) {
    buralarda sorgu yapabiliyorum
    echo "+ $sira3[title] - $sira2[title] - $sira[isim]";
    }
    else {
    buralarda sorgu yapabiliyorum
    echo "-: $sira3[title]/$sira[isim]";
    ?>

    <?php
    }
    }

    }
    mysql_close;
    ?>