Vous êtes ici Codes PHP et MySQL > Tag-cloud > Générateur de Nuage de Mots

 

Générateur de Nuage de Mots

Voici un générateur de Nuage de Mots, c'est le même générateur qui est utiliser pour tout les différents Nuage de Mots de ce site. 1 fois par jour le générateur est lancé automatiquement par tache Cron interne et le générateur remet à jour tous les Nuage de Mots de ce site.
Ce générateur est pertinent pour le référencement puisqu'il permet de générer un Nuage de Mots en fonction du contenu de votre base de donnée MySQL.
C'est un générateur, donc il génére un code indépendement de votre site!! Vous pouvez passer 10Mo de datas au peigne fin pour générer un Nuage de Mots pertinent. Au final vous aurez une ligne de code à placer dans votre script:

Intallation:
1° Création d'un fichier tag_clouds.txt avec droits ouvert en écriture sur ce fichier
2° CONNECTION : Remplissez vos logs MySQL
3° ASPIRER VOS DATAS: Connecter une de vos tables pour remplir la variable $texte avec vos datas
4° Lancez le script !!
5° Ajustement avec la CONFIGURATION et les STOP WORD ;)
 
KOogar
Site de l'auteur voir
[65] sources en PHP voir
Code vu 10365 fois
Enregistré le 19 Mars 2008
  • Digg ce code sur digg.com
  • Bookmark ce code sur del.icio.us
  • Bookmark ce code sur Google
  • Bookmark ce code sur Yahoo
  • Ajoute Générateur de Nuage de Mots
  • Partage ce code sur Facebook
 
 
 
 

Code Source


01.
02.
03.
04.
05.
06.
07.
08.
09.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
164.
165.
166.
167.
168.
169.
170.
171.
172.
173.
174.
175.
176.
177.
178.
179.
180.
181.
182.
183.
184.
185.
186.
187.
188.
189.
190.
191.
192.
193.
194.
195.
196.
197.
198.
199.
200.
201.
202.
203.
204.
205.
206.
207.
208.
209.
210.
211.
212.
213.
214.
215.
216.
217.
218.
219.
220.
221.
222.
223.
224.
225.
226.
227.
228.
229.
230.
231.
232.
233.
234.
235.
236.
237.
238.
239.
240.
241.
242.
243.
244.
245.
246.
247.
248.
249.
250.
251.
252.
253.
254.
255.
256.
257.
258.
259.
260.
261.
262.
263.
264.
265.
266.
267.
268.
269.
270.
271.
272.
273.
274.
275.
276.
277.
278.
279.
280.
281.
282.
283.
284.
285.
286.
287.
288.
289.
290.
291.
292.
293.
294.
295.
296.
297.
298.
299.
300.
301.
302.
303.
304.
305.
306.
307.
308.
309.
310.
311.
312.
313.
314.
315.
316.
317.
318.
319.
320.
321.
322.
323.
324.
325.
326.
327.
328.
329.
330.
 
<?php
/******************************************************************************/
/*                                                                            */
/*                       __        ____                                       */
/*                 ___  / /  ___  / __/__  __ _____________ ___               */
/*                / _ \/ _ \/ _ \_\ \/ _ \/ // / __/ __/ -_|_-<               */
/*               / .__/_//_/ .__/___/\___/\_,_/_/  \__/\__/___/               */
/*              /_/       /_/                                                 */
/*                                                                            */
/*                                                                            */
/******************************************************************************/
/*                                                                            */
/* Titre          : Générateur de Nuage de Mots                               */
/*                                                                            */
/* URL            : http://www.phpsources.org/scripts360-PHP.htm              */
/* Auteur         : KOogar                                                    */
/* Date édition   : 19 Mars 2008                                              */
/* Website auteur : http://www.koogar.fr                                      */
/*                                                                            */
/******************************************************************************/



/********************************/
/*    CONNECTION                */
/*******************************************************************************
    *  Remplissez avec vos logs de connection
    ***************************************************************************/


$mabasededonnee="";
 
$db mysql_connect("localhost","root","");
// test la connection
if ( ! $db )
  die ("connection impossible");
  // Connecte la base
  mysql_select_db($mabasededonnee) or die ("pas de connection");    

