Nuage de Tags

60 posts in this topic

Posted · Report post

1) Ajout d'une table dans votre base de donnée :

-- 
-- Structure de la table `tag_cloud`
--

CREATE TABLE `tag_cloud` (
`id` int(11) NOT NULL auto_increment,
`tag_name` varchar(100) NOT NULL default '',
`nbsearch` int(11) NOT NULL default '0',
`aff_front` int(1) NOT NULL default '0',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;[/codebox]

2) Ajout dans haut.php juste avant la balise </head> (a vous de personaliser les couleurs/tailles)

[codebox]<style> .nuage {line-height:25px;font: normal small verdana, arial, helvetica, sans-serif;
text-align: justify;
border:1px solid #B6CDE1;
padding:10px;
position:relative}
.nuage a {text-decoration:none}
.nuage a:hover {color: white; background-color: #668AA8;}
.nuage a.level0 {font-size:3px;color:#DFDFDF;}
.nuage a.level1 {font-size:6px;color:#B8C9D6;}
.nuage a.level2 {font-size:7px;color:#668AA8;}
.nuage a.level3 {font-size:8px;color:#47657B;}
.nuage a.level4 {font-size:9px;color:#E76300;}
.nuage a.level5 {font-size:10px;color:#685c65;}
.nuage a.level6 {font-size:11x;color:#8c524d;}
.nuage a.level7 {font-size:12px;color:#b44732;}
.nuage a.level8 {font-size:13px;color:#e53a11;}
.nuage a.level9 {font-size:15px;color:#E76300;font-weight: bold}
.nuage a.level10 {font-size:17px;color:#FF3300;font-weight: bold}
</style>

3) Affichage du nuage : (modification le 08/06 pour une plus jolie présentation - Willy)

<?php

$max = 0;

// Requete pour l'affichage du nuage
$query = "SELECT tag_name AS tag, nbsearch AS quantity FROM tag_cloud WHERE aff_front ='1' GROUP BY tag_name ORDER BY RAND() LIMIT 25";
$result = mysql_query($query);

// Boucle à travers les résultats afin de les mettres dans un simple tableau:
while ($row = mysql_fetch_array($result)) {
$tags[$row['tag']] = $row['quantity'];
if (intval($row['quantity']) > $max){ $max = intval($row['quantity']);}
}
echo '<div class="nuage" style="margin: 0pt auto; line-height: 20px;"><font face="arial,helvetica,sans-serif" size="3">';
// Boucle à travers le tableau
foreach ($tags as $key => $value) {
$valeur = $value;
// On limite a 10 car le CSS n'a que 10 entrées
//if($valeur >= 10) { $valeur = 10; }
echo '<a rel="nofollow" href="'.$wwwroot .'/achat/recherche.php?motclef='.$key.'" ';
echo ' title="'.$value.' recherche(s) sur le mot '.$key.'"';
echo ' class="level'.intval($value * 10/$max).'">'.$key.'</a> ';
}
echo "</div>";

?>[/codebox]

4) Ajout dans recherche.php:

a) Ajout après la ligne : $motclef = htmlspecialchars(trim($_GET['motclef']), ENT_QUOTES);

[codebox]// Insertion Tag de recherche

if($motclef != ""){
$query = "SELECT COUNT(*) FROM tag_cloud WHERE tag_name = '$motclef'";
$result = mysql_query($query);
$enr = mysql_fetch_array($result);

if($enr[0] == 0 ){
$sql = "INSERT INTO `tag_cloud` (`id`, `tag_name`,`nbsearch`,`aff_front`) VALUES ('', '$motclef','0','')";
mysql_query($sql) or die(mysql_error());

}
$query = "SELECT * FROM tag_cloud WHERE tag_name = '$motclef'";
$result = mysql_query($query);
while ( $champ = mysql_fetch_array($result) )
{

$id = $champ['id'];
$nb_search = $champ['nbsearch'];
$nb_search++;
$sql = "UPDATE `tag_cloud` SET `nbsearch` = '$nb_search' WHERE `id` = $id LIMIT 1";
mysql_query($sql) or die(mysql_error());
}
}
// Fin Insertion

b) Ajout après la ligne : echo "<tr><td colspan=\"3\" class=\"normal\">".nl2br(stripslashes(RESULT_SEARCH_NOK))."</td></tr>";

// Recherche NOK donc on taggue le mot a 1 pour un affichage sur le front office
$sql = "UPDATE `tag_cloud` SET `aff_front` = '0' WHERE `id` = $id LIMIT 1";
mysql_query($sql) or die(mysql_error());
[/codebox]

c) Ajout après la ligne : echo "<tr><td colspan=\"3\" class=\"normal\">Nous avons trouvé <b>".mysql_num_rows($resultat)."</b> résultats pour votre recherche</td></tr>";

[codebox]// Recherche OK donc on taggue le mot a 1 pour un affichage sur le front office
$sql = "UPDATE `tag_cloud` SET `aff_front` = '1' WHERE `id` = $id LIMIT 1";
mysql_query($sql) or die(mysql_error());

Voila ça marche, merci à tous les contributeur sur le post : http://forum.peel.fr/index.php?showtopic=1170

A suivre la partie Admin.

Share this post


: post
Share on other sites

Posted · Report post

ah bravo, maintenant va falloit mettre à jour la page tag et tags_liste de admin pour lesquels j'ai tout mis avec afficheFront

Share this post


: post
Share on other sites

Posted · Report post

ah bravo, maintenant va falloit mettre à jour la page tag et tags_liste de admin pour lesquels j'ai tout mis avec afficheFront

j'ai fait la modif.

Share this post


: post
Share on other sites

Posted · Report post

Y a pas à créer les pages pour administrer les tags ?

Willy

Share this post


: post
Share on other sites

Posted · Report post

il va la mettre ... c'est le dev que j'ai fait cet apres midi.

Share this post


: post
Share on other sites

Posted · Report post

Dans le code 3)

Il faut remplacer:

echo '<a rel="nofollow" href="http://www.3dvf.fr/achat/recherche.php?motclef='.$key.'" ';
Par:
echo '<a rel="nofollow" href="'.$wwwroot .'/achat/recherche.php?motclef='.$key.'" ';

Sinon on est redirigé sur le site de 3dvf :)

Willy

Share this post


: post
Share on other sites

Posted · Report post

Dans le code 4 a) il faut mettre:

// Insertion Tag de recherche


if($motclef != ""){

$query = "SELECT COUNT(*) FROM tag_cloud WHERE tag_name = '$motclef'";

$result = mysql_query($query);

$enr = mysql_fetch_array($result);


if($enr[0] == 0 ){

$sql = "INSERT INTO `tag_cloud` (`id`, `tag_name`,`nbsearch`,`aff_front`) VALUES ('', '$motclef','0','')";

mysql_query($sql) or die(mysql_error());


}

$query = "SELECT * FROM tag_cloud WHERE tag_name = '$motclef'";

$result = mysql_query($query);

while ( $champ = mysql_fetch_array($result) )

{


$id = $champ['id'];

$nb_search = $champ['nbsearch'];

$nb_search++;

$sql = "UPDATE `tag_cloud` SET `nbsearch` = '$nb_search' WHERE `id` = $id LIMIT 1";

mysql_query($sql) or die(mysql_error());

}

}

// Fin Insertion

Sinon $id et $nb_search ne sont pas définis (soit à la première utilisation car aucune requete ne ramene ses valeurs, soit à la récupération, car il manquait les quotes dans $champ['id']).

Willy

Share this post


: post
Share on other sites

Posted · Report post

Dans le code 1) remplacer:

AUTO_INCREMENT=159
Par:
AUTO_INCREMENT=1

Willy

Share this post


: post
Share on other sites

Posted · Report post

3DVF peux tu EDITER ton post avec ces modifs? comme ca pas besoin de suivre le fil du sujet pour corriger :)

Share this post


: post
Share on other sites

Posted · Report post

3DVF peux tu EDITER ton post avec ces modifs? comme ca pas besoin de suivre le fil du sujet pour corriger :)

Tu peux les valider atila s'il te plait ou tu as déja tout mis sur ton site ?

Car vu l'heure qu'il était :)

