• 06-11-2009, 15:19:00
    #1
    selamlar

    birden fazla tabloda aramak yapmak için googleda baya bir makale okudum fakat sonuçlar pek tatminkar olmadı malesef

    tek bir tablo için yaptığım sorgu

    arama formunun input name değeri : aranacak
    
    $haberarama= $db->sql_query("SELECT sid, title FROM ".$prefix."_stories WHERE title LIKE '%$aranacak%'");
    				
    if ( $aramasonucu >0 ) {
        while (list($sid, $title)=$db->sql_fetchrow($haberarama)) {
                echo "<a href=\"modules.php?name=News&file=article&sid=$sid\" target=\"_blank\">$title<br></a>";      
        }
    } else {
        echo "Aranan kelime kayıtlarımızda bulunamadı.";
    }
    ikinci tablo olan "isimler" tablosunun alanları şu şekilde
    id, isim

    buna göre bu iki tabloda arama yaparak sonuçları nasıl listeleyebilirim.
  • 06-11-2009, 15:27:52
    #2
    Üyeliği durduruldu
    Alıntı
    SELECT tablo1.*, tablo2.* FROM tablo1, tablo2 WHERE {şart neyse} AND tablo1.konu REGEXP '$aranacak' OR tablo2.baslik REGEXP '$aranacak' OR tablo1.etiketler REGEXP '$aranacak' order by {neyse} limit {neyse}
    konumuz regexp, geri kalanı iki tablodan veri çekme
  • 06-11-2009, 15:43:57
    #3
    Üyeliği durduruldu
    bir den fazla tabloyu union ile birleştirebilirsiniz üstad

    SELECT sid, title FROM ".$prefix."_stories WHERE title LIKE '%$aranacak%' union all SELECT id, isim FROM ".$prefix."_isimler WHERE isim LIKE '%$aranacak%'
    select te verdiginiz alan sayilarinin iki sorgudada eşit olmasi gerekir. Ayni sira ile sanki tek tablo imiş gibi gelir yani
  • 09-11-2009, 14:27:33
    #4
    üstadım arama kısmı tamamdır, çok teşekkür ederim
    fakat while kısmını çözemedim

    arama sonucunu stories tablosunda buldu ise bu linki
    echo "<a href=\"modules.php?name=News&file=article&sid=$sid \" target=\"_blank\">$title<br></a>";

    isimler tablosunda buldu ise bu linki
    echo "<a href=\"modules.php?name=isimler&op=isimanlami&id=$ id\" target=\"_blank\">$isim<br></a>";

    alması gerekirki doğru adrese gitsin
    bu nasıl gerçekleştirebilirim.

    şöyle bir şeyler denedim ama yemedi

    		$haberarama= $db->sql_query("
    		SELECT sid, title FROM ".$prefix."_stories WHERE title LIKE '%$aranacak%' union all 
    		SELECT id, isim FROM ".$prefix."_isimler WHERE isim LIKE '%$aranacak%'
    									");
    		$aramasonucu = mysql_num_rows($haberarama);
    				
    		if ( $aramasonucu >0 ) {
                while (list($sid, $title, $id, $isim)=$db->sql_fetchrow($haberarama)) {
                    echo "<a href=\"modules.php?name=News&file=article&sid=$sid\" target=\"_blank\">$title<br></a>";      
                    echo "<a href=\"modules.php?name=isimler&op=isimanlami&id=$id\" target=\"_blank\">$isim<br></a>";      
    
    			}
    		} else {
    			echo "Aradığınız kelime kayıtlarımızda bulunamadı.";
    		}
  • 09-11-2009, 14:30:35
    #5
    Üyeliği durduruldu
    fazladan tip isminde bir değer daha eklersiniz ona bakarak seçersiniz. Fikir vermesi babinda;

     SELECT sid, title,tip=1 FROM ".$prefix."_stories WHERE title LIKE '%$aranacak%' union all SELECT id, isim,tip=2 FROM ".$prefix."_isimler WHERE isim LIKE '%$aranacak%'
    böylelikle döngü ile dönerken tip ten hangi alandan sonucun geldigini anlar ona göre linkleri oluşturursunuz
  • 09-11-2009, 15:22:53
    #6
    teşekkür ederim yardımların için

    farklı bir yolla şu şekilde çözmeyi başardım

    		$haberarama= $db->sql_query("SELECT sid, title FROM ".$prefix."_stories WHERE title LIKE '%$aranacak%'");
    		$isimarama=$db->sql_query("SELECT id, isim FROM ".$prefix."_isimler WHERE isim LIKE '%$aranacak%'");
    		$haberarasay=mysql_num_rows($haberarama);
    		$isimarasay=mysql_num_rows($isimarama);
    		 if ( $haberarasay>0 ) {
    				while (list($sid, $title)=$db->sql_fetchrow($haberarama)) {
    					echo "<a href=\"modules.php?name=News&file=article&sid=$sid\" target=\"_blank\">$title<br></a>";      
    				}
    			} else if ($isimarasay>0) {
    				while (list($id, $isim)=$db->sql_fetchrow($isimarama)) {
    					echo "<a href=\"modules.php?name=isimler&op=isimanlami&id=$id\" target=\"_blank\">$isim<br></a>";      
    				}	
    			} else {
    			echo "Aradığınız kelime kayıtlarımızda bulunamadı.";
    		}
  • 09-11-2009, 16:08:52
    #7
    hocam iki kelime girince arama gerçekleşmiyor, neden olabilir sizce ?

    son hali bu

    		$haberarama= $db->sql_query("SELECT sid, title FROM ".$prefix."_stories WHERE title LIKE '%$aranacak%'");
    		$isimarama=$db->sql_query("SELECT id, isim FROM ".$prefix."_isimler WHERE isim LIKE '%$aranacak%'");
    		$icerikarama=$db->sql_query("SELECT pid, title FROM ".$prefix."_pages WHERE title LIKE '%$aranacak%'");
    		$haberarasay=mysql_num_rows($haberarama);
    		$isimarasay=mysql_num_rows($isimarama);
    		$icerikarasay=mysql_num_rows($icerikarama);
    
    		if ( $haberarasay>0 OR $isimarasay>0 OR $icerikarasay>0) {
    				while (list($sid, $title)=$db->sql_fetchrow($haberarama)) {
    					echo "<b>Haber </b>: <a href=\"modules.php?name=News&file=article&sid=$sid\" target=\"_blank\">$title<br></a>";      
    				}
    				while (list($id, $isim)=$db->sql_fetchrow($isimarama)) {
    					echo "<b>İsim Bankası </b>: <a href=\"modules.php?name=isimler&op=isimanlami&id=$id\" target=\"_blank\">$isim<br></a>";      
    				}	
    				while (list($pid, $title)=$db->sql_fetchrow($icerikarama)) {
    					echo "<b>İçerik </b>: <a href=\"modules.php?name=Content&pa=showpage&pid=$pid\" target=\"_blank\">$title<br></a>";      
    				}	
    			} else {
    			echo "Aradığınız kelime kayıtlarımızda bulunamadı.";
    		}
  • 10-11-2009, 09:23:01
    #8
    arkadaşlar tek kelime girince arama yapıyor, birden fazla kelimede arama yapmıyor malesef

    bu neden olabilir sizce?