/********************************/
/*    ASPIRER VOS DATAS         */
/*******************************************************************************
    *  Remplissez correctement le nom de votre table pour le nom du champ
    ***************************************************************************/

      $result mysql_query("SELECT champ FROM table");
      while ($row mysql_fetch_array($result)) {
       $texte .= $row['champ'];
      }

/********************************/
/*    CONFIGURATION             */
/*******************************************************************************
    *  2 templates differents
    *  commenter le premier et decommenté le second pour utilisation
    ***************************************************************************/

      /*
      $taille_des_mots = 6; // taille des mots en nombre de lettre

      //  NE PAS TOUCHER
      $x = 3; $y = 12;
      $nbre_elements = 36;  // nombre d'elements
      $nbcol_tableau = 2;  //détermine le nombre de colonnes
      */

      $taille_des_mots 8// taille des mots en nombre de lettre
      $option 0;
      // NE PAS TOUCHER
      $x 3$y 6;
      $nbre_elements 18;  // nombre d'elements
      $nbcol_tableau 1;  //détermine le nombre de colonnes



/********************************/
/*    CSS                       */
/*******************************************************************************
    *  3 classes et pas 1 de plus !!
    *  Vous pouvez modifier le contenu des classes
    ***************************************************************************/

?> 
<style type="text/css">
a.cloud1 { font-family:Verdana; font-size:24px;text-decoration: none;}
a.cloud1:hover { font-family:Verdana; font-size:22px;text-decoration:underline; }
a.cloud2 { font-family:Verdana; font-size:16px;text-decoration: none;}
a.cloud2:hover { font-family:Verdana; font-size:14px;text-decoration:underline; }
a.cloud3 { font-family:Verdana; font-size:12px;text-decoration: none;}
a.cloud3:hover { font-family:Verdana; font-size:10px;text-decoration:underline; }
</style> <?


/********************************/
/*    TEMPS D'EXECUTION         */
/*******************************************************************************
    * Mise a zero du calcul du temps d'execution du script
    ***************************************************************************/

$mtime microtime();
$mtime explode(" ",$mtime);
$mtime $mtime[1] + $mtime[0];
$starttime $mtime;

set_time_limit(0);


/********************************/
/*    STOP WORD                 */
/*******************************************************************************
    *  C'est ici que vous mettez les mots que vous ne voulez pas !
    ***************************************************************************/
$tab_banni =
array(
"mais","ou","et","donc","or","ni","car",
"je","il","lui","ils","elle","elles","nous","vous",
"vos","votre","mes","mien","mien","tien","tiens",
"tout","toute","toutes",
"a","b","c","d","e","f","g","h","i","j","l","m","n","o","p","q",
"r","s","t","u","v","w","x","y","z",
"le","la","les","nos",
"alors","au","aucuns","aussi","autre","avant","avec","avoir","bon","car","ce",
"cela","ces","ceux","chaque","ci","comme","comment","dans","des","du","dedans",
"dehors","depuis","deux","devrait","doit","donc","dos","droite","début","elle",
"elles","en","encore","essai","est","et","eu","fait","faites","fois","font",
"force","haut","hors","ici","il","ils","je juste","la","le","les","leur","là",
"ma","maintenant","mais","mes","mine","moins","mon","mot","même","ni","nommés",
"notre","nous","nouveaux","ou","où","par","parce","parole","pas","personnes",
"peut","peu","pièce","plupart","pour","pourquoi","quand","que","quel","quelle",
"quelles","quels","qui","sa","sans","ses","seulement","si","sien","son",
"sont","sous","soyez sujet","sur","ta","tandis","tellement","tels","tes","ton",
"tous","tout","trop","très","tu","valeur","voie","voient","vont","votre","vous",
"vu","ça","étaient","état","étions","été","être",
"un","deux","trois","quatre","cinq","six","sept","huit","neuf","dix",
"0","1","2","3","4","5","6","7","8","9","10",
"avec","chez","par","dans","des","en","de","une","votre","meilleurs","entre",
"entres","depuis","alors","ne","pas","du","meme",
"ou","nom","seuls","acceptes","ayant",
"vos","votre","mes","mien","mien","tien","tiens","tout","toute","toutes",
"que","quoi","qui","comment","peu","peut","pis","puis","pas",
"chaque","chacun","chacune",
"son","ses","au","aux","se","sur","ce","ceux","cette","ca","ci","ceci","cela",
"aussi","pour","petit","grand","moyen","large","haut","bas","milieu","droite",
"gauche","centre","dit","etre","leur","leurs","plus","moin","moins",
"es","est","sont","son","va","suis","ai","viens"
                   );
