Duyuruyu Kapat
Facebook Gözat
Twitter Gözat

tag (etiket) sistemi

Konu, 'PHP' kısmında gunay121 tarafından paylaşıldı.

  1. gunay121

    gunay121 Üye

    Kayıt:
    15 Şubat 2009
    Mesajlar:
    152
    Beğenilen Mesajlar:
    0
    merhabalar,
    Etiket sistemi yapacağım. Ancak mantığı tam olarak kavrayamadım. "kelime" tablosunda kayıtlı verileri, başka bir tabloda eklenen yazılarda geçen kelimeleri taratıp etiket olarak yazdıracağım. Yazıları eklerken zaten tag giriyorum ancak benim özellikle istediğim başka kelimeleride farklı biçimde vurgulatmak istiyorum bunu bir şekilde yaptım ancak "kelime" tablosundaki her kayıt için yazıyı her seferinde tekrar yazdırıyor. Nerede hata yaptığımı biliyorum "while" çıktısında hata var ancak nasıl çözeceğimi anlayamadım.

    umarım anlatabilmişimdir. yardımcı olursanız sevinirm.

    Yaptığım tag kodu:

    Kod:
    
    $syf = $_GET['syf'];
    $cek = $_GET['cek'];
     
    $kel = mysql_query("SELECT * FROM galeri,anakat,altkat where aukat='$syf' and link='$cek' and alink='$syf'"); 
    while($words = mysql_fetch_array($kel)){ 
    
    // yazıyı linke göre sorgulatıyorum.
    
    
    
    
    $kelimecek = mysql_query("SELECT * FROM kelime"); 
    while($word = mysql_fetch_array($kelimecek)){ 
    
    //tag olacak kelimeri sorgulatıyorum.
    
    
    $veri = "$words[ukeyw],$words[keyw],$words[akeyw]"; // yazıların etiketlerini değişkene atıyorum.
    
    echo "
    <div id=orta>
    <div class=icerik><h2>
    Etiket</h2>
    </div>
    </div>
    ";
    echo str_replace("$word[kelime]","<i><em><b>$word[kelime]</b></em></i>",$veri); // buradada etiketlerin seo uyumu için kelimeler tablosunda geçenlerin biçimlerini değiştiriyorum. <i> <b> <em> komutları ile.
    
    
    }
    }
    ?>
    
    
    
     
  2. gunay121

    gunay121 Üye

    Kayıt:
    15 Şubat 2009
    Mesajlar:
    152
    Beğenilen Mesajlar:
    0
    konuyla ilgili yardımcı olabilecek varmı ?
     
  3. gunay121

    gunay121 Üye

    Kayıt:
    15 Şubat 2009
    Mesajlar:
    152
    Beğenilen Mesajlar:
    0
    biri yardım edebilir mi? halen uğraşıyorum. bu şekilde yapamıyorsam. mantığını açıklayabilir misiniz? yapmak istediğim bir metin içerisinde bir tabloda belirtilen kayıtlardan hangileri geçiyorsa o veriyi html <b><em><i> tagları içerisinde yazdıracağım. yukarıdaki kod ile yapıyorum ancak. kelime tablosunda her veri için yazıyı tekrar yazdırıyor.
     
  4. Özkan Turan

    Özkan Turan Üye

    Kayıt:
    23 Haziran 2012
    Mesajlar:
    51
    Beğenilen Mesajlar:
    0
    Şehir:
    İzmit
    Kelime tablosunda sütunlarda neler var? Kelimeleri aralarına virgül koyup kayıt ettirmiyor musun?
     
  5. gunay121

    gunay121 Üye

    Kayıt:
    15 Şubat 2009
    Mesajlar:
    152
    Beğenilen Mesajlar:
    0
    cevabınız için teşekkürler. Hayır kelime tablosunda "kelime" alanı altında farklı anahtar kelimeler listeliyorum. Her biri farklı satır yani farklı kayıt.

    Edit: isterseniz virgüllü bir şekildede yapabilirim. ancak sistemi kurmam lazım bir şekilde.
     
  6. Özkan Turan

    Özkan Turan Üye

    Kayıt:
    23 Haziran 2012
    Mesajlar:
    51
    Beğenilen Mesajlar:
    0
    Şehir:
    İzmit
    ID, Konu ID, Etiketler

    PHP:

    $etiketler 
    "kelime1,kelime2,kelime3";

    $bol explode(","$etiketler);

    foreach(
    $bol as $etiket) {

    echo 
    $etiket."<br>";

    }

    // Çıktısı  
    // kelime1 
    // kelime2 
    // kelime3

    Bu şekilde kayıt edersen eğer kelime tablosuna girilen konuya göre etiketleri ekrana bastırırsın.

    Explode komutu virgülden itibaren kelimeyi bölmeni sağlar.Basit etiket mantığı bu Etiket taglarını Virgül ile ayırmak Explode ile bölüp diziyi ekrana yazdırmak.Konu ID göre etiketlere link verirsin.Sen bu örneği veritabanından çektiğin kayıtlara uygula ben Explode ne işe yaradığına örnek verdim.Implode komutu ile ayırdığın dizileri istediğin şekilde tekrardan birleştirebilirsin bu fonksiyonu araştırabilirsin.Basit iki fonksiyon genelde bu kullanılıyor etiket mantığında.
     
  7. nfk

    nfk Aktif Üye

    Kayıt:
    13 Mayıs 2006
    Mesajlar:
    405
    Beğenilen Mesajlar:
    0
    böyle bir şey olabilir mi?
    PHP:
    <?php
            $renkli_kelime 
    'merhaba';
            
    $icerik           "adamın biri merhaba dedi";

            echo 
    preg_replace("/".$renkli_kelime."/i","<a href='#'><span style='color:#FF0000'>\\0</span></a>","$icerik");

    ?>
     
  8. gunay121

    gunay121 Üye

    Kayıt:
    15 Şubat 2009
    Mesajlar:
    152
    Beğenilen Mesajlar:
    0
    bu şekilde denedim ancak istediğim sonuca ulaşamadım. benim istediğim tam olarak şu: bir metinde bir tabloda (kelime) kayıtlı verileri bulup değiştirmek. (başına sonuna html kodları ekleyeceğim.)
     
  9. gunay121

    gunay121 Üye

    Kayıt:
    15 Şubat 2009
    Mesajlar:
    152
    Beğenilen Mesajlar:
    0
    Deniyorum.
     
  10. Özkan Turan

    Özkan Turan Üye

    Kayıt:
    23 Haziran 2012
    Mesajlar:
    51
    Beğenilen Mesajlar:
    0
    Şehir:
    İzmit
    Metinde belirli kelimeleri bulmak istiyorsan LIKE metodunu kullanmalısın LIKE ile verileri aratıp geçen kelimeleri ekrana yazdırabilirsin.İlk başta aynı veriler tekrar ekrana yazılıyor dedin.Ben veritabanındaki sorgudan kurtulman için explode mantığını anlattım sen her kelime için yeni bi tablo oluşturuyorsan işin zor ama LIKE komutu işini görür.LIKE'ı araştır.
     
  11. gunay121

    gunay121 Üye

    Kayıt:
    15 Şubat 2009
    Mesajlar:
    152
    Beğenilen Mesajlar:
    0
    Bu şekilde yaptım ancak bu seferde kelime tablosundaki en son satırı işleme aldı kelime tablosundaki diğer kayıtlar değişmedi.

    Kod:
    $degisecek = "$veri1";
    $yazi       = "$veri";
    echo preg_replace("/".$degisecek."/i","<b><i><em>\\0</em></i></b>","$yazi");
    
    
     
  12. gunay121

    gunay121 Üye

    Kayıt:
    15 Şubat 2009
    Mesajlar:
    152
    Beğenilen Mesajlar:
    0
    LIKE komutu süzmek için kullanılmıyor mu? Ben LIKE komutu ile kelime tablosundaki kelimelere göre süzerim ancak bunların biçimini değiştirip tekrar nasıl yazı içindeki yerine yazdıracağım. ben mi yanlış anladım yoksa siz mi? Belki de ben anlatamadım örneklendirerek anlatayım.

    Yazı veri tabanında kayıtlı ve aşağıdaki gibi görüntülüyorum.

    Kod:
    Dört Direkli Tekerlekli Ön Koruyuculu 18 mm Mdf Panya (105*180 cm), basketbol ekipmanları fiyatı, basketbol ekipmanları yapımı, basketbol ekipmanları satışı, basketbol potası,basketbol ekipmanları, basketbol potası, basketbol sahası, basketbol potası tekerlekli, seyyar ön koruyucu, yükseklik ayarlı antreman modeli, üçlü grup model, duvara montajlı sabit model, yana katlanabilir model, tavana montajlı, profesyonel nba model, oyun ekipmanları,Basketbol Potası, Dört Direkli Tekerlekli, Ağırlıklı, Seyyar Ön Koruyuculu, mdf panya, cam panya, poliüretanlı panya
    
    kelime tablosunda satır satır aşağıdaki kayıtlar var.

    Kod:
    ---------------------
    id  |   kelime
    ---------------------
    1   | ekipmanları
    2   | basketbol
    3   | pota
    
    şimdi yazıyı yazdırdıktan sonra kelime tablosundaki "ekipmanları", "basketbol", "pota" kelimelerinin biçimlerini değiştireceğim.

    bunu aşağıdaki kod ile yapıyorum.

    Kod:
    
    
    $kel = mysql_query("SELECT * FROM galeri,anakat,altkat where aukat='$syf' and link='$cek' and alink='$syf' and ulink='$git'"); 
    while($words = mysql_fetch_array($kel)){ 
    
    $veri = "$words[ukeyw],$words[keyw],$words[akeyw]";
    }
    $vericek   = mysql_query("SELECT * FROM kelime");
    while($vericek1 = mysql_fetch_array($vericek)) {
    $veri1 = $vericek1['kelime'];
     
    
    echo str_replace("$veri1","<i><em><b><font color='red'>$veri1</font></b></em></i>",$veri);
     
     
    }
    
    
    
    ancak çıktı şu şekilde oluyor:

    Kod:
    
    Dört Direkli Tekerlekli Ön Koruyuculu 18 mm Mdf Panya (105*180 cm), basketbol [I][I][B]ekipmanları[/B][/I][/I] fiyatı, basketbol [I][I][B]ekipmanları[/B][/I][/I] yapımı, basketbol [I][I][B]ekipmanları[/B][/I][/I] satışı, basketbol potası,basketbol [I][I][B]ekipmanları[/B][/I][/I], basketbol potası, basketbol sahası, basketbol potası tekerlekli, seyyar ön koruyucu, yükseklik ayarlı antreman modeli, üçlü grup model, duvara montajlı sabit model, yana katlanabilir model, tavana montajlı, profesyonel nba model, oyun [I][I][B]ekipmanları[/B][/I][/I],Basketbol Potası, Dört Direkli Tekerlekli, Ağırlıklı, Seyyar Ön Koruyuculu, mdf panya, cam panya, poliüretanlı panya
    
    Dört Direkli Tekerlekli Ön Koruyuculu 18 mm Mdf Panya (105*180 cm), [I][I][B]basketbol[/B][/I][/I] ekipmanları fiyatı, [I][I][B]basketbol[/B][/I][/I] ekipmanları yapımı, [I][I][B]basketbol[/B][/I][/I] ekipmanları satışı, [I][I][B]basketbol[/B][/I][/I] potası,[I][I][B]basketbol[/B][/I][/I] ekipmanları, [I][I][B]basketbol[/B][/I][/I] potası, [I][I][B]basketbol[/B][/I][/I] sahası, [I][I][B]basketbol[/B][/I][/I] potası tekerlekli, seyyar ön koruyucu, yükseklik ayarlı antreman modeli, üçlü grup model, duvara montajlı sabit model, yana katlanabilir model, tavana montajlı, profesyonel nba model, oyun ekipmanları,Basketbol Potası, Dört Direkli Tekerlekli, Ağırlıklı, Seyyar Ön Koruyuculu, mdf panya, cam panya, poliüretanlı panya
    
    Dört Direkli Tekerlekli Ön Koruyuculu 18 mm Mdf Panya (105*180 cm), basketbol ekipmanları fiyatı, basketbol ekipmanları yapımı, basketbol ekipmanları satışı, basketbol [I][I][B]potası[/B][/I][/I],basketbol ekipmanları, basketbol [I][I][B]potası[/B][/I][/I], basketbol sahası, basketbol [I][I][B]potası[/B][/I][/I] tekerlekli, seyyar ön koruyucu, yükseklik ayarlı antreman modeli, üçlü grup model, duvara montajlı sabit model, yana katlanabilir model, tavana montajlı, profesyonel nba model, oyun ekipmanları,Basketbol Potası, Dört Direkli Tekerlekli, Ağırlıklı, Seyyar Ön Koruyuculu, mdf panya, cam panya, poliüretanlı panya
    
    yani her kayıt için yazıyı tekrar yazdırıyor. Umarım anlatabilmişimdir.
     
  13. Özkan Turan

    Özkan Turan Üye

    Kayıt:
    23 Haziran 2012
    Mesajlar:
    51
    Beğenilen Mesajlar:
    0
    Şehir:
    İzmit
    Şimdi daha iyi anladım yapmak istediğini konu başlığı beni yanılttı yapmak istediğini bende yapmaya çalışacağım :) benden önce çözülürse konu bende öğrenmiş olacağım takibe aldım konuyu şimdi deniyeceğim bu mantık nasıl yapılır diye daha önce denemedim sonuç alırsam yazıcam.
     
  14. ByMetaL

    ByMetaL Üye

    Kayıt:
    11 Mart 2008
    Mesajlar:
    79
    Beğenilen Mesajlar:
    0
    Şehir:
    İstanbul
  15. gunay121

    gunay121 Üye

    Kayıt:
    15 Şubat 2009
    Mesajlar:
    152
    Beğenilen Mesajlar:
    0
    ByMetaL senin konuna baktım zaten oradan örnek alarak aşağıdaki şekilde yapıyorum. Peki değişecek olan metinleri tablodan satır halinde alarak yapabilirmiyiz. Eğer yapamazsak bu şekilde kullanıcam.

    Kod:
     $metin = "$veri";
    $etiketler = array("basketbol","potası","ekipmanları");
    // etiketleme
    $metin = explode (" ",$metin);
    $say = count($metin);
    for($x=0;$x<$say;$x++){
    if(in_array($metin[$x], $etiketler)){
    $metin[$x] = '<b><i><em>'.$metin[$x].'</em></i></b>';
    }
    $ymetin .= $metin[$x].' ';
    }
    $metin = $ymetin;
    unset($ymetin);
    //etiketleme son
    echo $metin;