• 02-04-2008, 14:20:44
    #1
    Üyeliği durduruldu
    Çok basit bir sistem ve sitelerinizde rahatlıkla kullanabilirsiniz…

    önizleme :


    <?php
    // Etiket Arrayımız
    $etiketArray = array(); 
     
    // kelimeler
    $etiketler = "PHP php php php php php php asp html java js php js asp html js js php php php php asp js javascript js soru cevap hazir";
     
    // kelimeleri say
    foreach( str_word_count( $etiketler, 1 ) as $etiket )
    {
    	// Tekrarlanmayı silip saymayı attır
    	array_key_exists( $etiket, $etiketArray ) ? $etiketArray[ $etiket ]++ : $etiketArray[ $etiket ] = 0;
    }
     
    // ==============================================================
    // = Bulutla Fonksiyonumuz                                      =
    // ==============================================================
    function bulutla( $etiketArray = array(), $enDusukFont = 12, $enYuksekFont = 30 )
    {
    	$minSay = min( array_values( $etiketArray ) );
    	$maxSay = max( array_values( $etiketArray ) );
    	$spread       = $maxSay - $minSay;
     
    	$bulutArray    = array();
     
    	$spread == 0 && $spread = 1;
     
    	foreach( $etiketArray as $etiket => $say )
    	{
    		$size = $enDusukFont + ( $say - $minSay ) 
    			* ( $enYuksekFont - $enDusukFont ) / $spread;
    		$bulutArray[] = '<a style="font-size: ' . floor ( $size ) . 'px' 
    		. '" class="tag_cloud" href="http://siteniz.com/etiket/' . $etiket 
    		. '" title="\'' . $etiket  . '\' toplam bulunan ' . $say . '">' 
    		. htmlspecialchars( stripslashes( $etiket ) ) . '</a>';
    	}
     
    	return join( "\n", $bulutArray ) . "\n";
    }	
    ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    	"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
     
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    	<title>Etiket Bulutu</title>
    	<style type="text/css" media="screen">
    		.tag_cloud { padding: 3px; text-decoration: none; }
    		.tag_cloud:link  { color: #81d601; }
    		.tag_cloud:visited { color: #019c05; }
    		.tag_cloud:hover { color: #ffffff; background: #69da03; }
    		.tag_cloud:active { color: #ffffff; background: #ACFC65; }
    	</style>
    </head>
     
    <body>
    <fieldset style="background:#FF6600; padding:5px; border:#FF6000 5px dashed; width:480px;">
    <legend style="font-size:25px; color:#333333; border:#FF6000 3px solid; background:#FF6600; padding:5px;">Etiket Bulutu</legend>
    	<div style="width:500px;">
    		<?php echo bulutla( $etiketArray );  ?>
    	</div>
    	</fieldset>
    </body>
    </html>
    Kaynak (Kendi sitem) :
    Etiket Bulutu Yapalım (wp tarzı) » Yazı » KPLN! - KaPLaN!
  • 02-04-2008, 18:29:51
    #2
    Üyeliği durduruldu
    Bugün konusunu acmaya niyetlenmistim, +Rep tesekkürler.
  • 05-04-2008, 17:38:59
    #3
    güzel konu teşekkürler
  • 07-04-2008, 01:17:18
    #4
    bunu veri tabanı bağlantısı nasıl yapabiliriz.

    Örnek veri tabanı
    haberid
    haberbaslik
    haber

    $etiketler değişkenine veri tabanındaki kayıtlı tüm haber başlıklarındaki kelimeleri yazdıralım.

    2. olarak ta belli bir kelimeden sonra (örneğin 100) sayfalama yapalım.

    Bu şekilde örnekleyebilirseniz çok iyi olur.
  • 10-04-2008, 04:16:51
    #5
    Üyeliği durduruldu
    <?php 
    
    //örnek tablo
    /*
       CREATE TABLE `etiketler` (
      `e_id` int(20) NOT NULL auto_increment,
      `e_tr` varchar(255) NOT NULL default '',
      PRIMARY KEY  (`e_id`)
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=0 ;
    */
    
    $host = "localhost";
    $username = "root";
    $password = " şifre";
    $table_name = " db ";
    
    $dbh=mysql_connect ($host, $username, $password) or die ('I cannot connect to the database because: ' . mysql_error());
    mysql_select_db ($table_name);
    
    function dost_Linkler($url)
    {
       $url = trim($url);
       $url = strtolower($url);
    
       $find = array('<b>', '</b>');
       $url = str_replace ($find, '', $url);
    
       $url = preg_replace('/<(\/{0,1})img(.*?)(\/{0,1})\>/', 'image', $url);
    
       $find = array('ı','İ');
       $url = str_replace($find, 'i', $url);
       
       $find =array('Ş','ş');
    	$url = str_replace ($find, 's', $url);
       $find = array(' ', '&quot;', '&amp;', '&', '\r\n', '\n', '/', '\\', '+', '<', '>');
       $url = str_replace ($find, '-', $url);
    
       $find = array('é', 'è', 'ë', 'ê', 'É', 'È', 'Ë', 'Ê');
       $url = str_replace ($find, 'e', $url);
    
       $find = array('í', 'i', 'ì', 'î', 'ï', 'ı', 'I', 'I', 'Í', 'Ì', 'Î', 'Ï', 'İ');
       $url = str_replace ($find, 'i', $url);
    
       $find = array('ó', 'ö', 'Ö', 'ò', 'ô', 'Ó', 'Ò', 'Ô');
       $url = str_replace ($find, 'o', $url);
    
       $find = array('á', 'ä', 'â', 'à', 'â', 'Ä', 'Â', 'Á', 'À', 'Â');
       $url = str_replace ($find, 'a', $url);
    
       $find = array('ú', 'ü', 'Ü', 'ù', 'û', 'Ú', 'Ù', 'Û');
       $url = str_replace ($find, 'u', $url);
    
       $find = array('ç', 'Ç');
       $url = str_replace ($find, 'c', $url);
    
       $find = array('s', 'ş', 'S', 'Ş');
       $url = str_replace ($find, 's', $url);
    
       $find = array('g', 'ğ', 'G', 'Ğ');
       $url = str_replace ($find, 'g', $url);
    
       $find = array('/[^a-z0-9\-<>]/', '/[\-]+/', '/<[^>]*>/');
    
       $repl = array('', '-', '');
    
       $url = preg_replace ($find, $repl, $url);
       $url = str_replace ('--', '-', $url);
    
       return $url;
    }
    
    
    //etiketleri alacağınız tabloyu seçin 
    //altta $r[e_tr]; war orda e_tr ye etiketleri tabloda hangi field dan alıyorsanız işte onu yazın... 
    
    $q = mysql_query("select * from etiketler order by rand() ");
    $etk= "";
    if(mysql_num_rows($q) > 0) {
    while ($r = mysql_fetch_array($q) ) {
    $etk.= str_replace(" ", "_", $r[e_tr])." ";
    }
    }
    
    // Etiket Arrayımız
    $etiketArray = array(); 
     
    // kelimeler
    $etiketler = $etk;
     
    // kelimeleri say
    foreach( str_word_count( $etiketler, 1 ) as $etiket )
    {
        // Tekrarlanmayı silip saymayı attır
        array_key_exists( $etiket, $etiketArray ) ? $etiketArray[ $etiket ]++ : $etiketArray[ $etiket ] = 0;
    }
     
    // ==============================================================
    // = Bulutla Fonksiyonumuz                                      =
    // ==============================================================
    function bulutla( $etiketArray = array(), $enDusukFont = 12, $enYuksekFont = 30 )
    {
        $minSay = min( array_values( $etiketArray ) );
        $maxSay = max( array_values( $etiketArray ) );
        $spread       = $maxSay - $minSay;
     
        $bulutArray    = array();
     
        $spread == 0 && $spread = 1;
     
        foreach( $etiketArray as $etiket => $say )
        {
            $size = $enDusukFont + ( $say - $minSay ) 
                * ( $enYuksekFont - $enDusukFont ) / $spread;
            $bulutArray[] = '<a style="font-size: ' . floor ( $size ) . 'px' 
            . '" class="tag_cloud" href="http://siteniz.com/etiket/' . dost_Linkler($etiket) 
            . '" title="\'' . $etiket  . '\' toplam bulunan ' . $say . '">' 
            .  str_replace("_", " ", $etiket) . '</a>';
        }
     
        return join( "\n", $bulutArray ) . "\n";
    }    
    ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
     
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <title>Etiket Bulutu</title>
        <style type="text/css" media="screen">
            .tag_cloud { padding: 3px; text-decoration: none; }
            .tag_cloud:link  { color: #81d601; }
            .tag_cloud:visited { color: #019c05; }
            .tag_cloud:hover { color: #ffffff; background: #69da03; }
            .tag_cloud:active { color: #ffffff; background: #ACFC65; }
        </style>
    </head>
     
    <body>
    <fieldset style="background:#FF6600; padding:5px; border:#FF6000 5px dashed; width:480px;">
    <legend style="font-size:25px; color:#333333; border:#FF6000 3px solid; background:#FF6600; padding:5px;">Etiket Bulutu</legend>
        <div style="width:500px;">
            <?php echo bulutla( $etiketArray );  ?>
        </div>
        </fieldset>
    </body>
    </html>
    şu anda işlerden pek zaman bulamadım ama böyle bir şey geçici olarak işinizi görür heralde..
    Biraz boşa çıkarsam diğer şekildede sayfalama vs bakarız...
  • 10-04-2008, 04:19:19
    #6
    Üyeliği durduruldu
    örnek tablo çıkmamış neden anlamadım
    kullandığım tablo bunun gibi birşeydi...
       CREATE TABLE `etiketler` (
      `e_id` int(20) NOT NULL auto_increment,
      `e_tr` varchar(255) NOT NULL default '',
      PRIMARY KEY  (`e_id`)
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=0 ;
  • 14-04-2008, 15:05:44
    #7
    alp3r3r çok teşekkür ederim kodlar için.
    Verdiğin kodlarla sisteme çalıştı ancak bulutta yer alan türkçe karekterler görünmüyor. Örneğin "Öğretmen" kelimesi "retmen" olarak "araştırma" kelimesi "ara t ma" şeklinde çıkıyor. bunu düzeltebilirseniz memnun olurum.
  • 14-04-2008, 16:02:03
    #8
    Üyeliği durduruldu
    mysql_query("SET NAMES 'latin1'");

    yada

    mysql_query("SET NAMES 'latin5'"); denemelisin
    $dbh=mysql_connect ($host, $username, $password) or die ('I cannot connect to the database because: ' . mysql_error());
    mysql_query("SET NAMES 'latin5'");//yada latin1
    mysql_select_db ($table_name);
    sanırım işini görür.. ben localde böyle olmadan da bir sorun almıyorm...
    sanıyorum dbde kullandığın charset ile alakalı bir durum...
  • 14-04-2008, 23:28:53
    #9
    alp3r3r dediğin gibi latin1 latin5 denedim olmadı. veri tabanı karekter seti ile alakalı değil galiba. İlk verdiğin kodda da aynı sorun var. ilk kodda kelimeler dizinin içinden alınıyor. Ben aşağıdaki gibi kelimeleri değiştirdim.
    <?php
    // Etiket Arrayimiz
    $etiketArray = array(); 
    // kelimeler
    $etiketler = "Ögretmen Ögretmen Ögretmen Ögretmen Ögretmen sarki sarki sarki arastirma ülker Ülser soru cevap hazir";
    // kelimeleri say
    foreach( str_word_count( $etiketler, 1 ) as $etiket )
    {
        // Tekrarlanmayi silip saymayi attir
        array_key_exists( $etiket, $etiketArray ) ? $etiketArray[ $etiket ]++ : $etiketArray[ $etiket ] = 0;
    }
    // ==============================================================
    // = Bulutla Fonksiyonumuz                                      =
    // ==============================================================
    function bulutla( $etiketArray = array(), $enDusukFont = 12, $enYuksekFont = 30 )
    {
        $minSay = min( array_values( $etiketArray ) );
        $maxSay = max( array_values( $etiketArray ) );
        $spread       = $maxSay - $minSay;
        $bulutArray    = array();
        $spread == 0 && $spread = 1;
        foreach( $etiketArray as $etiket => $say )
        {
            $size = $enDusukFont + ( $say - $minSay ) 
                * ( $enYuksekFont - $enDusukFont ) / $spread;
            $bulutArray[] = '<a style="font-size: ' . floor ( $size ) . 'px' 
            . '" class="tag_cloud" href="http://siteniz.com/etiket/' . $etiket 
            . '" title="\'' . $etiket  . '\' toplam bulunan ' . $say . '">' 
            . htmlspecialchars( stripslashes( $etiket ) ) . '</a>';
        }
        return join( "\n", $bulutArray ) . "\n";
    }    
    ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <title>Etiket Bulutu</title>
        <style type="text/css" media="screen">
            .tag_cloud { padding: 3px; text-decoration: none; }
            .tag_cloud:link  { color: #81d601; }
            .tag_cloud:visited { color: #019c05; }
            .tag_cloud:hover { color: #ffffff; background: #69da03; }
            .tag_cloud:active { color: #ffffff; background: #ACFC65; }
        </style>
    </head>
    <body>
    <fieldset style="background:#FF6600; padding:5px; border:#FF6000 5px dashed; width:480px;">
    <legend style="font-size:25px; color:#333333; border:#FF6000 3px solid; background:#FF6600; padding:5px;">Etiket Bulutu</legend>
        <div style="width:500px;">
            <?php echo bulutla( $etiketArray );  ?>
        </div>
        </fieldset>
    </body>
    </html>
    ve sonuçta türkçe karekterler gene yok.
    Buradan bakabilirsniz.
    Veritabanı bağlantılı halde olanıda Buradan bakabilirsiniz.