/*******************************************************************************
    *  Fonction enleve les slashs
    *  Enleve les accents
    ***************************************************************************/

function AuStripSlashes($chaine) {
    return(get_magic_quotes_gpc() == StripSlashes($chaine) : $chaine);}

function TexteSansAccent($texte){
$accent='ÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËéèêëÇçÌÍÎÏìíîïÙÚÛÜùúûüÿÑñ';
$noaccent='AAAAAAaaaaaaOOOOOOooooooEEEEeeeeCcIIIIiiiiUUUUuuuuyNn'$texte strtr($texte,$accent,$noaccent); 
return $texte; }

/*******************************************************************************
    *  gestion de la chaine et placement de la chaine dans une table
    ***************************************************************************/

// enleve les slashs
$texte AuStripSlashes($texte);
// enleve les accent
$texte TexteSansAccent($texte);// enleve les accent
// enleve les apostrophes
$texte str_replace("'"," ",$texte);
// passe le texte en minuscule
$texte strtolower($texte); // passe minuscule
// Place tous les mots d'une chaine dans un tableau
$regs1 split("[^[:alpha:]]+"$texte);
$tab_copie $regs1// copie de la table

/*******************************************************************************
    *  gestion du tableau
    ***************************************************************************/

// enleve les mots bannis en faisant le difference des 2 tableaux
$regs array_diff($regs1,$tab_banni);
// On groupe les Mots-clés identiques et on les compte
$stats array_count_values($regs);
// On trie par ordre croissant la liste
array_multisort($statsSORT_DESC);
// On crée un tableau avec les clés du tableau correpondants aux mots clés
$tabKey array_keys($stats);

/********************************/
/*    CREATION TABLEAU          */
/*******************************************************************************
    *  Création du tableau contenant les resultats
    ***************************************************************************/

      $i=0;
      $compteur 0;
      while ( $i sizeof($tabKey))

      {
      $champ $tabKey[$i];
      $taille  strlen($champ);
      if ($taille <= $taille_des_mots) {
      $tag[$compteur] = $tabKey[$i];
      $compteur++;
       }
        $i++;
       if ($compteur==($nbre_elements+1)) break;
      }

/********************************/
/*    CREATION DU TAGS CLOUD    */
/*******************************************************************************
    *  3 tableaux pour faire un aléatoire sur chacun
    ***************************************************************************/



// PREMIERE PARTIE

$i=0;
$temp1 = -1;
$temp2 0;
$temp3 0;

while ($i<sizeof($tag))
    {
 if ($i <= $y) {
 if ($option) {$nb = ($temp1++ & 1) ? '3' '1';} else {$temp1++; $nb=1;}
$tab_1[$temp1]='<a class="cloud'.$nb.'" href="file.php?w='.$tag[$i].'">'.$tag[$i].'</a> ';
 }

 if ($i $y and $i <= ($y*2)) {
 $tab_2[$temp2] = '<a class="cloud2" href="file.php?w='.$tag[$i].'">'.$tag[$i].'</a> ';
 $temp2++;
 }
 if ($i > ($y*2) ) {
 $tab_3[$temp3] = '<a class="cloud3" href="file.php?w='.$tag[$i].'">'.$tag[$i].'</a> ';
 $temp3++;
 }

$i++;
}

$i=0;
while ($i<$y)
    {
    $tchaine = array();
    $new_chaine '';
    $tchaine[] = $tab_1[$i];
    $tchaine[] = $tab_2[$i];
    $tchaine[] = $tab_3[$i];
    srand((float)microtime()*1000000);
    shuffle($tchaine);
     $j=0;
    while ($j<sizeof($tchaine)) { $new_chaine .= $tchaine[$j]; $j++; }
    $tab_final[] = $new_chaine;
    $i++;
    }

/**************************************/
/*    CREATION FINAL DU TAGS CLOUD    */
/*******************************************************************************
    *  c'est ici que vous pouvez ajuster l'affichage du tag cloud
    ***************************************************************************/

