• 18-03-2015, 11:32:58
    #1
    Site içinde arama bölümü yapıyorum. Birden fazla tabloda arama yapıp sonuçları döküyorum. Buraya kadar bir sıkıntı yok. Yalnız bu sonuçlarının link yapıları farklı. Mesela biri product.php dosyasına gitmesi gerekirken diğerinin news.php dosyasına gitmesi gerekiyor. Sonuçların hangi tablodan geldiğini nasıl anlayabilirim? Sorgum aşağıdaki gibidir:

    $search = $database->prepare("SELECT title, shortdescription, longdescription from tm_products where title LIKE :keyword OR shortdescription LIKE :keyword OR longdescription LIKE :keyword UNION SELECT title,description,details from tm_news where title LIKE :keyword OR  description LIKE :keyword OR details LIKE :keyword");
    		$search->bindValue(':keyword', '%'.$keyword.'%');
    		$search->execute();
    		foreach ($search as $result):
    			echo $result['title'].'<br />';
    		endforeach;
  • 18-03-2015, 11:41:26
    #2
    Linktipi diye bir sütun açın veritabanınızda burada bir gruplama yapın örn. linktipi = 1 İse news.php 2 ise product.php gibi bir yapı kullanabilirsiniz.
  • 18-03-2015, 11:48:25
    #3
    Internetabi adlı üyeden alıntı: mesajı görüntüle
    Linktipi diye bir sütun açın veritabanınızda burada bir gruplama yapın örn. linktipi = 1 İse news.php 2 ise product.php gibi bir yapı kullanabilirsiniz.
    Yani öyle bir seçenek aklımda mevcut fakat tablo adını alıp if döngüsüyle halletmek daha kolay olmaz mı? Yoksa her veri için link tipi tanımlamak zorunda kalacağım. Bu da veritabanında extra yük demek.
  • 18-03-2015, 12:03:30
    #4
    @loc,

    aşağıdaki şekilde yapabilirsin. islemSonuc islem1 ve islem2 sonucuna göre istediğin gibi yönlendirebilirsin.


    SELECT title, shortdescription, longdescription,'islem1' as islemSonuc from tm_products where title LIKE :keyword OR shortdescription LIKE :keyword OR longdescription LIKE :keyword 
    UNION 
    SELECT title,description,details,'islem2' as islemSonuc from tm_news where title LIKE :keyword OR  description LIKE :keyword OR details LIKE :keyword
  • 18-03-2015, 12:06:22
    #5
    yvolkan adlı üyeden alıntı: mesajı görüntüle
    @loc,

    aşağıdaki şekilde yapabilirsin. islemSonuc islem1 ve islem2 sonucuna göre istediğin gibi yönlendirebilirsin.


    SELECT title, shortdescription, longdescription,'islem1' as islemSonuc from tm_products where title LIKE :keyword OR shortdescription LIKE :keyword OR longdescription LIKE :keyword 
    UNION 
    SELECT title,description,details,'islem2' as islemSonuc from tm_news where title LIKE :keyword OR  description LIKE :keyword OR details LIKE :keyword
    Kusura bakmayın daha önceden böyle bir sql sorgusu ile karşlılaşmadığım için soruyorum. Bunu nasıl döngüye sokabilirim? Yani islemSonuc un islem1 veya islem2 mi olduğunu öğrenmek için bu alanları değişkene nasıl tanımlıyoruz?
  • 18-03-2015, 12:15:35
    #6
    loc adlı üyeden alıntı: mesajı görüntüle
    Kusura bakmayın daha önceden böyle bir sql sorgusu ile karşlılaşmadığım için soruyorum. Bunu nasıl döngüye sokabilirim? Yani islemSonuc un islem1 veya islem2 mi olduğunu öğrenmek için bu alanları değişkene nasıl tanımlıyoruz?
    Bu sql sonucunda tm_products tablosundan geliyorsa islemSonuc alaninin değeri islem1, tm_news tablosundan geliyorsa islemSonuc islem2 olacaktır.

    Tam olarak neyi sorduğunu anlamadım ama SQL 'i bu şekilde yapınca
    PHP ile aldığın sql sorgusunun sonucu atadığın değişken örn: row ise

    if ( $row['islemSonuc'] == 'islem1' ){
    $tmpAdres = 'urun/urundetay.html';
    } else {
    $tmpAdres = 'haber/haberdetay.html';
    }

    tarzında işlem yapman gerekli.
  • 18-03-2015, 12:29:02
    #7
    yvolkan adlı üyeden alıntı: mesajı görüntüle
    Bu sql sonucunda tm_products tablosundan geliyorsa islemSonuc alaninin değeri islem1, tm_news tablosundan geliyorsa islemSonuc islem2 olacaktır.

    Tam olarak neyi sorduğunu anlamadım ama SQL 'i bu şekilde yapınca
    PHP ile aldığın sql sorgusunun sonucu atadığın değişken örn: row ise

    if ( $row['islemSonuc'] == 'islem1' ){
    $tmpAdres = 'urun/urundetay.html';
    } else {
    $tmpAdres = 'haber/haberdetay.html';
    }

    tarzında işlem yapman gerekli.
    Teşekkürler. Sayenizde sorunumu çözdüm.