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

PHP & Base de données Discussion :

Problème création sondage


Sujet :

PHP & Base de données

  1. #1
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Août 2009
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2009
    Messages : 68
    Par défaut Problème création sondage
    Bonjour, je voudrais créer un sondage dont les questions et les réponses sont stockées sur ma base de données...comme ça, dans ma table réponse j'ai un nb_rep qui s'incrémente à chaque réponse posté...

    Le problème c'est que j'ai un problème ( ^^ lol ) pour l'affichage de tout ça...

    Logiquement, je pense faire ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    boucle pour les questions
    {
         boucle pour les réponses
         {
             mise en forme pour les réponses (bouton radio)
          }
    }
    et voilà mon code...je pense qu'il est loin d'être "propre" ou autre, ça va faire longtemps que je n'ai pas fais de php

    J'ai remplacé mes login et autres par des "blablablablabla" car je sais que de tte façon ça ne viens pas là...
    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
    
    <?php
    
    mysql_connect("blablablablabla"); // Connexion à la base de données
    mysql_select_db("blabla"); // Sélection de la table
    
    
    $reponse = mysql_query("SELECT * FROM sondage_questions") or die(mysql_error());
    
    while($donnes = mysql_fetch_array($reponse))
    {
    ?>
    	<p>
    	<strong>Question n°</strong><?php echo $donnees['id']; ?> - <?php echo $donnees['question']; echo "<br />"?>
    	<?php
    		
    		$sql = 'SELECT id, reponse FROM sondage_reponses WHERE id_sondage="'.$donnees['id'].'"';
    		while($rep = mysql_fetch_array($sql))
    		{		
    			echo '<input type="radio" name="choix" value="' , $donnees['id'] , '"> ' , stripslashes(htmlentities(trim($donnees2['reponse']))) , '<br />';
    		}
    	?></p>
    <?php	
    }
    ?>
    <input type = "hidden" name = "sondage_en_cours" value = "<?php echo $data['id']; ?>">
    	<input type = "submit" name="go" value = "Vote">
    	</form>
       </p>
    <?php
    
    
    
    
    mysql_close();
    ?>

    Puis quand je test tout ça, sur mon serveur, bah...on m'indique une erreur au niveau de la boucle while($rep = mysql_fetch_array($sql)) (que j'ai mis en gras dans le code !!) !!

    Je ne comprend pas pourquoi, est-ce ma concaténation ou ma requête sql qui ne va pas...???


    si quelqu'un peut m'aider...merci

  2. #2
    jnore
    Invité(e)
    Par défaut
    Salut,

    Une erreur aurait été la bienvenue !

    Ceci dit, j'aurais fait quelques modif :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    $sql = "SELECT id, reponse FROM sondage_reponses WHERE id_sondage='".$donnees['id']."'";
    $res=mysql_query($sql);
    		while($rep = mysql_fetch_array($res))
    		{		
    			echo '<input type="radio" name="choix" value="' , $donnees['id'] , '"> ' , stripslashes(htmlentities(trim($donnees2['reponse']))) , '<br />';
    		}

  3. #3
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Août 2009
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2009
    Messages : 68
    Par défaut
    bah merci je vais voir si ça corrige mon problème ^^' je l'espère car je ne vois pas pourquoi il ne prenait pas la boucle en gras

  4. #4
    Membre Expert Avatar de nosferapti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    1 157
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 1 157
    Par défaut
    Citation Envoyé par Yopii Voir le message
    bah merci je vais voir si ça corrige mon problème ^^' je l'espère car je ne vois pas pourquoi il ne prenait pas la boucle en gras
    tu remarqueras que jnore a ajouté une ligne entre la construction de la requête et la boucle "while"

  5. #5
    jnore
    Invité(e)
    Par défaut
    Ce qui est étrange aussi, c'est que tu scrutes ta boucle mais que tu n'en extraie aucune données !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    while($rep = mysql_fetch_array($res))
    		{		
    			echo '<input type="radio" name="choix" value="' , $donnees['id'] , '"> ' , stripslashes(htmlentities(trim($donnees2['reponse']))) , '<br />';
    		}
    La référence au tableau $rep ne se fait nulle part !

  6. #6
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Par défaut
    Bonsoir,
    Des points à la place des virgules:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo '<input type="radio" name="choix" value="' . $donnees['id'] . '"> ' . stripslashes(htmlentities(trim($donnees2['reponse']))) . '<br />';

  7. #7
    jnore
    Invité(e)
    Par défaut
    Citation Envoyé par andry.aime Voir le message
    Bonsoir,
    Des points à la place des virgules:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo '<input type="radio" name="choix" value="' . $donnees['id'] . '"> ' . stripslashes(htmlentities(trim($donnees2['reponse']))) . '<br />';
    Exact, cela m'avait échappé !

  8. #8
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Août 2009
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2009
    Messages : 68
    Par défaut
    j'avais mis des virgules !!! O.o !!

  9. #9
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Août 2009
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2009
    Messages : 68
    Par défaut
    Merci à tous pour m'avoir aider à résoudre ce problème ^^

    Mais en fait, j'en ai un autre...

    Je n'arrive pas à envoyer tous les résultats à ma base de données, impossible de valider...

    donc si quelqu'un sait comment faudrait que je fasse... :s

  10. #10
    jnore
    Invité(e)
    Par défaut
    Citation Envoyé par Yopii Voir le message
    Merci à tous pour m'avoir aider à résoudre ce problème ^^

    Mais en fait, j'en ai un autre...

    Je n'arrive pas à envoyer tous les résultats à ma base de données, impossible de valider...

    donc si quelqu'un sait comment faudrait que je fasse... :s
    Dis nous exactement ce que tu veux ainsi que quelques lignes de script.

  11. #11
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Août 2009
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2009
    Messages : 68
    Par défaut
    Wè c'est vrai excusez-moi !!

    Bon je vais expliquer en gros mon projet...
    Faire un sondage !! ...nan j'rigole !!
    Alors, ça se fais ainsi, j'ai une base de données ayant 2 tables : sondage_questions et sondages_reponses !!

    Ma page php fais donc boucle en faisant appel à une question, puis les réponses à cette question puis une nouvelle questions puis les réponses et ainsi de suites pour toutes les questions !!

    Maintenant, voilà le problème, c'est un sondage et dans ma table sondage_reponses j'ai une colonne nb_reponse, qui bien sûr me permet de connaitre le nombre de réponses à chaque questions et donc les résultats du sondage seront vraiment accélérés !!

    Donc, tout est bien MAIS je n'arrive pas à valider toutes les questions en 1 fois et que bien sûr que chaque réponse ajoute leur valeur dans la base de données !! (et tout ça sans erreur mdrr !! )
    Puis aussi, la vérification de champs ne fonctionne pas, enfin je pense...

    Et pour finir, ça va faire vraiment longtemps que je n'ai pas fais de php (comme j'ai dis plus haut !!) donc c'est un peu "dur" de s'y remettre comme ça (j'avais un peu "abandonné" le web... )...


    Bon voici le sript de ma page complet !!


    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
     
     
    <?php
    // là le visiteur à choisi une réponse
    // on se connecte à notre base
    $base = mysql_connect ('xxxx','xxxx','xxxx');
    mysql_select_db ('xxxx',$base);
     
    $reponse = mysql_query("SELECT * FROM sondage_questions") or die(mysql_error());
    $donnees = mysql_fetch_array($reponse);
     
    // on teste si formulaire de valider a été validé
    if (isset($_POST['go']) && $_POST['go']=='Valider') {
    	if (!isset($_POST['choix' .$donnees[id]. '']) || !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 "Valider". On teste aussi si la variable $_POST['sondage_en_cours'] n'est pas vide
    	if (empty($_POST['choix' .$donnees[id]. '']) || empty($_POST['sondage_en_cours'])) {
    		$erreur = 'Au moins un des champs est vide.';
    	}
    	else {
     
     
    		// 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' .$donnees[id]. ''].'"';
     
    		// 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é :)';
    	}
    }
    ?>
     
     
     
     
     
     
     
    <?php
     
    mysql_connect("xxxx","xxxx","xxxx"); // Connexion à la base de données
    mysql_select_db("xxxx"); // Sélection de la table
     
     
    $reponse = mysql_query("SELECT * FROM sondage_questions") or die(mysql_error());
     
    while($donnees = mysql_fetch_array($reponse))
    {
    ?>
    	<p>
    	<strong>Question n°</strong><?php echo $donnees['id']; ?> - <?php echo $donnees['question']; echo "<br />"?>
    	<?php
     
    		$sql = 'SELECT id, reponse FROM sondage_reponses WHERE id_sondage="'.$donnees['id'].'"';
    		$res=mysql_query($sql) or die(mysql_error());
    		while($rep = mysql_fetch_array($res))
    		{		
    			echo '<input type="radio" name="choix' .$donnees[id]. '" value="' . $donnees['id'] . '"> ' , stripslashes(htmlentities(trim($rep['reponse']))) , '<br />';
    		}
    	?></p>
    <?php	
    }
    ?>
    <input type = "hidden" name = "sondage_en_cours" value = "<?php echo $donnees['id']; ?>">
    	<input type = "submit" name="go" value = "Valider">
    	</form>
       </p>
     
     
    <br /><br />
     
    <?php
    // on affiche les erreurs éventuelles
    if (isset($erreur)) echo '<br /><br />',$erreur;
     
     
    mysql_close();
    ?>

    Voilà, donc si quelqu'un peut m'aider, je pense qu'il y a vraiment des énormités dans ce que j'ai fais... mais bon, je cherche ^^'

  12. #12
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Par défaut
    Re,
    $donnees[id]
    Attention,on utilise des simples quotes dans une requête sql mais pas des doubles quotes.
    $sql ='UPDATE sondage_reponses SET nb_reponses = nb_reponses + 1 WHERE id_sondage="'.$_POST['sondage_en_cours'].'" AND id="'.$_POST['choix' .$donnees[id]. ''].'"';
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sql ="UPDATE sondage_reponses SET nb_reponses = nb_reponses + 1 WHERE id_sondage='".$_POST['sondage_en_cours']."' AND id='".$_POST['choix' .$donnees['id']. '']."'";

  13. #13
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Août 2009
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2009
    Messages : 68
    Par défaut
    Ok, merci, j'ai corrigé ces fautes là...mais ça ne fonctionne toujours pas...

    j'ai regardé si j'avais oublié des parenthèse, quotes ou autres mais je ne vois pas...
    je pense que j'ai mal codé mon truc...

  14. #14
    jnore
    Invité(e)
    Par défaut
    Quels sont les erreurs et les effts que tu constates?

  15. #15
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Août 2009
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2009
    Messages : 68
    Par défaut
    Bah justement je n'ai pas d'erreurs qui s'affichent !!
    ...par contre rien ne se passe, aucun validation, rien, et rien n'ai ajouté dans la base de données !!

    C'est vraiment bizarre...!!!

  16. #16
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Par défaut
    Re,
    Montre nous ton nouveau code.

  17. #17
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Août 2009
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2009
    Messages : 68
    Par défaut
    Ok, le voilà...

    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
     
    <?php
    // là le visiteur à choisi une réponse
    // on se connecte à notre base
    $base = mysql_connect ('xxx','xxx','xxx');
    mysql_select_db ('xxx',$base);
     
    $reponse = mysql_query("SELECT * FROM sondage_questions") or die(mysql_error());
    $donnees = mysql_fetch_array($reponse);
     
    // on teste si formulaire de valider a été validé
    if (isset($_POST['go']) && $_POST['go']=='Valider') {
    	if (!isset($_POST['choix' .$donnees['id']. '']) || !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 "Valider". On teste aussi si la variable $_POST['sondage_en_cours'] n'est pas vide
    	if (empty($_POST['choix' .$donnees['id']. '']) || empty($_POST['sondage_en_cours'])) {
    		$erreur = 'Au moins un des champs est vide.';
    	}
    	else {
     
     
    		// 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' .$donnees['id']. '']."'";
     
    		// on lance la requête
    		mysql_query ($sql) or die (mysql_error());
     
    		// on ferme la connexion à la base de donnée
    		mysql_close ();
     
    		$erreur = 'Merci d\'avoir voté :)';
    	}
    }
    ?>
     
     
     
     
     
     
     
    <?php
     
    mysql_connect("xxx","xxx","xxx"); // Connexion à la base de données
    mysql_select_db("xxx"); // Sélection de la table
     
     
    $reponse = mysql_query("SELECT * FROM sondage_questions") or die(mysql_error());
     
    while($donnees = mysql_fetch_array($reponse))
    {
    ?>
    	<p>
    	<strong>Question n°</strong><?php echo $donnees['id']; ?> - <?php echo $donnees['question']; echo "<br />"?>
    	<?php
     
    		$sql = 'SELECT id, reponse FROM sondage_reponses WHERE id_sondage="'.$donnees['id'].'"';
    		$res=mysql_query($sql) or die(mysql_error());
    		while($rep = mysql_fetch_array($res))
    		{		
    			echo '<input type="radio" name="choix' .$donnees['id']. '" value="' . $donnees['id'] . '"> ' , stripslashes(htmlentities(trim($rep['reponse']))) , '<br />';
    		}
    	?></p>
    <?php	
    }
    ?>
    <input type = "hidden" name = "sondage_en_cours" value = "<?php echo $donnees['id']; ?>">
    	<input type = "submit" name="go" value = "Valider">
    	</form>
       </p>
     
     
    <br /><br />
     
    <?php
    // on affiche les erreurs éventuelles
    if (isset($erreur)) echo '<br /><br />',$erreur;
     
     
    mysql_close();
    ?>
    J'suis vraiment désolé, mais je ne vois pas...je pense avoir corrigé toutes les erreurs que vous m'avez indiqués...

  18. #18
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Août 2009
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2009
    Messages : 68
    Par défaut
    ?? il n'y a personne qui voit une erreur ou qui aurait une solution ??

  19. #19
    Membre Expert Avatar de nosferapti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    1 157
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 1 157
    Par défaut
    fait un "echo" de ta requête pour vérifier qu'elle est bien construite et teste ta requête avec phpMyAdmin

Discussions similaires

  1. problème création de process
    Par skaii dans le forum MFC
    Réponses: 6
    Dernier message: 01/06/2005, 17h24
  2. .htaccess problème création sous windows
    Par Leviathan_72 dans le forum Apache
    Réponses: 2
    Dernier message: 18/05/2005, 20h29
  3. Problème création et destruction de processus.
    Par loupdeau dans le forum MFC
    Réponses: 5
    Dernier message: 08/04/2005, 13h33
  4. Problèmes création de procédures et de triggers
    Par missllyss dans le forum SQL
    Réponses: 2
    Dernier message: 06/11/2003, 10h42
  5. Problème création de DLL
    Par monsieur.voie.lactee dans le forum C++Builder
    Réponses: 4
    Dernier message: 12/08/2003, 16h56

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