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 :

Calculs suite à sondage


Sujet :

Langage PHP

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 4
    Points : 2
    Points
    2
    Par défaut Calculs suite à sondage
    bonjour
    Après avoir répondu à une dizaine de questions, l'internaute est redirigé sur sa page de résultats :

    sous forme de tableau
    Q1 Q2 Q3 Q4 Q5 Q6 Q7 Q8 Q9 Q10
    A B B B C A B A C B



    Jusque la tout va bien mais j'aimerai ressortir ce type de phrase "vous avez une majorité de A"

    Mais je ne vois pas comment le faire.

    Merci bcp de votre aide.

    Nemaus

  2. #2
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 275
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 275
    Points : 8 580
    Points
    8 580
    Billets dans le blog
    17
    Par défaut
    A priori il suffit juste de faire un comptage de chq élément de réponse et de déterminer celui apparaîssant le plus souvent avec max( ) http://fr.php.net/max

  3. #3
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 275
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 275
    Points : 8 580
    Points
    8 580
    Billets dans le blog
    17
    Par défaut
    array_count_values( ) + arsort( ) peuvent t'éviter de faire toi-même le comptage
    http://fr.php.net/array-count-values
    http://fr.php.net/arsort

  4. #4
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 472
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 472
    Points : 5 837
    Points
    5 837
    Billets dans le blog
    1
    Par défaut
    C'est dommage, je comptais apprendre qq chose en PHP, mais autant le lien pour "array-count-values" marche, autant l'autre ne donne rien.

  5. #5
    FoxLeRenard
    Invité(e)
    Par défaut
    Citation Envoyé par laurentSc Voir le message
    C'est dommage, je comptais apprendre qq chose en PHP, mais autant le lien pour "array-count-values" marche, autant l'autre ne donne rien.
    Bonjour,
    en effet SEB n'aurais du te proposer que le premier lien, car a mon sens il colle 100% a ta question de départ, puisqu'il te donne directement le nombre d' ocurences de chaque lettre !

    avec ça tu n'a plus qu'a afficher ta réponse

    Content que tu ais appris cette fonction "array-count-values" et pour tout te dire je la découvre également.

    Ce serait intéressant de voir ton code de saisie de ton enquéte, la on pourrait t'aider sur un autre point.

  6. #6
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 472
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 472
    Points : 5 837
    Points
    5 837
    Billets dans le blog
    1
    Par défaut
    Effectivement ; tu as raison : la fonction "array-count-values" fait tout ce dont on a besoin. Par contre, je ne suis pas l'auteur de l'enquête ; je regardais juste ce post par curiosité. Je laisse nemaus répondre.

  7. #7
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 275
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 275
    Points : 8 580
    Points
    8 580
    Billets dans le blog
    17
    Par défaut
    arsort( ) est utile pour placer en 1er le type de réponses le plus sollicité, sinon faudrait boucler.

  8. #8
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 472
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 472
    Points : 5 837
    Points
    5 837
    Billets dans le blog
    1
    Par défaut
    OK, ça fait un tri (comme son nom l'indique), mais sinon, pas besoin de boucle, un max ferait l'affaire...

  9. #9
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 275
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 275
    Points : 8 580
    Points
    8 580
    Billets dans le blog
    17
    Par défaut
    OK, ça fait un tri (comme son nom l'indique), mais sinon, pas besoin de boucle, un max ferait l'affaire...
    Ben non, parcequ'avec max( ) tu perds le couple "type de question" => "nbre de réponses".
    Ou alors il faudrait faire max( ) + array_search( ), ce qui complique un peu les choses si on veut gérer les 1ers ex-aequo.

  10. #10
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Bonjour tout le monde, et merci pour vos réponses.

    Effectivement j'ai bien le calcul des réponses avec la fonction array_count_values.

    J'obtiens le résultat suivant :

    Array ( B => 6 A=> 3 D => 1 )
    Nombre maximum 6


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <?php
    $array = array($var1, $var2, $var3, $var4, $var5, $var6, $var7, $var8, $var9, $var10);
    print_r(array_count_values($array));
    ?>
     
    <br />
    Nombre maximum : <?php
    $max = array_count_values($array);
    echo max($max);
    ?>
    Par contre je n'arrive pas à faire ressortir que c'est la lettre B, lol, qui a obtenu le plus de réponses, je n'ai que sa valeur.

    En tout cas un grand merci pour votre aide.

    Nemaus

  11. #11
    FoxLeRenard
    Invité(e)
    Par défaut
    Citation Envoyé par Séb. Voir le message
    Ben non, parcequ'avec max( ) tu perds le couple "type de question" => "nbre de réponses".
    Ou alors il faudrait faire max( ) + array_search( ), ce qui complique un peu les choses si on veut gérer les 1ers ex-aequo.
    Oh que oui !! bien vu l'Ami

  12. #12
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 275
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 275
    Points : 8 580
    Points
    8 580
    Billets dans le blog
    17
    Par défaut
    Citation Envoyé par nemaus Voir le message
    Par contre je n'arrive pas à faire ressortir que c'est la lettre B, lol, qui a obtenu le plus de réponses, je n'ai que sa valeur.
    D'où l'intérêt du arsort( ) qui te mettra en 1er le couple type => nbre ayant le nbre le plus élevé.
    Ensuite pour récupérer les valeurs c'est de la manip de tableau classique : key( ) et current( ) te seront utiles
    http://fr.php.net/key
    http://fr.php.net/current

  13. #13
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Bonjour Seb,

    Suite à ta réponse j'ai fait quelques tests.

    Maintenant j'affiche ceci :
    q1 q2 q3 q4 q5 q6 q7 q8 q9 q10
    B B A A B B A D B B
    Array ( [B] => 6 [A] => 3 [D] => 1 )
    Nombre maximum : 6
    qestion8 = D qestion9 = B qestion10 = B qestion6 = B qestion5 = B qestion1 = B qestion2 = B qestion3 = A qestion4 = A qestion7 = A


    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
    <?php
    $array1 = array($var1, $var2, $var3, $var4, $var5, $var6, $var7, $var8, $var9, $var10);
    print_r(array_count_values($array1));
    ?>
    <br />
    Nombre maximum : <?php
    $max = array_count_values($array1);
    echo max($max);
    ?>
    <br />
    <?php
    $calcul = array("qestion1" => $var1, "qestion2" => $var2, "qestion3" => $var3, "qestion4" => $var4, "qestion5" => $var5, "qestion6" => $var6, "qestion7" => $var7, "qestion8" =>$var8, "qestion9" => $var9, "qestion10" => $var10);
    arsort($calcul);
    foreach ($calcul as $key => $val) {
        echo "$key = $val\n";
    }
    ?><br />
    <?php
    $array = array_count_values($array1);
    while ($test_name = current($array)) {
        if ($test_name == "$max") {
            echo key($array).'<br />';
        }
        next($array);
    }
    ?>
    Pour cette dernière je n'affiche rien ce qui me semble normal puisque j'ai bidouillé. Finalement je ne veux afficher que la lettre B (qui a obtenu 6 réponses). Franchement je ne vois pas.

    Merci

    Nemaus

  14. #14
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 275
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 275
    Points : 8 580
    Points
    8 580
    Billets dans le blog
    17
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $data = array($var1, $var2, $var3, $var4, $var5,
                  $var6, $var7, $var8, $var9, $var10);
    $counts = array_count_values($data) ;
    arsort($counts) ; // On met le type ayant le plus de réponses en 1er
    echo 'La question de type ', key($counts), 
         ' a reçu ', current($counts), ' réponses' ;

  15. #15
    FoxLeRenard
    Invité(e)
    Par défaut
    Citation Envoyé par nemaus Voir le message
    Bonjour
    Salut, soit sympa, mets tes codes dans des balises CODE /CODE avec le bouton # de l'éditeur
    Merci (tu peux rééditer ton ancien message bien sur nous on peut pas ...)

  16. #16
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Bonjour Seb, dejà un grand merci, oulalalala quand je vois ton code effectivement cela semble bien simple.
    Effectivement cela marche très bien.

    ENCORE MERCI POUR TON AIDE.

    Nemaus

  17. #17
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 275
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 275
    Points : 8 580
    Points
    8 580
    Billets dans le blog
    17
    Par défaut
    Yep, keep it simple (c)

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

Discussions similaires

  1. Calcul du sondage
    Par sybe30 dans le forum Eclipse
    Réponses: 2
    Dernier message: 06/01/2010, 15h10
  2. Réponses: 2
    Dernier message: 27/11/2007, 11h42
  3. [Débutant] Calcul de l'écart-type (suite)
    Par Emilie MARQUOIS-OGEZ dans le forum Langage
    Réponses: 5
    Dernier message: 24/10/2007, 18h19
  4. calcul d'un terme general d'une suite
    Par s-ehtp dans le forum Algorithmes et structures de données
    Réponses: 14
    Dernier message: 14/10/2007, 01h17
  5. Réponses: 12
    Dernier message: 26/08/2006, 12h29

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