Willy

Share this post


: post
Share on other sites

Posted · Report post

oki, je veux bien, mais plus tard dans la journée, je pars au boulot là :)

Je ne l'ai pas mis pour le moment sur mon site,

Une fois terminé, ca te dit de le transformer pour shopping avec moi, à priori, y'aura pas bcp de chose à changer !

Share this post


: post
Share on other sites

Posted · Report post

Une fois terminé, ca te dit de le transformer pour shopping avec moi, à priori, y'aura pas bcp de chose à changer !

Pas de soucis, mais il n'y aura que l'étape 4 a modifier selon la page de recherche de shopping.

a) au moment de récupérer le mot recherché

:) si pas de réponse au mot cherché

c) si une réponse au mot cherché

Willy

Share this post


: post
Share on other sites

Posted · Report post

ouaip, le reste restant le même.

Share this post


: post
Share on other sites

Posted · Report post

5) ajouter le fichier tags.php dans administrer:

<?


include("../configuration.inc.php");

necessite_identification();

necessite_priv("admin");


$DOC_TITLE = "G&eacute;rer les Tags de recherche";


include("modeles/haut.php");


switch (vb script:return confirm('&ecirc;tes-vous s&ucirc;r de vouloir supprimer ce tag ?\nAttention : d&eacute;finitif !;');" class=normal href="<?=$_SERVER['PHP_SELF']?>?mode=suppr&id=<?=$r->id ?>"><img src="images/b_drop.png" alt="supprimer" border="0"></a></td>

<td class="normal" align="center"><?=$r->id?></td>

<td class="normal" align="center"><?=$r->tag_name?></td>

<td class="normal" align="center"><?php echo $r->nbsearch;?></td>


<td class="normal" align="center">

<input type="hidden" name="id[]" value="<?php echo $r->id;?>">

<table width="100%" border="0"><tr><td class="normal" align="center">

<td class="normal" align="center"><?php echo $r->aff_front;?></td>


</td><td class="normal" width="10">

<input type="checkbox" name="change_statut<?php echo $r->id;?>">

</td></tr></table>


</td>

</tr>

<? 

$i++;} // Fin de la boucle While 