$i=0;
 $tag_clouds  '<table style="width:240px;border: 1px dotted #999;margin:2px;">';
 while ($i<sizeof($tab_final))
    {
    if($i%$nbcol_tableau==0)
    $tag_clouds  .= '<tr><td colspan="'.$nbcol_tableau.'">';
    $tag_clouds  .= ''.$tab_final[$i].'';

  if($i%$nbcol_tableau==($nbcol_tableau-1)) 
  $tag_clouds  .= "</td></tr>";
  $i++;
  }
  $tag_clouds  .= "</table>";

/********************************/
/*    CONNECTION FICHIER        */
/*******************************************************************************
    *  Ouverture du fichier et insertion du tag cloud
    ***************************************************************************/

$f 'tag_clouds.txt';
$handle fopen($f,"w+");

// regarde si le fichier est accessible en écriture 
if (is_writable($f)) { 
// Ecriture 
    if (fwrite($handle$tag_clouds) === FALSE) {
      echo 'Impossible d\'écrire dans le fichier '.$f.''; 
      exit; 
    } 
    fclose($handle);
                    
    }
    else { echo 'Impossible d\'écrire dans le fichier '.$f.'';
    } 

/********************************/
/*    TEMPS D'EXECUTION         */
/*******************************************************************************
    * Calcul et affichage du temps d'execution du script
    ***************************************************************************/

   $mtime microtime();
   $mtime explode(" ",$mtime);
   $mtime $mtime[1] + $mtime[0];
   $endtime $mtime;
   $totaltime = ($endtime $starttime);
   echo'<br /><br />';
   echo '<font style="font-size:11px;font-family:Verdana;color:#111111; ">';
   echo 'Tag Cloud généré en ',number_format($totaltime,4,',',''),' s</font>';
   echo '</td></tr></table>';
   echo'<br /><br />';


/***********************************/
/*    AFFICHAGE LE NUAGE DE TAG ;) */
/*******************************************************************************
    *  Vous pouvez prendre cette ligne et la placez ou vous voulez sur votre site
    ***************************************************************************/

    // Affiche le tag clouds

    include 'tag_clouds.txt';

 

Fonctions du code

: Ouvre une connexion à un serveur MySQL - (PHP 4, PHP 5, PECL mysql:1.0)
: Alias de la fonction exit() - (PHP 4, PHP 5)
: Sélectionne une base de données MySQL - (PHP 4, PHP 5, PECL mysql:1.0)
: Envoie une requête à un serveur MySQL - (PHP 4, PHP 5, PECL mysql:1.0)
: - (PHP 4, PHP 5, PECL mysql:1.0)
: Retourne le timestamp UNIX actuel avec les microsecondes - (PHP 4, PHP 5)
: Coupe une chaîne en segments - (PHP 4, PHP 5)
: Fixe le temps maximum d'exécution d'un script - (PHP 4, PHP 5)
: Crée un tableau - (PHP 4, PHP 5)
: Retourne la configuration actuelle de l'option magic_quotes_gpc - (PHP 4, PHP 5)
: Supprime les antislashs d'une chaîne - (PHP 4, PHP 5)
: Remplace des caractères dans une chaîne - (PHP 4, PHP 5)
: Remplace toutes les occurrences dans une chaîne - (PHP 4, PHP 5)
: Renvoie une chaîne en minuscules - (PHP 4, PHP 5)
: Scinde une chaîne en un tableau, grâce à une expression rationnelle - (PHP 4, PHP 5)
: Calcule la différence entre deux tableaux - (PHP 4 >= 4.0.1, PHP 5)
: Compte le nombre de valeurs d'un tableau - (PHP 4, PHP 5)
: Trie les tableaux multidimensionnels - (PHP 4, PHP 5)
: Retourne toutes les clés d'un tableau - (PHP 4, PHP 5)
: Alias de count() - (PHP 4, PHP 5)
: Calcule la taille d'une chaîne - (PHP 4, PHP 5)
: Initialise le générateur de nombres aléatoires - (PHP 4, PHP 5)
: Mélange les éléments d'un tableau - (PHP 4, PHP 5)
: Ouvre un fichier ou une URL - (PHP 4, PHP 5)
: Indique si un fichier est accessible en écriture - (PHP 4, PHP 5)
: Écrit un fichier en mode binaire - (PHP 4, PHP 5)
: Affiche une chaîne de caractères - (PHP 4, PHP 5)
: Affiche un message et termine le script courant - (PHP 4, PHP 5)
: Ferme un fichier - (PHP 4, PHP 5)
: Formate un nombre pour l'affichage - (PHP 4, PHP 5)
Commentaires
Salut,
Il n'y a pas des erreurs ligne 295 et 301 ?
... echo 'Impossible d'écrire dans le fichier '.$f.'';
il n'y a pas besoin d'un backslash au mot d\'écrire pour éviter une erreur neutral?
++
 
