• 27-10-2010, 01:40:45
    #10
    Serialize unserialize kullanılabilir.
  • 27-10-2010, 10:19:40
    #11
    Üyeliği durduruldu
    aslında şimdi aklıma geldi de. inner join ile yapmak en mantıklısı. tek sorguda hepsini alabiliriz. örnek vermek de isterdim ama daha önce inner join ile birden fazla alan seçmediğim için tereddütteyim.

    bilen birisi inner join ile bir örnek yazsa ne güzel olur
  • 27-10-2010, 12:17:20
    #12
    Üyeliği durduruldu
    bence bunun icin soyle bir yol izlense daha iyi olur
    tablo araba :
    id-marka-model-ozellikler-onizleme_resmi

    tablo detay_resim
    id-araba_id-url

    ilana girildiginde ilan.php?id=5 geldi diyelim resimleri gostermek icin
    $q = mysql_query("SELECT * FROM detay_resim WHERE araba_id = '".guvenlik($_GET['id'])."'");
    seklinde sorgulatilabilir. explode ile belirli yerden bolmek benim tarzim degil. bir tablo daha acip iliskili sorgular yapmak bence programala acisindan daha dogru.
  • 27-10-2010, 12:24:49
    #13
    Üyeliği durduruldu
    PHPci, inner join ile yapsak daha güzel olmaz mı ? yada olmaz mı ?
  • 27-10-2010, 12:34:31
    #14
    Üyeliği durduruldu
    inner join ile sadece tek tek iliski olur hocam onun yerine left ya da right join kullanmak gerek. Bize bire coklu iliski lazım. denemeden yaziyorum

    $q = mysql_query("SELECT araba.*,detay_resim.url FROM araba LEFT JOIN detay_resim ON araba.id = datay_resim.araba_id WHERE id='gelen_id'");
    gibi.
  • 27-10-2010, 12:40:12
    #15
    PHPci ; hocam ilk önerdiğiniz yöntemle sorgu sayısı artmıyor mu ? Zaten id'si 5 olan araba tablosundan veri çekiyoruz. Araba adı, modeli vs. Bir de detay resim den resim için sorgu çekiyoruz... Bir önceki mesajımda da dediğim gibi bu mysql'e koymaz belki ama...
  • 27-10-2010, 12:53:54
    #16
    Üyeliği durduruldu
    zaten genis kapsamli bir sey hazirlaniyorsa bu tip salt sql sorgulari yerine cache mekanizmalari kullanmak daha faydali olacaktir. Ayrica mysql üzerinde string tipte bir arama yapmadigimiz icin 2 3 sorgunun pek sakıncası olmayacagini dusunuyorum.

    ornek bir cacheleme sistemi :
    <?php
        include('conn.php');
        
        function cachele($q,$t=5) /* $t 5 dk cache*/
        {
            $crc = crc32($q);
            $u = mysql_query($q);
            while($r = mysql_fetch_assoc($u))
            {
                $z[] = $r;
            }
            if(!is_file('cache_'.$crc.'.php')):
                touch('cache_'.$crc.'.php');
                file_put_contents('cache_'.$crc.'.php',"<?php \n //-- sql : $q \n\r \$data = ".var_export($z,true)." ; \r\n ?>");
                return $z;
            else:
                $x = floor((time() - filemtime('cache_'.$crc.'.php')) / 60);
                if($x > $t):
                    file_put_contents('cache_'.$crc.'.php',"<?php \n //-- sql : $q \n\r \$data = ".var_export($z,true)." ; \r\n ?>");
                    return $z;
                else:
                    return cagir('cache_'.$crc.'.php');
                endif;
            endif;
        }
        
        function cagir($file)
        {
            include($file);
            echo 'cache\'den aldim abi';
            return $data;
        }
        
        print_r(cachele("SELECT * FROM video"));
    
    ?>
    Yukarıda "SELECT * FROM video" sorgusunun crc32'li hashi aliniyor.
    eger cache_crc32sorgu.php isimli bir dosya yoksa bu dosya olusturularak icine var_export fonksiyonu yardimi ile yapilan sorgunun degerleri array olarak cikti ediliyor.
    bu sorguyu tekrarladigimizda eger olusturulan dosya zamani $t degerinden kucukse bu dosya include edilip dosyada yazili olan $data isimli array return ediliyor .
    Sonuc olarak mysql'i ayni sorgulada 5 dklık zamanla bypass etmiş oluyoruz. güzel bir filecache denemenizde fayda var.
  • 27-10-2010, 13:12:28
    #17
    arabalar tablosu:
    ID(ai) BILGI BILGI2 BILGI3
    1 asdf qwer zxcv
    2 gdfg hdfr tqwc

    resimler tablosu:
    ID(ai) AID RURL
    1 1 images/uploads/sahibinden-temiz-2-el-01.jpg
    2 1 images/uploads/sahibinden-temiz-2-el-02.jpg
    3 1 images/uploads/sahibinden-temiz-2-el-03.jpg
    4 2 images/uploads/honda-civic-01.jpg

    yorumlar tablosu:
    ID(ai) AID YORUM TARIH
    1 1 evet-temizmiş 01-01-0001/01:01

    ai: auto increment
    AID: araba tablosundaki ID
    RURL: resim url

    resimleri veya yorumları okuturken ilan sayfasında;
    $aid = $_GET["ilanno"];
    MYSQL_QUERY ( " 
      SELECT * 
      FROM resimler 
      WHERE aid='$aid' 
      ORDER BY id DESC 
      LIMIT 0,10 
    " );
  • 27-10-2010, 13:19:32
    #18
    Teşekkürler önerin için PHPci. İlk fırsatta deneyeceğim