echo "<tr><td colspan=\"10\" class=\"normal\" align=\"center\">";


?>

<select name="statut" class="formulaire1">

<option value="0">non visible</option>

<option value="1">visible</option>

</select>


<?php

echo "<input type=\"submit\" value=\"modifier le statut des Tags coch&eacute;s\" class=\"bouton\"></p>";


echo "</form>";


echo "</td></tr>";



echo "<tr><td colspan=\"10\" class=\"normal\" align=\"center\">";


// Boutons pr&eacute;c&eacute;dent et suivant 

$nb=30;

if($start) {


echo("<a class=normal href=\"".$_SERVER['PHP_SELF']."?mode=".vb($_GET['mode'])."&sort=".vb($_GET['sort'])."&start=".(vn($_GET['start']) - $nb)."&order=".vb($_GET['order'])."\">page pr&eacute;c&eacute;dente</a>");


} 


$result = mysql_query($sql_count); 


$row = mysql_fetch_row($result); 


if($row[0]>($start+$nb)) 

{ 


if($start) {echo(" / ");} 


echo("<a class=normal href=\"".$_SERVER['PHP_SELF']."?mode=".vb($_GET['mode'])."&sort=".vb($_GET['sort'])."&start=".(vn($_GET['start']) + $nb)."&order=".vb($_GET['order'])."\">page suivante</a>"); 


} 


echo("<br />");




// Affichage des pages 

if($row[0]>$nb) {// le nombre d'enreg. est > au nb de lignes d'affichage ?


for($index=0;($index*$nb)<$row[0];$index++) // oui alors on affiche les num&eacute;ros de pages

{ 

?>

<a class="normal" href="<?echo $_SERVER['PHP_SELF']."?mode=".vb($_GET['mode'])."&id=".vb($_GET['id'])."&statut=".vb($_GET['statut'])."&order=".$order."&sort=".$sort."&start=".$index*$nb; ?>"><?echo $index+1; ?></a>&nbsp;

<?

} 


}


echo "</td></tr>";


} 


}?>


</table>

Voila ma contribution avec les pages précédentes et suivantes qui fonctionnent.

Willy

Share this post


: post
Share on other sites

Posted · Report post

6) ajouter le fichier tags_liste.php dans administrer/modeles:

<table border="0" cellpadding="0" cellspacing="0" width="100%">


<tr>

<td class="entete" colspan="10">Liste des Tags</td>