un Koogar apprécie toujours l'oeil du Lynx smile

C'est modifié neutral
 
 

Besoin urgent d'aide sur votre script de Tag Cloud !!!!‏

Bonjour, j'ai suivi toute la démarche, mais au final, j'ai ce message :
 

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /homez.34/bininga/www/tag_clouds.txt on line 47

Tag Cloud généré en 0,0029 s

 

Je n'arrive pas à savoir où est l'erreur, pouvez-vous m'aider SVP? 1- la table que je souhaite lier au tag cloud se nomme "actualite" et regroupera toutes les actualités (articles via le gestionnaire de news) du site. Ma BD a une autre table "rubrique" qui recense toutes les rubriques du site. Laquelle serait + pertinente à lier au tag cloud?
 

2- Voici les lignes en cause (la ligne 47 signalé dans l'erreur est celle du milieu)

 
$result = mysql_query("SELECT champ FROM table");

      while ($row = mysql_fetch_array($result)) {

       $texte .= $row['actualite'];

      }


 

Voici tout le code tel que configuré chez moi. Voulant d'abord vérifier si ça marche, j'ai juste modifié l'indispensable
 
<?php

/*****************************/
/* Titre  : Générateur de Nuages de mots        

                                                                                          

/* URL            : http://www.phpsources.org/scripts360-PHP.htm             

/* Auteur         : KOogar                                                   

/* Date édition   : 19 Mars 2008       

                                    

/* Website auteur : http://www.phpsources.org                                                                                                  

/*    CONNECTION                */

/*******************************************************************************

    *  Remplissez avec vos logs de connection

    ***************************************************************************/

$mabasededonnee="nom de ma base";

 $db = mysql_connect("mon localhost","nom utilisateur","mot de passe");

// test la connection
if ( ! $db )

  die ("connection impossible");

  // Connecte la base

  mysql_select_db($mabasededonnee) or die ("pas de connection");   

 

/********************************/

/*    ASPIRER VOS DATAS         */

/* Remplissez correctement le nom de votre table pour le nom du champ :

j'ai mis 'actualite', nom de la table qui contiendra les articles

    ****************/

 $result = mysql_query("SELECT champ FROM table");

      while ($row = mysql_fetch_array($result)) {

       $texte .= $row['actualite'];

      }


    

Pas touché au reste du code. Pour afficher le tag, j'ai inclue ceci  sur la page où il doit s'afficher (la page se trouve dans un répertoire, et "tag_clouds" à la racine du site ) : 
<? include ("../tag_clouds.txt"); ?>

Je suppose que le tag devrait marcher vu que j'ai l'indication sur le tps qu'il a mis à se générer. D'où vient alors le problème à la ligne 47?

 
C'est la requete SQL qui foire. Vous ne pouvez pas vous contentez de mettre uniquement le nom de la table, il faut aussi celui des champs sur lesquel vous travailler

vous pouvez aussi prendre tous les champs avec "l'etoile" *

$result = mysql_query("SELECT * FROM actualite");

ensuite pour la lecture, n'oubliez pas de mettre le nom de votre champ

$texte .= $row['nom_du_champ'];
 
Je trouve que la démarche est intéressante, à nous de créer le script qui va avec.
 
Ajouter un commentaire
Code de sécurité

Attention: Les champs marqués d'une étoile * sont obligatoires
 
Librairie PHP

Connexion

 
 

Tag-cloud

 
 

PHP

 
 
 
 
    Offres d'emploi

Plus de 500 offres d'emploi PHP/MySQL

Offres d'emploi
 
    Editeur PHP
 
        Publicité