• 19-01-2010, 05:16:28
    #1
    Üyeliği durduruldu
    Merhaba,

    Bir arama yapmaya çalışıyorum 5 farklı tablodan 5 ayrı içerik almak istiyorum

    Şu şekilde çağarıp

    if ($sec=="1") {
    $SQL = "Select * from muzikler where (adi like '%$kelime%') order by tarih desc limit $alt,$max";
    $SQL2 = "Select * from muzikler where (adi like '%$kelime%')";
    }
    if ($sec=="2") {
    $SQL = "Select * from klipler where (adi like '%$kelime%' or aciklama like '%$kelime%') order by tarih desc limit $alt,$max";
    $SQL2 = "Select * from klipler where (adi like '%$kelime%' or aciklama like '%$kelime%')";
    }
    if ($sec=="3") {
    $SQL = "Select * from sarkisozu where (adi like '%$kelime%') order by tarih desc limit $alt,$max";
    $SQL2 = "Select * from sarkisozu where (adi like '%$kelime%')";
    while ($r=mysql_fetch_array($q)) {?>

    Bu şekilde kapatıyorum
    " ve verileri aldığım bölüm geliyor bu kısımda "
    Onuda kapatıyorum
    <?}?>

    listeleme şu şekilde sorunsuz

    arama.php?kelime=denemearamadır&sec=1
    arama.php?kelime=denemearamadır&sec=2
    arama.php?kelime=denemearamadır&sec=3

    Sonuçlar doğru bu kısma kadar sorun yok yanlız bu kısımların hepsi ayrı ayrı tablolardan alındığı için linkler vs de karışıklık oluyor

    ben listeleme kısmını parçalara bölmek ve

    Müzik sonuçları
    Klip sonuçları
    Şarkı sözü sonuçları

    şeklinde çalıştırmak istiyorum

    Bunu nasıl yapabilirim örnek li şekilde açıklayabilecek bir arkadaşımız varsa çok makbule geçicek bununla cebelleşmekten sıkıldım aramalardan nefret ediyorum..

    Şimdiden teşekkürler.
  • 19-01-2010, 06:13:13
    #2
    Kimlik doğrulama veya yönetimden onay bekliyor.
    Anladığım kadarıyla sorguları ilk önce $SQL ve $SQL2 değişkenlerinde tutuyorsun sonra da o sorguları bir kerede veritabanına gönderip sonuç alıyorsun. Bu şekilde yapmak yerine her if bloğun içerisinde sorguları veritabanına gönderip sonucu al ve direk bastır. Tabi bu sefer if bloklarına da ihtiyacın kalmayacak. Aşağıdaki mantıkta yazarsan kodu istediğini yapmış olursun diye tahmin ediyorum.

    $SQL = "Select * from muzikler where (adi like '%$kelime%') order by tarih desc limit $alt,$max";
    $SQL2 = "Select * from muzikler where (adi like '%$kelime%')";
    
    while ($r=mysql_fetch_array($q)) {?>   
    
    Bu şekilde kapatıyorum
    " ve verileri aldığım bölüm geliyor bu kısımda "
    Onuda kapatıyorum
    <?}?>
    
    $SQL = "Select * from klipler where (adi like '%$kelime%' or aciklama like '%$kelime%') order by tarih desc limit $alt,$max";
    $SQL2 = "Select * from klipler where (adi like '%$kelime%' or aciklama like '%$kelime%')";
    
    while ($r=mysql_fetch_array($q)) {?>   
    
    Bu şekilde kapatıyorum
    " ve verileri aldığım bölüm geliyor bu kısımda "
    Onuda kapatıyorum
    <?}?>
    
    $SQL = "Select * from sarkisozu where (adi like '%$kelime%') order by tarih desc limit $alt,$max";
    $SQL2 = "Select * from sarkisozu where (adi like '%$kelime%')";
    
    while ($r=mysql_fetch_array($q)) {?>   
    
    Bu şekilde kapatıyorum
    " ve verileri aldığım bölüm geliyor bu kısımda "
    Onuda kapatıyorum
    <?}?>
  • 19-01-2010, 09:03:35
    #3
    Üyeliği durduruldu
    union diye aratirsaniz farkli tablolardan sorgulama yapabilirsiniz
  • 19-01-2010, 09:04:06
    #4
    Üyeliği durduruldu
    <?php 
    if ($sec=="1") {
    $SQL = "Select * from muzikler where adi like '%$kelime%' order by tarih desc limit $alt,$max";
    }
    else if ($sec=="2") {
    $SQL = "Select * from klipler where adi like '%$kelime%' or aciklama like '%$kelime%' order by tarih desc limit $alt,$max";
    }
    else{
    $SQL = "Select * from sarkisozu where adi like '%$kelime%' order by tarih desc limit $alt,$max";
    }
    $say=mysql_num_rows($SQL);
    if($say>0){
    
    while($yaz=mysql_fetch_assoc($SQL)){
    
    echo $yaz['adi']."<br>";
    
    }
    }
    else{
    
    echo "Aradığınız sonuç bulunamadı";
    
    }
    ?>
    bu şekil bi dene bakalım...
  • 19-01-2010, 14:57:23
    #5
    nası sql ları $sec değişkeninin değerine göre if ile ayırdıysanız, listeleme işlemini de $sec değişkenini if ile sınayarak aynı şekilde yapabilirsiniz
  • 20-01-2010, 02:16:34
    #6
    Üyeliği durduruldu
    if ($sec=="1") {
              $sorgu2 = mysql_query("SELECT * FROM muzikler where (adi like '%$kelime%')") or die (mysql_error());
              while($r = mysql_fetch_array($sorgu2)){
                 echo "<a href=\"$r[adi_s]\">".$r['adi']."</a><br>"; 
              } 
    } 
    if ($sec=="2") {
              $sorgu2 = mysql_query("SELECT * FROM klipler where (adi like '%$kelime%')") or die (mysql_error());
              while($r = mysql_fetch_array($sorgu2)){
                 echo "<a href=\"$r[adi_s]\">".$r['adi']."</a><br>"; 
              } 
    }

    bu şekilde hallettim cevaplarınız için teşekkürler.. belki birinin işine yarar diye ekledim kodları
  • 20-01-2010, 03:50:32
    #7
    ben de o şekilde demiştim
  • 20-01-2010, 12:35:19
    #8
    Üyeliği durduruldu
    Evet sizin dediğinizi takip ettim teşekkürler. Bu arada bir şeye daha takıldım şimdi de nasıl hepsine ayrı ayrı arama sayfaları yaptırabilirim.

    şuan sorunsuz aramaları alıyorum her tablodan farklı şekillerde yazdırıyorum ama hepsi için ayrı ayrı sayfalama yapamadım
  • 20-01-2010, 13:09:47
    #9
    Üyeliği durduruldu
    Efsane adlı üyeden alıntı: mesajı görüntüle
    Evet sizin dediğinizi takip ettim teşekkürler. Bu arada bir şeye daha takıldım şimdi de nasıl hepsine ayrı ayrı arama sayfaları yaptırabilirim.

    şuan sorunsuz aramaları alıyorum her tablodan farklı şekillerde yazdırıyorum ama hepsi için ayrı ayrı sayfalama yapamadım
    sayfalama için ajax kullan kardeş.sayfa değişmeden yaparsın.az araştır bulamazsan yaz örnek koyayım