NUAGE DE MOTS OU TAG CLOUD-FLOPTWO

JoJo738 Messages postés 1267 Date d'inscription mercredi 7 juillet 2004 Statut Membre Dernière intervention 29 juin 2010 - 1 oct. 2006 à 20:49
Centaureal Messages postés 2 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 13 juillet 2009 - 13 juil. 2009 à 11:16
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/39760-nuage-de-mots-ou-tag-cloud-floptwo

Centaureal Messages postés 2 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 13 juillet 2009
13 juil. 2009 à 11:16
comment il s'utilise ? il faudrais qq même une notice non ?
JoJo738 Messages postés 1267 Date d'inscription mercredi 7 juillet 2004 Statut Membre Dernière intervention 29 juin 2010 2
27 juin 2008 à 14:55
Hello ^^

Peitte erreur dans ton script : la bonne formule pour calculer la taille de la police est :

$element_taillepolice = $this -> taillepolice_min + $calcul_taillepolice * ( ( $element_score - min ($this -> element_liste)) / $calcul_element);

Ton script, ne prenait pas vraiment en compte le min et max (je mettais max 18, et j'obtenais du 26pt ...).
Là, c'est bon ^^

Sinon, pour la division par zéro :

$calcul_div = $calcul_element / $calcul_taillepolice;$calcul_div $calcul_div 0 ? 1 : $calcul_div; // <------- Rajoutez ceci ^^
cs_iomega Messages postés 144 Date d'inscription jeudi 24 avril 2003 Statut Membre Dernière intervention 1 septembre 2008
8 févr. 2008 à 16:02
Super ton script.
Mais j'ai le meme problème que sebastien247
j'ai une division par zéro..
Peux-tu nous donner un coup de main ca serait super simpas
bg62 Messages postés 23590 Date d'inscription samedi 22 octobre 2005 Statut Modérateur Dernière intervention 15 avril 2024
22 oct. 2007 à 16:58
bonjour
ce script m'intéresse beaucoup ... mais je suis nul en PHP !!!
alors si quelqu'un voulait bien prendre le temps de me dire comment on peut l'installer pour le faire fonctionne ce serait super !
grand merci à l'avance
@+
b g
sebastien247 Messages postés 27 Date d'inscription mercredi 16 mai 2007 Statut Membre Dernière intervention 13 mars 2011
22 août 2007 à 15:49
Bonjour,

Tout d'abord, Super Script ;)

Il marche a la perfection, le soussi, c'est que je voudrais rajouter $element_liste_result[$element_nom][2] pour rajouter le lien de la page enregistrer avec le mot clé dans ma BDD

J'ai proceder comme suite :

Page de la class :

class classe_nuagemot
{
var $taillepolice_min; // La plus petite taille de police
var $taillepolice_max; // La plus grande taille de police

// function classe_nuagemot initialise la classe
// Par défaut la plus petite taille de police sera 8 et la plus grand 20
function classe_nuagemot ($taillepolice_min 8, $taillepolice_max 20)
{
$this -> taillepolice_min = $taillepolice_min;
$this -> taillepolice_max = $taillepolice_max;
}

function element_ajout($element_nom, $element_score, $element_page)
{
// Ajout de données au tableau
$this -> element_liste [$element_nom] = $element_score;
$this -> element_liste [$element_nom] = $element_page;
}

function execute ()
{
// Calcul du coefficent de proportionalité
$element_max = max ($this -> element_liste);
$element_min = min ($this -> element_liste);
$calcul_element = $element_max - $element_min;

$taillepolice_min = $this -> taillepolice_min;
$taillepolice_max = $this -> taillepolice_max;
$calcul_taillepolice = $taillepolice_max - $taillepolice_min;

$calcul_div = $calcul_element / $calcul_taillepolice;

// On parcours la liste des donées entrées
foreach ($this -> element_liste as $element_nom => $element_score)
{
// Calcul me permettant d'obtenir la taille de police de chaque élément
$element_taillepolice = $taillepolice_min + round ($element_score / $calcul_div); <---------------- Ligne 56

// On place les résultats dans un tableau
// $element_liste_result [ nom de l'élément ][ 0 ] : Score
// $element_liste_result [ nom de l'élément ][ 1 ] : Taille de la police
// $element_liste_result [ nom de l'élément ][ 2 ] : Adresse de la page
$element_liste_result [$element_nom] = array ($element_score, $element_taillepolice, $element_page);
}

return $element_liste_result;

}
}


Page d'affichage des tag :

// On dclare la classe classe_nuagemot
$classe_nuagemot = new classe_nuagemot();

// Ici tu saisi toutes les donnes que tu veux :
// s'il s'agit d'une liste de visites par membres
// $classe_nuagemot -> element_ajout (nom du membres, nombre de visites)
while($row = mysql_fetch_array($result))
{
$classe_nuagemot -> element_ajout ($row['keyword'], $row['compteur'], $row['page']);
}
// (Il faut faire attention a ce que deux elements ne portes pas le meme nom
// Sinon c'est la valeur du dernier entr qui sera prise en compte.)

// On execute les calculs
$element_liste_result = $classe_nuagemot -> execute ();

// On parcours la liste de rsultat des dones entres
foreach ($element_liste_result as $element_nom => $element_result)
{
// $element_nom : Nom de la donne
// $element_liste_result[$element_nom][0] : Score
// $element_liste_result[$element_nom][1] : Taille de la police
echo '';
echo $element_nom , ', visites : ' , $element_liste_result[$element_nom][0] , ' (' , $element_liste_result[$element_nom][1] , 'pt)';
echo '';
echo '
';

echo '
';
echo $element_liste_result[$element_nom][2];
echo '
';

echo ''.$element_nom.' ';
echo '
';
}

Mais cela me renvoie cette erreur :

Warning: Division by zero in /home/***/www.***.com/htdocs/nuagemot-floptwo.class.php on line 56

Warning: Division by zero in /home/***/www.***.com/htdocs/nuagemot-floptwo.class.php on line 56

Il m'affiche bien les tag mais n'arrive pas a faire le calcule du compteur

Merci par avance
buddapass Messages postés 1 Date d'inscription jeudi 24 mai 2007 Statut Membre Dernière intervention 24 mai 2007
24 mai 2007 à 08:36
Bonjour , merçi pour ce code ^^ .

Par contre je l'ai installé et les liens ne sont pas cliquables :-(

Si tu pouvais m'aiguiller ca saurais sympa ;-)

+++
nacedo57400 Messages postés 39 Date d'inscription samedi 7 janvier 2006 Statut Membre Dernière intervention 13 janvier 2009
6 mars 2007 à 16:53
un exemple tout en couleur de tout ceci se trouve à cette adresse; http://nacedo.eu/search/index.php5

il comporte également un exemple d'autocompletion en AJAX et l'ajout d'un élément pour mettre en couleur les TAG en fonction de leur scor.

un fichier ZIP comportant tous les codes est fournis en bas de la page.

Par contre je n'y connais pas grand chose en se qui concerne les class, quelqun pourait'il mettre tout cela en forme?
nacedo57400 Messages postés 39 Date d'inscription samedi 7 janvier 2006 Statut Membre Dernière intervention 13 janvier 2009
5 mars 2007 à 20:20
Depuis le temps que je cherchai un script pour faire un nuage de tag, celui-ci est vraiment pas mal, court et simple.
Par contre cette façon de faire pour ajouter de nouveau tag ne correspondait pas trop à mes besoins, je l'ai donc modifier comme ceci:

function element_ajout($element_chaine, $fichier = 'liste.xml')
{
$chaine = explode(" ", $element_chaine); //on découpe la phrase en mot
$nb_value = count($chaine); //on compte le nombre de mot
$nb_value--;
//merci à http://www.php.net/manual/fr/ref.simplexml.php
if (file_exists($fichier)) { //teste si le fichier existe
$xml = simplexml_load_file($fichier); //ouvre le fichier
} else {
exit ("erreur de chargement des données XML");
}


for ($i = 0; $i <= ($nb_value); $i++) { //on parcour les mots chercher
$add = 0;
foreach ($xml->xpath('//word') as $word) { //on parcour le fichier XML
if ( (string) $word == $chaine[$i]){ //on vérifie si le mot existe
//si le mot existe déjà
$word['nb'] = floatval($word['nb']) + 1; //on augmente le nombre de recherche de ce mot
$add = 1; //on change la variable pour que le mot ne soit pas ajouté
}
}

if ($add == 0) { //si la variable n'a pas été changer on ajoute le mot a la liste
$new = $xml->addChild('word', $chaine[$i]); //ajoute se mot à la liste
$new->addAttribute('nb', '1');
}

}


//on créé la tableau a partir du XML
foreach ($xml->xpath('//word') as $word) { //on parcour le fichier XML
$element_nom = strval($word);
$element_score = strval($word['nb']);
$this -> element_liste [$element_nom] = $element_score;
}
$xml->asXML($fichier); //on sauvegarde le fichier XML
}

Cela permet d'ajouter chaque mot une chaine de caractère (par exemple une recherche dans votre moteur) puis de stocker les mots et leur score dans un fichier XML de ce type:

<?xml version='1.0' encoding="ISO-8859-1" standalone='yes'?>
<search>
<word nb="1">exemple</word>
</search>

!!!ATTENTION!!! PHP5 est obligatoire pour charger un XML avec cette methode
hebster Messages postés 8 Date d'inscription dimanche 12 janvier 2003 Statut Membre Dernière intervention 15 janvier 2007
15 janv. 2007 à 12:22
hello,
ton fichier zip ne fonctionne pas :(

on va essayer le reverse engeenering avec le bout de code mis dans la source :p
fyav Messages postés 124 Date d'inscription mardi 30 décembre 2003 Statut Membre Dernière intervention 12 février 2010
9 oct. 2006 à 09:23
une petite copie d'écran aurait été utile
sinon allez sur http://www.flickr.com/photos/tags/
JoJo738 Messages postés 1267 Date d'inscription mercredi 7 juillet 2004 Statut Membre Dernière intervention 29 juin 2010 2
2 oct. 2006 à 07:27
Ah oups, pas vu.

C'est à dire que les membres culb de CS n'ont pas besoin de télécharger pour savoir ce qu'il y a dedans ... Donc comme il n'y avait pas de fichier, j'ai cru que le Zip était vide

Faudrait faire qqchose dans le Zip pour lire sa racine :p
floptwo Messages postés 24 Date d'inscription jeudi 1 juin 2006 Statut Membre Dernière intervention 2 octobre 2006 7
2 oct. 2006 à 02:19
J'ai tester, tout est bien dans le zip!

Je n'ai surement pas preciser que
nuagemot-floptwo.class.php contient la classe
et
nuagemot-floptwo.php est l'exemple d'utilisation

Et je le redis, tout est dans le zip!! (euhhh, il faut telecharger le zip pour le consulter)
JoJo738 Messages postés 1267 Date d'inscription mercredi 7 juillet 2004 Statut Membre Dernière intervention 29 juin 2010 2
1 oct. 2006 à 23:16
Euh, aparament non ^^

Sinon c'est un code propre. Mais il manque un exemple d'utilisation.

Je testerais quand j'aurais le temps
floptwo Messages postés 24 Date d'inscription jeudi 1 juin 2006 Statut Membre Dernière intervention 2 octobre 2006 7
1 oct. 2006 à 21:12
Tout est dans le zip non ?!
JoJo738 Messages postés 1267 Date d'inscription mercredi 7 juillet 2004 Statut Membre Dernière intervention 29 juin 2010 2
1 oct. 2006 à 20:49
Euh, on pourrait avoir le code ???
Rejoignez-nous