Tags cloud help

Toc14 Messages postés 1 Statut Membre -  
 Toc14 -
Bonjour,

j ai un problème dans mon code je veux créer un nuage de mots clés à partir d'une base de données j ai pris un code qui existe deja :

<?php

class tagCloud
{
var $version = '1.0';
var $tagsArray = array();

function __construct($tags = false)
{
if ($tags !== false && is_array($tags))
{
foreach ($tags as $key => $value)
{
$this->addWord($value);
}
}
}

function tagCloud($tags = false)
{
$this->__construct($tags);
}

// ::::::::::::::::::::::::::::::::::::::::::::::::::::::: > On assigne les mots au tableau <::::::::::::::::::::::::::::::::::::

function addWord($tag, $value = 1)
{
$tag = strtolower($tag);
if (array_key_exists($tag, $this->tagsArray))
$this->tagsArray[$tag] += $value;
else
$this->tagsArray[$tag] = $value;

return $this->tagsArray[$tag];
}

function shuffleCloud()
{
$keys = array_keys($this->tagsArray);

shuffle($keys);

if (count($keys) && is_array($keys))
{
$tmpArray = $this->tagsArray;
$this->tagsArray = array();
foreach ($keys as $key => $value)
$this->tagsArray[$value] = $tmpArray[$value];
}
}

//::::::::::::::::::::::::::::::::::::::::::> Colcule de la taille des mot qui sont dans le tableau ::::::::::::::::::::::::::::::::::::::::::::::::::::::::

function getCloudSize()
{
return array_sum($this->tagsArray);
}

//:::::::::::::::::::::::::::::::::::::::::::::> On classe les mot pour que l'affichage par la suite respecte la notion de redondance des éléments <::::::::::::::::::::::::::::::::::

function getClassFromPercent($percent)
{
if ($percent >= 99)
$class = 1;
else if ($percent >= 70)
$class = 2;
else if ($percent >= 60)
$class = 3;
else if ($percent >= 50)
$class = 4;
else if ($percent >= 40)
$class = 5;
else if ($percent >= 30)
$class = 6;
else if ($percent >= 20)
$class = 7;
else if ($percent >= 10)
$class = 8;
else if ($percent >= 5)
$class = 9;
else
$class = 0;

return $class;
}

//::::::::::::::::::::::::::::::::::::::::::::::::::::::> On génère un code HTML pour chaque mot et on lui applique un taille et une couleur

function showCloud($returnType = "html")
{
$this->shuffleCloud();
$this->max = max($this->tagsArray);
if (is_array($this->tagsArray))
{
$return = ($returnType == "html" ? "" : ($returnType == "array" ? array() : ""));
foreach ($this->tagsArray as $tag => $popularity)
{
$sizeRange = $this->getClassFromPercent(($popularity / $this->max) * 100);
if ($returnType == "array")
{
$return[$tag]['word'] = $tag;
$return[$tag]['sizeRange'] = $sizeRange;
}
else if ($returnType == "html")
{
$return .= "<span class='word size{$sizeRange}'>   {$tag}   </span>";
}
}
return $return;
}
}
}
?>

<!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.01 Transitional//EN' 'http://www.w3.org/TR/html4/loose.dtd'>
<html>
<head>
<title>Tagcloud</title>
<link rel="stylesheet" type="text/css" href="css/style.css" media="all" />

</head>
<body>

<?php

//:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::> On génere un tableau contenant les mots qui constituront le nuage <::::::::::::::::::::::::::::::::::::::::::::::::::::

$randomWords = array("moteur", "Delicious", "nuage", "XML", "CMS", "Xoop", "Tortoise", "PHP", "tortoise", "netvibes", "flux", "programming", "aggregateur", "models","Xoops", "tagCloud", "forums", "GoogleCode", "arbre", "css", "joomla", "sql", "css", "mysql", "sql","ontologie", "nuage", "class", "object", "methode", "Xpath", "Xpath", "tags", "fluxRSS", "communautaire", "wiki");
$cloud = new tagCloud($randomWords);
$cloud->addWord("tags", 50); // on rajoute n fois un mot pour que dans la représentation graphique il soit plus grand car il serra plus fréquement utilisé
$cloud->addWord("arbre", 8);
$cloud->addWord("models", 17);
$cloud->addWord("Tortoise", 22);
$cloud->addWord("nuage", 32);
$cloud->addWord("flux", 45);
$cloud->addWord("ontologie", 72);
$cloud->addWord("XML", 67);

$cloud->addWord("moteur", 10);
$cloud->addWord("Xoop", 3);
$cloud->addWord("Xpath", 5);
$cloud->addWord("aggregateur", 45);
$cloud->addWord("fluxRSS", 20);
$cloud->addWord("CMS", 22);

echo $cloud->showCloud(); //on affiche le rendu du traitement php et css ::::> le nuage !!
?>
</body>
</html>

Avec le css :

/*On génère un CSS permettant de gérer les proprété structu*/

body{

background-color:#000000;

}

.word {
font-family: Tahoma;
padding: 4px 4px 4px 4px;
letter-spacing: 3px;
}

