3DVF

Utilisateur open source
  • Compteur de contenus

    215
  • Inscrit(e) le

  • Dernière visite


Messages posté(e)s par 3DVF


  1. 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.


  2. C'est possible que tu me post ici un petit dump avec par exemple une quarantaine de recherche?

    Voila :)

    -- phpMyAdmin SQL Dump
    -- version 2.6.2-Debian-3sarge3
    -- [url="http://www.phpmyadmin.net"]http://www.phpmyadmin.net[/url]
    --
    -- Serveur: localhost
    -- Généré le : Mercredi 06 Juin 2007 à 17:17
    -- Version du serveur: 4.1.15
    -- Version de PHP: 4.3.10-19
    --
    -- Base de données: `sitefr`
    --

    -- --------------------------------------------------------

    --
    -- 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=159 ;

    --
    -- Contenu de la table `tag_cloud`
    --

    INSERT INTO `tag_cloud` VALUES (1, 'maya', 19, 1);
    INSERT INTO `tag_cloud` VALUES (2, '3ds', 10, 1);
    INSERT INTO `tag_cloud` VALUES (3, 'photoshop', 17, 1);
    INSERT INTO `tag_cloud` VALUES (6, '3dsmax', 17, 1);
    INSERT INTO `tag_cloud` VALUES (24, 'cinema4d', 15, 1);
    INSERT INTO `tag_cloud` VALUES (8, 'cinema 4d', 11, 1);
    INSERT INTO `tag_cloud` VALUES (9, 'dosch', 15, 1);
    INSERT INTO `tag_cloud` VALUES (10, 'dosch 3d', 11, 0);
    INSERT INTO `tag_cloud` VALUES (12, 'intuos', 24, 1);
    INSERT INTO `tag_cloud` VALUES (13, 'Brazil r/s', 12, 1);
    INSERT INTO `tag_cloud` VALUES (65, 'livre', 6, 1);
    INSERT INTO `tag_cloud` VALUES (17, 'zbrush', 16, 1);
    INSERT INTO `tag_cloud` VALUES (18, 'intuos', 21, 0);
    INSERT INTO `tag_cloud` VALUES (89, 'Brazilirs', 10, 0);
    INSERT INTO `tag_cloud` VALUES (20, 'Syflex', 17, 1);
    INSERT INTO `tag_cloud` VALUES (21, 'Exposé', 17, 1);
    INSERT INTO `tag_cloud` VALUES (22, 'vegas', 15, 0);
    INSERT INTO `tag_cloud` VALUES (80, 'bryceia', 5, 0);
    INSERT INTO `tag_cloud` VALUES (27, 'gnomon', 21, 1);
    INSERT INTO `tag_cloud` VALUES (28, 'personnages', 15, 1);
    INSERT INTO `tag_cloud` VALUES (29, 'Les Ateliers 3dsmax - Vol.1', 12, 1);
    INSERT INTO `tag_cloud` VALUES (135, 'tabletteigraphique', 2, 0);
    INSERT INTO `tag_cloud` VALUES (134, 'sdsimaxiO', 1, 0);
    INSERT INTO `tag_cloud` VALUES (133, 'mangaisd', 1, 0);
    INSERT INTO `tag_cloud` VALUES (132, 'syflex0sOappart', 2, 0);
    INSERT INTO `tag_cloud` VALUES (34, 'DX Studio', 4, 1);
    INSERT INTO `tag_cloud` VALUES (131, 'MUDBOX', 2, 0);
    INSERT INTO `tag_cloud` VALUES (122, 'Exposec', 2, 0);
    INSERT INTO `tag_cloud` VALUES (123, 'sDiStudioiMax', 4, 0);
    INSERT INTO `tag_cloud` VALUES (124, 'sds', 3, 0);
    INSERT INTO `tag_cloud` VALUES (125, 'sDiMax', 2, 0);
    INSERT INTO `tag_cloud` VALUES (126, 'doschsd', 3, 0);
    INSERT INTO `tag_cloud` VALUES (127, 'sDiMaxistudio', 2, 0);
    INSERT INTO `tag_cloud` VALUES (128, 'sDSMaxistudio', 2, 0);
    INSERT INTO `tag_cloud` VALUES (129, 'Exposcccccccc', 3, 0);
    INSERT INTO `tag_cloud` VALUES (130, 'LesiAteliersisdsmaxiiVolC', 9, 0);
    INSERT INTO `tag_cloud` VALUES (121, 'adobeiproduction', 4, 0);
    INSERT INTO `tag_cloud` VALUES (120, 'adobe', 3, 1);
    INSERT INTO `tag_cloud` VALUES (119, 'sexibombe', 2, 0);
    INSERT INTO `tag_cloud` VALUES (118, 'petiteU0bite', 2, 0);
    INSERT INTO `tag_cloud` VALUES (117, 'freeform', 2, 0);
    INSERT INTO `tag_cloud` VALUES (116, 'Exposeeec', 1, 0);
    INSERT INTO `tag_cloud` VALUES (115, 'Exposeeeec', 1, 0);
    INSERT INTO `tag_cloud` VALUES (91, 'Expos', 9, 0);
    INSERT INTO `tag_cloud` VALUES (90, 'DXiStudio', 10, 0);
    INSERT INTO `tag_cloud` VALUES (78, 'dosch3d', 3, 0);
    INSERT INTO `tag_cloud` VALUES (87, 'sdsmax', 14, 0);
    INSERT INTO `tag_cloud` VALUES (88, 'cinemai4d', 8, 0);
    INSERT INTO `tag_cloud` VALUES (75, 'xsi', 8, 0);
    INSERT INTO `tag_cloud` VALUES (114, 'Exposeec', 1, 0);
    INSERT INTO `tag_cloud` VALUES (113, 'doschisd', 4, 0);
    INSERT INTO `tag_cloud` VALUES (72, 'DXStudio', 5, 0);
    INSERT INTO `tag_cloud` VALUES (109, 'ddrisdram', 1, 0);
    INSERT INTO `tag_cloud` VALUES (108, 'LesAtelierssdsmaxVolC', 4, 0);
    INSERT INTO `tag_cloud` VALUES (70, 'modo', 10, 0);
    INSERT INTO `tag_cloud` VALUES (110, 'bionatics', 3, 0);
    INSERT INTO `tag_cloud` VALUES (111, 'bite', 1, 0);
    INSERT INTO `tag_cloud` VALUES (112, 'petitebite', 1, 0);
    INSERT INTO `tag_cloud` VALUES (81, 'bryce', 6, 0);
    INSERT INTO `tag_cloud` VALUES (136, 'vray', 1, 0);
    INSERT INTO `tag_cloud` VALUES (137, 'unfold', 4, 0);
    INSERT INTO `tag_cloud` VALUES (138, 'Exposcccccccccc', 1, 0);
    INSERT INTO `tag_cloud` VALUES (139, 'Toolbar', 1, 0);
    INSERT INTO `tag_cloud` VALUES (140, 'Exposeiec', 1, 0);
    INSERT INTO `tag_cloud` VALUES (141, 'driver', 1, 0);
    INSERT INTO `tag_cloud` VALUES (142, 'Willy', 1, 0);
    INSERT INTO `tag_cloud` VALUES (143, 'manga', 1, 0);
    INSERT INTO `tag_cloud` VALUES (144, 'textures', 1, 0);
    INSERT INTO `tag_cloud` VALUES (145, 'petiteibite', 1, 0);
    INSERT INTO `tag_cloud` VALUES (146, 'UquotaaliasisketchbookiproUUquota', 2, 0);
    INSERT INTO `tag_cloud` VALUES (147, 'aliasisketchbookipro', 1, 0);
    INSERT INTO `tag_cloud` VALUES (148, 'Brazilrs', 1, 0);
    INSERT INTO `tag_cloud` VALUES (149, 'Tollbarre', 1, 0);
    INSERT INTO `tag_cloud` VALUES (150, 'dvd', 1, 0);
    INSERT INTO `tag_cloud` VALUES (151, 'gnomonichracter', 1, 0);
    INSERT INTO `tag_cloud` VALUES (152, 'gnomoniproduction', 2, 0);
    INSERT INTO `tag_cloud` VALUES (153, '', 3, 0);
    INSERT INTO `tag_cloud` VALUES (155, 'ic211', 1, 0);
    INSERT INTO `tag_cloud` VALUES (154, 'lightroom', 1, 0);
    INSERT INTO `tag_cloud` VALUES (156, 'ic 211', 1, 0);
    INSERT INTO `tag_cloud` VALUES (157, 'bamboo', 1, 0);
    INSERT INTO `tag_cloud` VALUES (158, 'wacom', 1, 0);[/codebox]


  3. Bon alors je viens de finalisé la chose de la maniére suivante :

    Dans la page de recherche.php j'insere comme avant les mots qui sont cherché, ensuite si le resultat de la recherche n'est pas bon je taggue a 0, si le résultat est positif je taggue a 1.

    Bilan le script ce gére tous seul et je garde dans la base l'intégralité des mot recherché.

    Je prépare les explications est je vous soumet cela :)


  4. du coup ta table devient

    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',
    
    `afficheFront` int(1) NOT NULL default '0',
    
    PRIMARY KEY (`id`)
    
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=55;

    Oui c'est ça, en fonction ici : www.3dvf.fr/tag.php

    Maintenant je doit faire le module admin de validation des affichages.


  5. En effet dans ce but là, il faut placer le mot cherché dans la BDD dès le clic sur le bouton chercher.

    Pour moi, si tu veux savoir ce qui manque dans ton catalogue, il faut enregistrer toutes les requetes et ensuite les analyser dans le back office.

    Le nuage c'est pour les clients, voir ce que les autres cherchent dans tes produits.

    Willy

    Oui il me reste la solution de faire une validation depuis l'admin.


  6. Bonjour,

    Serait-il possible de poster le vrai bon code une bonne fois pour toute parce qu'avec tout ces code de partout je suis perdu...

    Par avance merci

    Pour l'idée de ce que je veux faire :

    Je veux un nuage de tag, repésentatif des recherches de mes client ou futur client, afin de savoir quel produit manque a mon catalogue, quel produit est le plus intéressant a un moment donné.

    Donc la je vais appliqué la modif au niveau de la page de recherche, ce qui vas régler le probléme des insulte etc.

    Et ensuite je vous soumet le script final.

    EDIT : en relisant mon message je m'apperçois d'un gros soucis, si je place l'inscription en bdd des recherches uniquement en cas de résultat positif, je n'aurais pas une vision réelle de ce que cherche les visiteurs!!!


  7. Ca sert pour montrer ce que recherche le plus les clients,

    Par exemple il recherche plus le mot Personnage, or aucun produit ne compte personnage dans son nom... mais plutot dans description, et/ou ca sert à montrer ce que recherche les clientd.

    D'ailleurs à ce sujet, pour éviter les "entrées foireuses" pourquoi ne mettrai tu pas ton script d'insertion en base au moment ou tu affiche des résultats de la recherche si il y en a au moins un?

    Ah mes ce n'ets pas béte ce que tu dis.

    Je le fait des demùain Apres midi, le matin je suis nounou ^^


  8. ca te donne quoi comme erreur?

    Bonne question je vais faire affiché les erreurs ^^

    Warning: mysql_query(): Unable to save result set in /home/sitefr/cgshop-v2/tag.php on line 44

    Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/sitefr/cgshop-v2/tag.php on line 50

    Notice: Undefined variable: tags in /home/sitefr/cgshop-v2/tag.php on line 60

    Warning: array_values(): The argument should be an array in /home/sitefr/cgshop-v2/tag.php on line 60

    Warning: Wrong parameter count for max() in /home/sitefr/cgshop-v2/tag.php on line 60

    Notice: Undefined variable: tags in /home/sitefr/cgshop-v2/tag.php on line 61

    Warning: array_values(): The argument should be an array in /home/sitefr/cgshop-v2/tag.php on line 61

    Warning: Wrong parameter count for min() in /home/sitefr/cgshop-v2/tag.php on line 61


  9. La solution de willy fonctionne, par contre celle du dessus non.

    Donc reste maintenant a supprimé certain mots qui n'ont rien a faire dans le nuage :)

    Premier jet :

    Traitemant de la chaine
    $interdit='enfoiré|connard|merde|salaud|bite|sexe|sex|penis';
    $autre='*****';
    $key1 = preg_replace('`\b('.$interdit.')[sx]?\b`si',$autre, $key);
    // '####' par le lien de destination voulu.
    if($key1 != '*****'){
    echo '<li><a href="http://www.3dvf.fr/achat/recherche.php?motclef='.$key.'" ';
    echo ' title="'.$value.' recherche(s) sur le mot '.$key.'"';
    echo '>'.$key.'</a></li> ';
    }
    [/codebox]

    Ca fonctionne je supprime bite, mais pas petitebite!!!

    A+


  10. Bon petit etat des lieux :

    http://www.3dvf.fr/tag.php

    On a là un bon exemple de la problématique avec ce script trop ouvert :

    Certain mots sont des erreurs d'orthographe

    (ex :

    # Expos

    # Exposé <-- Celui la c'est le bon produit

    # Exposeec

    # Exposeeec

    # Exposeeeec

    )

    Les insultes (ex: bite, petitebite etc...)

    Il faut aussi limité le nombre de résultat affiché, tout en gardant l'effet nuage de tag, c'est a dire qu'il represente tous les niveaux de recherche.

    Et la j'ai besoin d'aide :)

    Merci

Twitter Advisto ecommerce

Facebook PEEL Shopping