</tr>


<?

if ($qid) {


if (mysql_num_rows($qid) == 0) 

{

"<tr><td colspan=\"10\" class=\"normal\"><b>Aucune recherche enregistr&eacute;e dans la base.</b></td></tr>"; } 

else {

?>

<tr>

<td class="menu">Action</td>

<td class="menu" align="center">

<a href="<?=$_SERVER['PHP_SELF']?>?mode=tri&order=id&sort=desc"><img src="<?=$wwwroot?>/administrer/images/desc.gif" width="7" height="7" alt="" border="0"></a>

ID

<a href="<?=$_SERVER['PHP_SELF']?>?mode=tri&order=id&sort=asc"><img src="<?=$wwwroot?>/administrer/images/up.gif" width="7" height="7" alt="" border="0"></a>

</td>



<td class="menu" align="center">

<a href="<?=$_SERVER['PHP_SELF']?>?mode=tri&order=tag_name&sort=desc">

<img src="<?=$wwwroot?>/administrer/images/desc.gif" width="7" height="7" alt="" border="0"></a>

Recherche

<a href="<?=$_SERVER['PHP_SELF']?>?mode=tri&order=tag_name&sort=asc">

<img src="<?=$wwwroot?>/administrer/images/up.gif" width="7" height="7" alt="" border="0"></a></td>


<td class="menu" align="center">

<a href="<?=$_SERVER['PHP_SELF']?>?mode=tri&order=nbsearch&sort=desc">

<img src="<?=$wwwroot?>/administrer/images/desc.gif" width="7" height="7" alt="" border="0"></a>

Nbre de fois

<a href="<?=$_SERVER['PHP_SELF']?>?mode=tri&order=nbsearch&sort=asc">

<img src="<?=$wwwroot?>/administrer/images/up.gif" width="7" height="7" alt="" border="0"></a></td>


<td class="menu" align="center">

<a href="<?=$_SERVER['PHP_SELF']?>?mode=tri&order=aff_front&sort=desc">

<img src="<?=$wwwroot?>/administrer/images/desc.gif" width="7" height="7" alt="" border="0"></a>

Validation

<a href="<?=$_SERVER['PHP_SELF']?>?mode=tri&order=aff_front&sort=asc">

<img src="<?=$wwwroot?>/administrer/images/up.gif" width="7" height="7" alt="" border="0"></a></td>



</tr>

<form method="post" name="form_statut_lot" action="<?php echo $_SERVER['PHP_SELF']?>">

<input type="hidden" name="mode" value="maj_statut">

<input type="hidden" name="start" value="<?php echo vn($_GET['start'])?>">


<? 

$i = 0;

while ($r = mysql_fetch_object($qid)) { ?>

<tr bgcolor="<?echo ($i % 2 == 0 ? '#F4F4F4' : '#ffffff' );?>">

<td class="normal" align="center">

<a onClick="java script:return confirm('&ecirc;tes-vous s&ucirc;r de vouloir supprimer ce tag ?\nAttention : d&eacute;finitif !;');" class=normal href="<?=$_SERVER['PHP_SELF']?>?mode=suppr&id=<?=$r->id ?>"><img src="images/b_drop.png" alt="supprimer" border="0"></a></td>

<td class="normal" align="center"><?=$r->id?></td>

<td class="normal" align="center"><?=$r->tag_name?></td>

<td class="normal" align="center"><?php echo $r->nbsearch;?></td>


<td class="normal" align="center">

<input type="hidden" name="id[]" value="<?php echo $r->id;?>">

<table width="100%" border="0"><tr><td class="normal" align="center">

<td class="normal" align="center"><?php echo $r->aff_front;?></td>


</td><td class="normal" width="10">

<input type="checkbox" name="change_statut<?php echo $r->id;?>">

</td></tr></table>


</td>

</tr>

<? 

$i++;} // Fin de la boucle While 


echo "<tr><td colspan=\"10\" class=\"normal\" align=\"center\">";


?>

<select name="statut" class="formulaire1">

<option value="0">non visible</option>

<option value="1">visible</option>

</select>


<?php

echo "<input type=\"submit\" value=\"modifier le statut des Tags coch&eacute;s\" class=\"bouton\"></p>";


echo "</form>";


echo "</td></tr>";



echo "<tr><td colspan=\"10\" class=\"normal\" align=\"center\">";


// Boutons pr&eacute;c&eacute;dent et suivant 

$nb=30;

if($start) {


echo("<a class=normal href=\"".$_SERVER['PHP_SELF']."?mode=".vb($_GET['mode'])."&sort=".vb($_GET['sort'])."&start=".(vn($_GET['start']) - $nb)."&order=".vb($_GET['order'])."\">page pr&eacute;c&eacute;dente</a>");


} 


$result = mysql_query($sql_count); 


$row = mysql_fetch_row($result); 


if($row[0]>($start+$nb)) 

{ 


if($start) {echo(" / ");} 


echo("<a class=normal href=\"".$_SERVER['PHP_SELF']."?mode=".vb($_GET['mode'])."&sort=".vb($_GET['sort'])."&start=".(vn($_GET['start']) + $nb)."&order=".vb($_GET['order'])."\">page suivante</a>"); 


} 


echo("<br />");




// Affichage des pages 

if($row[0]>$nb) {// le nombre d'enreg. est > au nb de lignes d'affichage ?


for($index=0;($index*$nb)<$row[0];$index++) // oui alors on affiche les num&eacute;ros de pages

{ 

?>

<a class="normal" href="<?echo $_SERVER['PHP_SELF']."?mode=".vb($_GET['mode'])."&id=".vb($_GET['id'])."&statut=".vb($_GET['statut'])."&order=".$order."&sort=".$sort."&start=".$index*$nb; ?>"><?echo $index+1; ?></a>&nbsp;

<?

} 


}


echo "</td></tr>";


} 


}?>


