Je récupère les mots contenus dans le champ etiquettes de la table articles et je désire compter les occurences de chaque mot pour réaliser un nuage de tags. J'ai écrit le script suivant:
<?php
require 'admin/includes/connexion.php';
$nuage="";
$sql = mysql_query('SELECT etiquettes FROM articles') or die();
while ($rang = mysql_fetch_assoc($sql)) {
$nuage=$nuage.",".$rang['etiquettes'];
}
$nuage=substr($nuage, 1);
$nuage = explode(',',$nuage); // découper la chaîne par rapport aux virgules avec explode()
$nuage_compteur=array(); // préparer un tableau vide pour mettre les compteurs
foreach($nuage as $etiquette) {
while(preg_match("/^([ ]+).*$/",$etiquette,$trouve)) $etiquette=substr($etiquette,strlen($trouve[1])); // supprimer les éventueles espaces devant les éléments de la chaîne
while(preg_match("/^.*([ ]+)$/",$etiquette,$trouve)) $etiquette=substr($etiquette,0,-((int) strlen($trouve[1]))); // derrière
$nuage_compteur[$etiquette]++;
}
foreach($nuage_compteur as $etiquette=>$nombre) {
echo "<li> $nombre $etiquette</li>";
}
echo "</ul>";
?>
mais si il me donne bien le résultat escompté il me renvoie également le message d'erreur suivant:
à chaque tour de boucle, la ligne 31 correspondant àNotice: Undefined index: posset in C:\Program Files\EasyPHP 3.0\www\nouvelles\nuage.php on line 30
$nuage_compteur[$etiquette]++; Quel est le problème ?
Cordialement