Problème d'incrémentation [Résolu]

Signaler
Messages postés
19
Date d'inscription
samedi 28 février 2004
Statut
Membre
Dernière intervention
6 septembre 2013
-
Messages postés
19
Date d'inscription
samedi 28 février 2004
Statut
Membre
Dernière intervention
6 septembre 2013
-
Salut à tous,
J'ai un problème dans mon script mais je ne trouve pas la solution...
Pour moi tout est correct mais apparement non :)

<?php
function sondage ($titre, $question, $reponse1, $reponse2, $reponse3, $reponse4, $nb_max_votes)    {   
            // INFORMATIONS SUR LE SONDAGE            // $titre 'sondage'; // nom du fichier dans lequel est stocké les votes
            // $question = 'Comment trouvez-vous ce site ?';
            // $reponse[1] = 'Bien';
            // $reponse[2] = 'Moyen';
            // $reponse[3] = 'Mauvais';
            // $reponse[4] = 'Pitoyable';
            // $nb_max_votes = 0; // 0 si illimité
            $reponse = array($reponse1, $reponse1, $reponse2, $reponse3, $reponse4);
            // MODIFICATION DU SONDAGE
            $choix = "4";
            if (isset($_GET['vote']))
            {
               if(empty($_COOKIE['sondage'.$$titre.'']) && !isset($_COOKIE['sondage'.$$titre.''])){
                $resultats = fopen("sondage".$titre.".txt", "r+");
                $vote = $_GET['vote'];
                for ($numero = 1; $numero <= $choix; $numero ++)
                {
                    $ligne[$numero] = (int) fgets($resultats);
                    if ($numero == $vote)
                    {
                        $ligne[$numero] ++;
                    }
                    if (isset($donnees_votes))
                    {
                        $donnees_votes = $donnees_votes . "\n" . $ligne[$numero];
                        $nb_votes += $ligne[$numero]; // comptage du nombre de votes
                    }
                    else
                    {
                        $donnees_votes = $ligne[$numero];
                        $nb_votes = (int) $ligne[$numero];
                    }
                }   
                fseek ($resultats, 0);
                if($nb_votes<=$nb_max_votes OR $nb_max_votes==0)
                  fputs ($resultats, $donnees_votes);    // écriture des données
               
                fclose($resultats);
               }
            }
            // LECTURE DU SONDAGE       
            $resultats = fopen("sondage".$titre.".txt", "r");
           
            $numero = 1;
            while ($numero <= $choix)    // attribution d'un nombre pour chaque vote à l'array $resultat[]
            {
                $resultat[$numero] = fgets($resultats);
                if ($resultat[$numero] == NULL) // on remplace les lignes vides du fich txt par 0
                {
                        $resultat[$numero] = 0;
                }
            $numero ++;
            }

            $total_votes = 0; // calcul du total des votes
            foreach($resultat as $nb_resultat) $total_votes += $nb_resultat;
            if ($total_votes == 0)    // éviter la division par 0
            {
                $total_votes = 1;
            }
            $numero = 1;
            while ($numero <= $choix) // transformation du nombre de vote en pourcentages
            {
                $pourcentage[$numero] = $resultat[$numero] / $total_votes * 100;
                $numero ++;
            }
           
            $long_max_bloc = 200; // longueur maximale du curseur pour un vote en pixels

            // affichage des barres et du nombre de votes
            $numero = 1;
               if(empty($_COOKIE['sondage'.$$titre.'']) && !isset($_COOKIE['sondage'.$$titre.''])){
                           echo ('

'. $question . '

<form action="http://'.$_SERVER["HTTP_HOST"] . $_SERVER['REQUEST_URI'].'"> ');

            while ($numero <= $choix)
            {
                        if($resultat[$numero]>1){ $votess="s"; } else { $votess=""; }
                echo ('
<label>&nbsp;&nbsp; '. $reponse[$numero] .'</label>
       
&nbsp;&nbsp;

        &nbsp;&nbsp; ' . $resultat[$numero] . ' vote'.$votess.' ('.round($pourcentage[$numero]).'%)

');

//                echo ($pourcentage[$numero] . '%');
                $numero ++;
            }
                        echo ('

');

            } else {
            echo ('

[javascript:affmas(); ] &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [javascript:affmas(); '. $question . ']

<form action ="http://'.$_SERVER["HTTP_HOST"] . $_SERVER['REQUEST_URI'].'">');

                        while ($numero <= $choix)
            {
            if($resultat[$numero]>1){ $votess="s"; } else { $votess=""; }
                echo ('
<label>&nbsp;&nbsp; '. $reponse[$numero] .'</label>
       
&nbsp;&nbsp;

        &nbsp;&nbsp; ' . $resultat[$numero] . ' vote'.$votess.' ('.round($pourcentage[$numero]).'%)

');

//                echo ($pourcentage[$numero] . '%');
                $numero ++;
            }
 }
            echo ('</form>

');
            fclose($resultats);/// Par Yvan0|_|///
}
?>  

j'ai récupérer cette source sur le site puis je l'ai modifié un peu  mais le problème est que le vote n'est pas pris en charge : on  a beau voter l'incrémentaiton du vote ne se fait pas

Quelle est le problème ?

6 réponses

Messages postés
19
Date d'inscription
samedi 28 février 2004
Statut
Membre
Dernière intervention
6 septembre 2013

Merci à tous !
j'ai règler le prblème en remplaçant GET par POST et en faisant suivre les varriables qui allaient avec ^_^

:)

Code finale :

function sondage ($titre, $question, $reponse1, $reponse2, $reponse3, $reponse4, $nb_max_votes)    {    
            // INFORMATIONS SUR LE SONDAGE            // $titre 'sondage'; // nom du fichier dans lequel est stocké les votes
            // $question = 'Comment trouvez-vous ce site ?';
             $reponse[1] = $reponse1;
             $reponse[2] = $reponse2;
             $reponse[3] = $reponse3;
             $reponse[4] = $reponse4;
            // $nb_max_votes = 0; // 0 si illimité
            // MODIFICATION DU SONDAGE
            $choix = "4";
            if (isset($_POST['vote']))
            {
               if(empty($_COOKIE['sondage'.$titre.'']) && !isset($_COOKIE['sondage'.$titre.''])){
                $resultats = fopen("sondage".$titre.".txt", "r+") or die('Erreur d\'ouverture de fichier');
                $vote = $_POST['vote'];
                for ($numero = 1; $numero <= $choix; $numero ++)
                {
                    $ligne[$numero] = (int) fgets($resultats);
                    if ($numero == $vote)
                    {
                        $ligne[$numero] ++;
                    }
                    if (isset($donnees_votes))
                    {
                        $donnees_votes = $donnees_votes . "\n" . $ligne[$numero];
                        $nb_votes += $ligne[$numero]; // comptage du nombre de votes
                    }
                    else
                    {
                        $donnees_votes = $ligne[$numero];
                        $nb_votes = (int) $ligne[$numero];
                    }
                }    
                fseek ($resultats, 0);
                if($nb_votes<=$nb_max_votes OR $nb_max_votes==0)
                  fputs ($resultats, $donnees_votes);    // écriture des données

                fclose($resultats);
               }
            }
            // LECTURE DU SONDAGE        
            $resultats = fopen("sondage".$titre.".txt", "r") or die('Erreur d\'ouverture de fichier');
            
            $numero = 1;
            while ($numero <= $choix)    // attribution d'un nombre pour chaque vote à l'array $resultat[]
            {
                $resultat[$numero] = fgets($resultats);
                if ($resultat[$numero] == NULL) // on remplace les lignes vides du fich txt par 0
                {
                        $resultat[$numero] = 0;
                }
            $numero ++;
            }

            $total_votes = 0; // calcul du total des votes
            foreach($resultat as $nb_resultat) $total_votes += $nb_resultat;
            if ($total_votes == 0)    // éviter la division par 0
            {
                $total_votes = 1;
            }
            $numero = 1;
            while ($numero <= $choix) // transformation du nombre de vote en pourcentages
            {
                $pourcentage[$numero] = $resultat[$numero] / $total_votes * 100;
                $numero ++;
            }
            
            $long_max_bloc = 200; // longueur maximale du curseur pour un vote en pixels

            // affichage des barres et du nombre de votes
            $numero = 1;
               if(empty($_COOKIE['sondage'.$titre.'']) && !isset($_COOKIE['sondage'.$titre.''])){
                           echo ('

'. $question . '

<form action="http://'.$_SERVER["HTTP_HOST"] . $_SERVER['REQUEST_URI'].'"  method="POST"> ');

            while ($numero <= $choix)
            {
                        if($resultat[$numero]>1){ $votess="s"; } else { $votess=""; }
                echo ('
<label>&nbsp;&nbsp; '. $reponse[$numero] .'</label>
       
&nbsp;&nbsp;

        &nbsp;&nbsp; ' . $resultat[$numero] . ' vote'.$votess.' ('.round($pourcentage[$numero]).'%)

');

//                echo ($pourcentage[$numero] . '%');
                $numero ++;
            }
                        echo ('

');

            } else {
            echo ('

[javascript:affmas(); ] &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [javascript:affmas(); '. $question . ']

<form action ="http://'.$_SERVER["HTTP_HOST"] . $_SERVER['REQUEST_URI'].'">');

                        while ($numero <= $choix)
            {
            if($resultat[$numero]>1){ $votess="s"; } else { $votess=""; }
                echo ('
<label>&nbsp;&nbsp; '. $reponse[$numero] .'</label>
       
&nbsp;&nbsp;

        &nbsp;&nbsp; ' . $resultat[$numero] . ' vote'.$votess.' ('.round($pourcentage[$numero]).'%)

');

//                echo ($pourcentage[$numero] . '%');
                $numero ++;
            }
 }
            echo ('</form>

');
            fclose($resultats);/// Par Yvan0|_|///
}
Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
39
salut

ce script n'est pas bien code...
pourquoi ? parce-que tu ne verifies rien... exemple :
            $resultats = fopen("sondage".$titre.".txt", "r");
ici, le fichier peut-etre en lecture seule, et la, bah rien ne marche et tu ne sauras pas pourquoi....

met ton error_reporting a E_ALL et fait des fopen(..., ...) or die('erreur d\'ouverture de ficheir');
Messages postés
19
Date d'inscription
samedi 28 février 2004
Statut
Membre
Dernière intervention
6 septembre 2013

Salut coucou747 !

j'ai vérifier en remplaçant les variable via les données brut, l'incrémentation du vote ne se fait toujours pas correctement.
Mais en testant sur une page vierge, ça marche très bien !
Je ne comprends donc pas pourquoi ça ne marche pas :|
Où se siturai mon problème ?!

D'avance merci !
Messages postés
72
Date d'inscription
vendredi 14 mai 2004
Statut
Membre
Dernière intervention
5 février 2010

Salut$reponse array($reponse1, $reponse1, $reponse2, $reponse3, $reponse4);> $reponse1 est en double...c'est normal ?
Comme c'est un peu bazard, je vais essayer de récupérer ton code et de le 'nettoyer' pour voir..
Je te tiendrai au courant
++

Heureux l'étudiant qui comme la rivière arrive a suivre son cours sans sortir de son lit...
Messages postés
19
Date d'inscription
samedi 28 février 2004
Statut
Membre
Dernière intervention
6 septembre 2013

Salut,

Oui c'est normal car le premier $reponse1 correspond  à response[0] et le second à reponse[1]
reponse[0] n'est pas utilisé ici :D
Ouais je sais que j'aurais pu tout simplement mettre $reponse[1] = $reponse1; [...] mais je n'y ai pas penser sur le coup ^^
Merci :D
Messages postés
19
Date d'inscription
samedi 28 février 2004
Statut
Membre
Dernière intervention
6 septembre 2013

Personne n'a de solutions ?!
Up !