</table>

Voila ma contribution avec les pages précédentes et suivantes qui fonctionnent.

Merci a atila pour tout le reste des pages, je n'ais fait que des corrections mineures + pages suivantes et précédentes.

Willy

Share this post


: post
Share on other sites

Posted · Report post

7) dans administrer/modeles/haut.php

Ajoutez:

				<div> <a tabindex="<?echo $i = $i+1;?>"  href="<?=$wwwroot?>/administrer/tags.php">Liste des tags de recherche</a></div>
Juste avant:
				<div> <a tabindex="<?echo $i = $i+1;?>"  href="<?=$wwwroot?>/administrer/proforma.php">Liste des proformas</a></div>

Ainsi dans outils de l'administrations, vous aurez acces à la page de gestion des tags :)

Willy

Share this post


: post
Share on other sites

Posted · Report post

Voila ma contribution avec les pages précédentes et suivantes qui fonctionnent.

Willy

:)

Share this post


: post
Share on other sites

Posted · Report post

Tu peux les valider atila s'il te plait ou tu as déja tout mis sur ton site ?

Car vu l'heure qu'il était :)

Willy

J'ai edité les premier post.

Share this post


: post
Share on other sites

Posted · Report post

:)

J'ai édité mon message, désolé :)

Share this post


: post
Share on other sites

Posted · Report post

:)

Share this post


: post
Share on other sites

Posted · Report post

ne manque lpsu qu'à faire un enieme topic, celui là prenant en compte l'ensemble des script propre et tout regroupé, et si possible figé :)

Share this post


: post
Share on other sites

Posted · Report post

:)

J'ais pas regardé qui a fait le code des pages, j'ai copié collé, modifié et testé.

Je pensais que c'était 3DVF et comme c'est son poste, je ne pensais pas utile de dire que c'était ces sources.

Là elles sont a toi, je les ais simplement modifiées.

Willy

Share this post


: post
Share on other sites

Posted · Report post

ne manque lpsu qu'à faire un enieme topic, celui là prenant en compte l'ensemble des script propre et tout regroupé, et si possible figé :)

Si tu peux tester de a à z et valider l'enssemble, ensuite DVF mettra à jour sont topic n°1.

Willy

Share this post


: post
Share on other sites

Posted · Report post

Je suis désolé Willy, mais là je suis en stress avec les derniers preparatifs de mon exams de demain...

Alors je suis en fantôme jusqu'à demain soir :)

Share this post


: post
Share on other sites

Posted · Report post

Pas de soucis, courage pr demain !

Willy

Share this post


: post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now

Twitter Advisto ecommerce

Facebook PEEL Shopping