span.size1 {
color: #FF6600;
font-size: 2.4em;
}
span.size2 {
color: #FF1800;
font-size:2.2em;
}
span.size3 {
color: #F6FF00;
font-size: 2.0em;
}
span.size4 {
color: #22DK66;
font-size: 1.0em;
}
span.size5 {
color: #9CD307;
font-size: 1.6em;
}
span.size6 {
color: #7CCCAB;
font-size: 1.4em;
}
span.size7 {
color: #00A8FF;
font-size: 1.2em;
}
span.size8 {
color: #5521FF;
font-size: .8em;
}
span.size0 {
color: #FE9B00;
font-size: .6em;
}

ET JE voulais le modifier pour qu 'il peut récupérer les mots stockes dans ma base de donnée voila le code que j ai fait jusqu'a mnt mais y a des erreurs :
<?php

class tagCloud
{
var $version = '1.0';
var $tagsArray = array();

function __construct($tags = false)
{
if ($tags !== false && is_array($tags))
{
foreach ($tags as $key => $value)
{
$this->addWord($value);
}
}
}

function tagCloud($tags = false)
{
$this->__construct($tags);
}

// ::::::::::::::::::::::::::::::::::::::::::::::::::::::: > On assigne les mots au tableau <::::::::::::::::::::::::::::::::::::

function addWord($tag, $value = 1)
{
$tag = strtolower($tag);
if (array_key_exists($tag, $this->tagsArray))
$this->tagsArray[$tag] += $value;
else
$this->tagsArray[$tag] = $value;

return $this->tagsArray[$tag];
}

function shuffleCloud()
{
$keys = array_keys($this->tagsArray);

shuffle($keys);

if (count($keys) && is_array($keys))
{
$tmpArray = $this->tagsArray;
$this->tagsArray = array();
foreach ($keys as $key => $value)
$this->tagsArray[$value] = $tmpArray[$value];
}
}

//::::::::::::::::::::::::::::::::::::::::::> Colcule de la taille des mot qui sont dans le tableau ::::::::::::::::::::::::::::::::::::::::::::::::::::::::

function getCloudSize()
{
return array_sum($this->tagsArray);
}

//:::::::::::::::::::::::::::::::::::::::::::::> On classe les mot pour que l'affichage par la suite respecte la notion de redondance des éléments <::::::::::::::::::::::::::::::::::

function getClassFromPercent($percent)
{
if ($percent >= 99)
$class = 1;
else if ($percent >= 70)
$class = 2;
else if ($percent >= 60)
$class = 3;
else if ($percent >= 50)
$class = 4;
else if ($percent >= 40)
$class = 5;
else if ($percent >= 30)
$class = 6;
else if ($percent >= 20)
$class = 7;
else if ($percent >= 10)
$class = 8;
else if ($percent >= 5)
$class = 9;
else
$class = 0;

return $class;
}

//::::::::::::::::::::::::::::::::::::::::::::::::::::::> On génère un code HTML pour chaque mot et on lui applique un taille et une couleur

function showCloud($returnType = "html")
{
$this->shuffleCloud();
$this->max = max($this->tagsArray);
if (is_array($this->tagsArray))
{
$return = ($returnType == "html" ? "" : ($returnType == "array" ? array() : ""));
foreach ($this->tagsArray as $tag => $popularity)
{
$sizeRange = $this->getClassFromPercent(($popularity / $this->max) * 100);
if ($returnType == "array")
{
$return[$tag]['word'] = $tag;
$return[$tag]['sizeRange'] = $sizeRange;
}
else if ($returnType == "html")
{
$return .= "<span class='word size{$sizeRange}'>   {$tag}   </span>";
}
}
return $return;
}
}
}
?>

<!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.01 Transitional//EN' 'http://www.w3.org/TR/html4/loose.dtd'>
<html>
<head>
<title>Tagcloud</title>
<link rel="stylesheet" type="text/css" href="css/style.css" media="all" />

</head>
<body>

<?php

$connexion = mysql_connect("localhost", "root", "");

//Selection de la base de données
mysql_select_db("bddmi4", $connexion);

//Requête SQL pour lire la relation element <--> document à la recherche
//de la saisie query

$sql = "SELECT mot,source,poids FROM mot WHERE poids>30" ; // de 0 à 9 et de A à Z

//Exécution de la requête SQL
$resultats = mysql_query($sql);
$tabm=array();
$tabp=array();
//Parcourir et afficher les résultats obtenus à partir de la requête (sous forme de liste)
while ( $ligne = mysql_fetch_array($resultats) ) // ligne ou row results ou query while ( $ligne = mysql_fetch_row( $resultats ) )
{

// on a ajoute du php dans html pour lui dir qu'il doit parcourir la bd pour afficher la source puis le mot

$s=$ligne['source'];
$tabm=$ligne['mot'];
// "<br>";
$tabp= $ligne['poids'];
//$randomWords = array($m);

}
foreach($tabm as $mot){
$cloud = new tagCloud($mot);
$cloud->addWord($mot, 17); // on rajoute n fois un mot pour que dans la représentation graphique il soit plus grand car il serra plus fréquement utilisé
$cloud->addWord($mot, 17);
}

//:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::> On génere un tableau contenant les mots qui constituront le nuage <::::::::::::::::::::::::::::::::::::::::::::::::::::

//echo $cloud->showCloud(); //on affiche le rendu du traitement php et css ::::> le nuage !!

//Fermerture de la connexion
mysql_close($connexion);

?>
</body>
</html>

Sachant que j 'au une bd avec la table mot qui contient les colonnes mot+poids(poids du mot)

J attend vos rps Merci à l'avance
A voir également:

1 réponse

Toc14
 
qq peut me repondre svp
0