IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

[Tableaux] Nuage de tags : limitations et tailles


Sujet :

Langage PHP

  1. #1
    Membre régulier Avatar de micatmidog
    Profil pro
    Inscrit en
    Février 2004
    Messages
    94
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Février 2004
    Messages : 94
    Points : 71
    Points
    71
    Par défaut [Tableaux] Nuage de tags : limitations et tailles
    Bonjour à tous,

    J'utilise ce code pour afficher les 10 mots les plus pertinents d'une table dans ma base de données :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    <?php
    // Fonction getTags
    function getTags($minFont, $maxFont) {
    	$tags  = array();
    	$cloud = array();
     
    	// Récupérer les tags de la BDD
    	$query = mysql_query("SELECT q FROM requetes WHERE rub='all' ORDER BY q ASC");
     
    	while($t = mysql_fetch_array($query)) {
    		$db = explode(', ', $t[0]);
     
        	while(list($key, $value) = each($db)){
           		$tags[$value] += 1;
        	}
    	}
     
    	// Récupérer le nombre de tags
    	$min = @min(array_values($tags));
    	$max = @max(array_values($tags));
    	$fix = ($max - $min == 0) ? 1 : $max - $min;
     
    	// Afficher le nuage
    	foreach ($tags as $tag => $count) {
                    // Sélection des éléments les plus pertinents
    		if($count > array_sum(array_values($tags))/count(array_values($tags)))
    		{
                            // CALCUL DE LA TAILLE
    			$size = $minFont + ($count - $min) * ($maxFont - $minFont) / $fix;
    			$cloud[] = '<a style="font-size: '. floor($size) .'px" class="cloud" href="http://www.sycarox.com/all/cheat/'. $tag .'">'. $tag .'</a>';
    			$cloud_tag[] = $tag;
    			$cloud_count[] = $count;
    		}
    	}
     
    // Limitation aux 10 éléments les plus pertinents
    $n=min(10, count($cloud));
    	for ($i=0;$i<$n;$i++) {
     
    		$cloud2[$i]=$cloud[$i];
    		$cloud2_tag[$i]=$cloud_tag[$i];
    		$cloud2_count[$i]=$cloud_count[$i];
    	}
    	array_multisort($cloud_tag, SORT_ASC, $cloud_count, SORT_DESC, $cloud, SORT_ASC);
    	$shown = join("\n", $cloud2) . "\n";
    	echo $shown;
     
    } ?>
    J'aimerais en fait que le calcul de la taille des tags se fasse après la sélection des 10 tags les plus pertinents.

    Visualisation avec la limitation : http://www.sycarox.com/
    Visualisation sans la limitation : http://www.sycarox.com/pc/

    Avez-vous une petite idée pour m'aider ?
    Merci d'avance.

  2. #2
    Membre averti Avatar de max44410
    Étudiant
    Inscrit en
    Juin 2003
    Messages
    426
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2003
    Messages : 426
    Points : 301
    Points
    301
    Par défaut
    la selection de tes 10 tags se fait en fonction de leur taille ?? non ??

    je ne vois pas comment tu peux faire la selection de tes tags si tu ne calcul pas la tailles de ceux-ci.

    la soltution serai de stocker la taille directement dans un champ de la bdd.

  3. #3
    Membre confirmé Avatar de stunti
    Inscrit en
    Mai 2006
    Messages
    520
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Mai 2006
    Messages : 520
    Points : 594
    Points
    594
    Par défaut
    tu as un exemple de ta table de tag ?
    si tu as un tag par tuple (ce qui semble logique avec une cle primaire utilise dans les autres tables en cle etrangere), il suffit juste de modifier ta requete.
    If it's not broken, don't fix it.
    BiliBa Built on top of Zend Framework

  4. #4
    Membre régulier Avatar de micatmidog
    Profil pro
    Inscrit en
    Février 2004
    Messages
    94
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Février 2004
    Messages : 94
    Points : 71
    Points
    71
    Par défaut
    Oui, les tailles je les définies dans l'appel de la fonction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <?php getTags(10, 30); ?>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    getTags($minFont, $maxFont)
    Je suppose que le calcul de la taille pour chaque tag s'éffectue ici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $size = $minFont + ($count - $min) * ($maxFont - $minFont) / $fix;

Discussions similaires

  1. [MySQL] Limiter la taille du texte a l'affichage
    Par leloup84 dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 22/03/2006, 11h08
  2. Limiter la taille d'une ou plusieurs bases de données
    Par Thierry8 dans le forum Administration
    Réponses: 7
    Dernier message: 12/03/2006, 23h51
  3. Feuille de style, faut-il limiter leurs tailles?
    Par Death83 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 17
    Dernier message: 30/01/2006, 07h05
  4. [ Eclipse2.1 ][ Plugin ] limiter la taille des boutons
    Par whilecoyote dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 03/11/2005, 16h08
  5. [Tomcat][Jsp][Upload]Limiter la taille d'un upload...
    Par Titom dans le forum Servlets/JSP
    Réponses: 4
    Dernier message: 23/05/2005, 15h33

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo