cs_iomega
Messages postés144Date d'inscriptionjeudi 24 avril 2003StatutMembreDerniè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és23590Date d'inscriptionsamedi 22 octobre 2005StatutModérateurDernière intervention15 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és27Date d'inscriptionmercredi 16 mai 2007StatutMembreDernière intervention13 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;
// 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 '
';
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és39Date d'inscriptionsamedi 7 janvier 2006StatutMembreDernière intervention13 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:
JoJo738
Messages postés1267Date d'inscriptionmercredi 7 juillet 2004StatutMembreDernière intervention29 juin 20102 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és24Date d'inscriptionjeudi 1 juin 2006StatutMembreDernière intervention 2 octobre 20067 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és1267Date d'inscriptionmercredi 7 juillet 2004StatutMembreDernière intervention29 juin 20102 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és24Date d'inscriptionjeudi 1 juin 2006StatutMembreDernière intervention 2 octobre 20067 1 oct. 2006 à 21:12
Tout est dans le zip non ?!
JoJo738
Messages postés1267Date d'inscriptionmercredi 7 juillet 2004StatutMembreDernière intervention29 juin 20102 1 oct. 2006 à 20:49
13 juil. 2009 à 11:16
27 juin 2008 à 14:55
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 ^^
8 févr. 2008 à 16:02
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
22 oct. 2007 à 16:58
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
22 août 2007 à 15:49
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
24 mai 2007 à 08:36
Par contre je l'ai installé et les liens ne sont pas cliquables :-(
Si tu pouvais m'aiguiller ca saurais sympa ;-)
+++
6 mars 2007 à 16:53
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?
5 mars 2007 à 20:20
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
15 janv. 2007 à 12:22
ton fichier zip ne fonctionne pas :(
on va essayer le reverse engeenering avec le bout de code mis dans la source :p
9 oct. 2006 à 09:23
sinon allez sur http://www.flickr.com/photos/tags/
2 oct. 2006 à 07:27
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
2 oct. 2006 à 02:19
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)
1 oct. 2006 à 23:16
Sinon c'est un code propre. Mais il manque un exemple d'utilisation.
Je testerais quand j'aurais le temps
1 oct. 2006 à 21:12
1 oct. 2006 à 20:49