• 26-04-2013, 01:35:01
    #19
    ufukt51 adlı üyeden alıntı: mesajı görüntüle
    şeklinde denedim fakat mysql_fetch_assoc() expects parameter 1 to be resource, boolean given in şeklinde hata aldım açıkcası senin verdiğin kodun içinden pek çıkamadım php bilgim pek iyi değil.
    <?php
    header("Content-Type: text/html; charset=latin5");
    include ("ayarlar.php");
    mysql_pconnect($server, $user,$pass) or die ("Hata oluştu ! Kullanıcı adı veya şifre yanlış");
    mysql_select_db($database) or die ("Hata oluştu ! Belirttiğiniz veritabanı ismi hatalı.");
    mysql_query("SET NAMES 'latin5'");
    $etiket_array = Array();
    $sorgu_temp = "`etiket` != '' ";
    
    for($i=0;$i<10;$i++) //kaç etiket alacaksanız ona göre ayarlarsınız
    {
          $etiket = mysql_fetch_assoc(mysql_query("select `etiket` from etiketler WHERE  $sorgu_temp order by `id` desc limit 1"));
          
          $eti = $etiket['etiket'];
          $etiket_array[] = $eti;
          $sorgu_temp .= " AND `etiket` != '$eti' ";
    }
    foreach($etiket_array as $etiket){
    $tr1=array('/ç/','/Ç/','/ı/','/İ/','/ğ/','/Ğ/','/ö/','/Ö/','/ş/','/Ş/','/ü/','/Ü/','/ /'); 
    $tr2=array('c','C','i','i','g','G','o','O','s','S','u','U','+'); 
    $etiket = preg_replace($tr1,$tr2,$etiket);
    }
    echo $etiket;
    ?>
    benim verdiğim koddaki mysql sorgusunda hata varmiş senin tablonu bilmediğim için yazım yanlışı yapmış olabilirim.
    senin kodun doğru çalışmaz. for döngüsü içinde her adımda aynı sorguyu alıp tek satır çekip yeniden aynı sorguyu yapıp aynı satırı çekersin.
    yani 10 kere aynı kayıtı çekersin.

    benim kodu şu şekilde çevir ve ilk hata kodunu söyle

    $etiketle = array(); 
    $SQL1 = mysql_query("SELECT etiketler from videolar ORDER BY id ASC LIMIT 0, 10") OR print(mysql_error());  
    while ($yaz = mysql_fetch_assoc($SQL1)){   
    $parcala = explode(',', $yaz["etiketler"]);  
      
    for($i = 0; $i < count($parcala2); $i++){  
    $parcala2[$i] = strtr(trim($parcala2[$i]), "ÜĞİŞÇÖüğışçö", "ugiscougisco"); 
    $parcala2[$i] = preg_replace("/[^0-9a-zA-Z]/","-",$parcala2[$i]); 
    
    if(in_array($parcala2[$i],$etiketle) == FALSE){ 
    $etiketle[] = $parcala2[$i];  
    echo $parcala2[$i];  
    } 
    }  
    }
  • 26-04-2013, 02:04:41
    #20
    teşekkür ederim sonunda çalıştı tam istediğim gibi.
    $parcala = explode(',', $yaz["etiketler"]);
    şeklinde kullanıp alt kısımlarda $parcala2 şeklinde kullanmışsınız dalgınlıkla sanırım. Çok teşekkür ederim çokta kullanışlı oldu sayenizde.
    Ek olarak tek bir sorum olacak nacizane: ORDER BY id ASC bu sıralamayı kullanmasan bir sakıncası olur mu? kullanmadım sizin kodlamada yine istedğim şekilde doğru sonuç verdi. ilk eklenen veriden itibaren sıraladı aynı veriyi tekrar etmeyerek.
  • 26-04-2013, 11:42:43
    #21
    ufukt51 adlı üyeden alıntı: mesajı görüntüle
    teşekkür ederim sonunda çalıştı tam istediğim gibi.
    $parcala = explode(',', $yaz["etiketler"]);
    şeklinde kullanıp alt kısımlarda $parcala2 şeklinde kullanmışsınız dalgınlıkla sanırım. Çok teşekkür ederim çokta kullanışlı oldu sayenizde.
    Ek olarak tek bir sorum olacak nacizane: ORDER BY id ASC bu sıralamayı kullanmasan bir sakıncası olur mu? kullanmadım sizin kodlamada yine istedğim şekilde doğru sonuç verdi. ilk eklenen veriden itibaren sıraladı aynı veriyi tekrar etmeyerek.
    Evet kodu kopyala yapıştır ile düzenleyince böyle hatalar oluyor.

    Ben sorguda sıralama şeklini yazarım, ileride kodu tekrar okuduğumuzda neye göre sıraladığını biliriz. normalde sıralama şekli vermediğinde primary indexe göre sıralar. Mysql komutuna 2 kelime fazla yazmak kodun performansınız azaltmaz.

    Bu arada bu şekilde etiket göstermek 1000-2000 kayıt olduğunda ziyaretçi sayısı artınca işlemci ve bellek kullanımını çok arttırır. Hosting hesabını kapatırlar. En iyisi buradan gelen datayı bir file dosyasına yazmak, ya da mysql a yeni bir etiketcache tablosu açıp oraya yazmak. Buraya yazılan verinin tarihi 1 saatten eski ise işlemi tekrar yapar veriyi günceller ve ekrana basar, 1 saatten yeniyse işlemi yapmadan cache datasını okur ve ekrana basar. Böylece saatte bir çalışır bu kod sistemi çok yormaz.
  • 26-04-2013, 14:31:01
    #22
    digiklan adlı üyeden alıntı: mesajı görüntüle
    Evet kodu kopyala yapıştır ile düzenleyince böyle hatalar oluyor.

    Ben sorguda sıralama şeklini yazarım, ileride kodu tekrar okuduğumuzda neye göre sıraladığını biliriz. normalde sıralama şekli vermediğinde primary indexe göre sıralar. Mysql komutuna 2 kelime fazla yazmak kodun performansınız azaltmaz.

    Bu arada bu şekilde etiket göstermek 1000-2000 kayıt olduğunda ziyaretçi sayısı artınca işlemci ve bellek kullanımını çok arttırır. Hosting hesabını kapatırlar. En iyisi buradan gelen datayı bir file dosyasına yazmak, ya da mysql a yeni bir etiketcache tablosu açıp oraya yazmak. Buraya yazılan verinin tarihi 1 saatten eski ise işlemi tekrar yapar veriyi günceller ve ekrana basar, 1 saatten yeniyse işlemi yapmadan cache datasını okur ve ekrana basar. Böylece saatte bir çalışır bu kod sistemi çok yormaz.
    Şuan sunucuda sitem fakat dediğiniz gibi hosting de sorun yaratacaktır. birde bunu sadece etiket haritası oluşturmak için kullandım scriptin içinde video sayfalarında bu kodlama ya da fonk. yer almıyor. sadece xml etiket haritası kullanmak için kullandım işlerim hafiflediğinde ayrı bir tabloya almaya çalışacam.