Bonjour à tous,
Je suis confronté à un problème pour moi insolvable et même étrange...

Je suis en train de créer un sondage sur mon site.
J'ai donc créer une page index.php qui affiche la question et les réponses, et une page resultat.php qui affiche les résultats.
J'ai également deux bases de donnée sql.

Voici mon problème :
1/ Si j'écris echo '<form action = "index.php" method = "post">'; ma base de donnée enregistre un nouveau vote, mais la page "resultat.php" n'apparait pas (avec les nouveaux pourcentages), et de plus, j'ai un probleme de connexion qui s'affiche.
2/ Si j'écris echo '<form action = "resultat.php" method = "post">'; ma base de donnée n'enregistre pas un nouveau vote, mais la page "resultat.php" apparait sans prendre en compte le nouveau vote dans les %, mais affiche les précédents votes.

Voici mes pages index.php et resultat.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
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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
<?php
// on teste si formulaire de vote a été validé
if (isset($_POST['go']) && $_POST['go']=='Vote') {
                if (!isset($_POST['choix']) || !isset($_POST['sondage_en_cours'])) {
                               $erreur = 'Aucune réponse n\'a été choisie.';
                }
                // on teste si le visiteur a bien choisi une réponse avant d'avoir clické sur "Vote". On teste aussi si la variable $_POST['sondage_en_cours'] n'est pas vide
                if (empty($_POST['choix']) || empty($_POST['sondage_en_cours'])) {
                               $erreur = 'Au moins un des champs est vide.';
                }
                else {
                               // là le visiteur à choisi une réponse
                               // on se connecte à notre base
$hostname_cnxsitephp = "localhost";
$username_cnxsitephp = "root";
$database_cnxsitephp = "forum";
$password_cnxsitephp = "";
$link = mysql_pconnect($hostname_cnxsitephp, $username_cnxsitephp, $password_cnxsitephp) or die("erreur de connexion au serveur");
mysql_select_db($database_cnxsitephp) or die("erreur de connexion a la base de donnees");
 
                               // on prépare notre requête : on ajoute un vote pour la réponse choisie par le votant
                               $sql ='UPDATE sondage_reponses SET nb_reponses = nb_reponses + 1 WHERE id_sondage="'.$_POST['sondage_en_cours'].'" AND id="'.$_POST['choix'].'"';
 
                               // on lance la requête
                               mysql_query ($sql) or die ('Erreur SQL !'.$sql2.'<br />'.mysql_error());
 
                               // on ferme la connexion à la base de donnée
                               mysql_close ();
 
                               $erreur = 'Merci d\'avoir voté :)';
                }
}
?>
 
<html>
<head>
<title>Index de notre sondage :)</title>
</head>
 
<body>
<?php     
$hostname_cnxsitephp = "localhost";
$username_cnxsitephp = "root";
$database_cnxsitephp = "forum";
$password_cnxsitephp = "";
$link = mysql_pconnect($hostname_cnxsitephp, $username_cnxsitephp, $password_cnxsitephp) or die("erreur de connexion au serveur");
mysql_select_db($database_cnxsitephp) or die("erreur de connexion a la base de donnees");
// on prépare une requête pour sélectionner l'id et la question du dernier sondage (on sélectionne les questions, et on en prend qu'une (le LIMIT 0,1) et ce, dans un ordre décroissent (DESC), soit en fait, la dernière question posée).
$sql = 'SELECT id, question FROM sondage_questions ORDER BY id DESC LIMIT 0,1';
 
// on lance la requête
$req = mysql_query ($sql) or die ('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
 
// on récupère le résultat dans un tableau associatif
$data = mysql_fetch_array ($req);
 
$nb_sondage = mysql_num_rows($req);
 
if ($nb_sondage == 0) {
                echo 'Aucun sondage.';
}
else {
 
                // on affiche la question
                echo stripslashes(htmlentities(trim($data['question']))),'<br />';
 
                // on prepare l'affichage de notre formulaire permettant de voter
                echo '<form action = "index.php" method = "post">';
 
 
                // on prépare une requête permettant de sélectionner les réponses possibles se rapportant à ce même sondage
 
                $sql = 'SELECT id, reponse 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 afficher les différents choix possibles de réponses
                while ($donnees = mysql_fetch_array($req)) {
                               // on affiche des boutons radio pour les différents choix de réponses possibles
                               echo '<input type="radio" name="choix" value="' , $donnees['id'] , '"> ' , stripslashes(htmlentities(trim($donnees['reponse']))) , '<br />';
                }
                ?>
                <input type = "hidden" name = "sondage_en_cours" value = "<?php echo $data['id']; ?>">
                <input type = "submit" name="go" value = "Vote">
                </form>
                <?php
}
 
// on libère l'espace mémoire alloué à cette requête
mysql_free_result ($req);
 
?>
<a href="resultat.php">Voir les résultats</a>
<?php
// on affiche les erreurs éventuelles
if (isset($erreur)) echo '<br /><br />',$erreur;
?>
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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
<html>
<head>
<title>Résultats des votes</title>
</head>
 
<body>
<?php
// Déclaration des paramètres de connexion
$hostname_cnxsitephp = "localhost";
$username_cnxsitephp = "root";
$database_cnxsitephp = "forum";
$password_cnxsitephp = "";
// on se connecte à notre base de données
$link = mysql_pconnect($hostname_cnxsitephp, $username_cnxsitephp, $password_cnxsitephp) or die("erreur de connexion au serveur");
mysql_select_db($database_cnxsitephp) or die("erreur de connexion a la base de donnees");
// on selectionne la question et l'id du sondage en cours
$sql = 'SELECT id, question FROM sondage_questions ORDER BY id DESC LIMIT 0,1';
 
// on lance la requête
$req = mysql_query ($sql) or die ('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
 
// on récupère le résultat dans un tableau associatif
$data = mysql_fetch_array ($req);
 
// on libère l'espace mémoire alloué à cette requête
 
$nb_sondage = mysql_num_rows($req);
mysql_free_result ($req);
 
if ($nb_sondage == 0) {
                echo 'Aucun sondage.';
}
else {
 
                // on affiche la question
                echo stripslashes(htmlentities(trim($data['question']))),'<br />';
 
                // 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 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 pour linstant';
                }
                else {
                               // cas où quelqu'un a déjà voté
                               for ($i = 0; $i < $nb_reponses_du_sondage; $i++) {
                                               // on affiche une réponse
                                               echo $tableau_reponses[$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 le pourcentage
                                               echo ' ',$pourcentage,' %<br />';
                               }
 
                               // on affiche le nombre total de votes
                               echo '<br /><br />Nombre de votes : ', $nb_total_reponse;
                }
}
?>
</body>
</html>