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 :

Afficher pourcentages par ordre décroissant


Sujet :

Langage PHP

  1. #1
    Invité
    Invité(e)
    Par défaut Afficher pourcentages par ordre décroissant
    Bonjour, je suis nouveau dans le merveilleux monde du PHP, si quelqu'un pouvait m'aider, je voudrais savoir comment afficher mes résultats de sondage en ordre décroissant à partir de ce code:

    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
    49
    50
    51
    52
     
    // on déclare un tableau qui contiendra les réponses de notre sondage
    	$tableau_reponses = array();
     
    	// on déclare un tableau qui contiendra le nombre de réponse à chaque question
    	$tableau_nb_reponses = array();
     
    	// on selectionne les reponses de ce sondage
    	$sql = 'SELECT reponse, nb_reponses FROM sondage_reponses WHERE id_sondage="'.$data['id'].'"';
     
    	// on lance la requête
    	$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
     
    	// on prépare notre boucle pour récupérer les différents choix possibles de réponses
    	while ($data = mysql_fetch_array($req)) {
    	// on place ces valeurs dans nos deux tableaux
    	$tableau_reponses[] = $data['reponse'];
    	$tableau_nb_reponses[] = $data['nb_reponses'];
    	}
    	// on libère l'espace mémoire alloué à cette requête
    	mysql_free_result ($req);
     
    	// on ferme la connection à notre base de données
    	mysql_close ();
     
    	// on compte le nombre de réponses possible de notre sondage
    	$nb_reponses_du_sondage = count ($tableau_reponses);
     
    	// on compte le nombre total de réponses pour ce sondage
    	$nb_total_reponse = array_sum ($tableau_nb_reponses);
     
    	// on teste le nombre de vote
    	if ($nb_total_reponse == 0) {
    	// cas où personne n'a voté
    	echo 'Aucun vote';
    	}
    	else {
    	// cas où quelqu'un a déjà voté
    	for ($i = 0; $i < $nb_reponses_du_sondage; $i++) {
     
    		// on calcul le pourcentage de cette réponse
    		$pourcentage = ($tableau_nb_reponses[$i] * 100) / $nb_total_reponse;
     
    		// on arrondi ce calcul à un chiffre après la virgule
    		$pourcentage = round ($pourcentage, 1);
     
    		// on affiche une réponse
    		echo $tableau_reponses[$i];
     
    		// on affiche le pourcentage
    		echo ' ',$pourcentage,' % ';
    	}

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    en ordre décroissant de ... ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $sql = 'SELECT reponse, nb_reponses FROM sondage_reponses WHERE id_sondage="'.$data['id'].'"
    ORDER BY nb_reponses DESC';
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Invité
    Invité(e)
    Par défaut
    Par ordre décroissant de pourcentage dsl j'ai oublié de préciser

  4. #4
    Invité
    Invité(e)
    Par défaut
    Merci sabotage! finalement ta réponse me convient parfaitement, c'est ce que je cherchais

  5. #5
    Membre habitué
    Homme Profil pro
    Inscrit en
    Juillet 2010
    Messages
    96
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 96
    Points : 140
    Points
    140
    Par défaut
    Salut voici une requete qui devrait marcher je crois...

    J'ai mi la logique de calculer le pourcentage a l'interieur, ca va alleger ta logique dans ton php.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $sql = 'SELECT ceil(nb_reponses/ (SELECT sum( nb_reponses )  FROM sondage_reponses) * 100) as percent FROM `sondage_reponses` WHERE id_sondage =' . $data['id'] . '  order by percent desc';

  6. #6
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Je te montre comment faire simplement en PHP :

    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
    while ($data = mysql_fetch_array($req)) {
            $result[$data['reponse']] = $data['nb_reponses'];
    }
     
            if (!$result) {
                  echo 'Aucun vote';
            }
            else {
                  rsort($result);
    	      $nb_total_reponses = array_sum ($result);
                  foreach ($result as $reponse=>$value) {
                          $pourcentage = round($value  * 100 / $nb_total_reponses, 1);
                           echo $reponse . ' : ' . $pourcentage . '%';
    	       }
            }
    Ou alors directement dans la requête comme l'a montré Nault
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  7. #7
    Membre habitué
    Homme Profil pro
    Inscrit en
    Juillet 2010
    Messages
    96
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 96
    Points : 140
    Points
    140
    Par défaut
    Peut-etre que jai mal compris l'organisation de la table aussi

    moi jai vu ca :

    Table:

    reponse | nombre
    ---------------------------
    zend1 | 10
    ---------------------------
    zend2 | 30
    ---------------------------
    sym.. | 100
    ---------------------------
    code... | 5


    pour le code il ne fait que incrementer la reponse au kel le mode vote.

    d'ou :

    NOMBRE_DE_VOTE_POUR_CETTE_REPONSE / NOMBRE_TOTAL_POUR TOUS * 100

  8. #8
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Non, non c'était bon.
    C'est moi qui me suis mélangé entre les variables, j'ai corrigé mon message depuis.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  9. #9
    Membre habitué
    Homme Profil pro
    Inscrit en
    Juillet 2010
    Messages
    96
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 96
    Points : 140
    Points
    140
    Par défaut
    Fiou, j'etais encore en train de tout refaire et douter...

    tu ma fait peur hehe!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [MySQL] Afficher date par ordre croissant ou décroissant
    Par christophe_s46 dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 13/09/2009, 20h29
  2. [MySQL] Afficher les résultats de recherche par ordre décroissant
    Par hadjiphp dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 14/06/2009, 20h24
  3. Afficher par ordre décroissant
    Par hadjiphp dans le forum Langage
    Réponses: 1
    Dernier message: 12/05/2009, 01h09
  4. [MySQL] Affichage des dates par ordre décroissant
    Par ash_rmy dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 25/03/2007, 13h01
  5. Trier les données dans 1 tableau par ordre décroissant
    Par Blunet dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 23/11/2005, 09h56

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