{MySQL} probleme mysql_query / mysql_connect

Résolu
Bonjour, j'ai un problème avec la base de données lycos quand je mais ce code :
mysql_connect("INSERT INTO sondage (nom, resultat)". a la fin de mon formulaire quand je l'envoie il me dit "merci" cela veut dire qu'il a prie en compte la données, mais quand je vais dans ma base il y a pas de données

maintenant quand je mais ce code a la place :
mysql_query("INSERT INTO sondage (nom, resultat)".

quand je rempli le formulaire est que je clique sur envoyer ca me dit impossible d'envoyer a la base de données donc le quel de c'est 2 code je dois prendre et aussi comment les faire fonctionner ?
merci de votre aide
Configuration: Windows XP
Firefox 3.0.10

28 réponses

Résumé de la discussion

Plusieurs échanges portent sur l'insertion des réponses d’un sondage via PHP et MySQL, où les valeurs du formulaire semblent ne pas correspondre aux colonnes nom et resultat de la table. Des propositions récurrentes précisent qu'il faut créer ou aligner les colonnes utilisées (nom, resultat ou choix1 à choix7), vérifier l'orthographe des identifiants et écrire correctement l'instruction INSERT. En pratique, les messages d'erreur comme 'Impossible d'insérer le résultat du sondage' reflètent des colonnes ou valeurs non alignées, des problèmes de connexion ou des noms de champs incohérents dans le formulaire.

Bobot (l’IA à votre service)
  1. Il me semble que mysql_connect() sert à se connecter à une base donc en paramètre ceux sont les informations de connexion et non une requête qu'il faut que tu passes.

    Ensuite tu pourras effectuer ta requête avec mysql_query() avec comme paramètre ta requête.
    0
    1. quand du parle de paramètre tu parle de ca :

      mysql_pconnect($serveur, $utilisateur , $motDePasse)
      or die("Impossible de se connecter au serveur de bases de données.");
      mysql_select_db($base)
      or die("Base de données non trouvée.");

      $pseudo = $_POST["pseudo"];
      $choix = $_POST["choix"];

      mysql_connect("INSERT INTO sondage (nom, resultat)".
      " VALUES ('$pseudo', '$choix' ) ")
      or die("Impossible d'insérer le résultat du sondage");
      echo "Merci";
      ?>
      0
      1. Ouais sauf que : mysql_connect("INSERT INTO sondage (nom, resultat)".
        " VALUES ('$pseudo', '$choix' ) ")

        ca me chagrine ^^
        Ce serait plutôt mysql_query(....
        0
        1. je me dit ca aussi mais quand je mais mysql_query quand j'envoie les données ca me dit le sondage n'a pas pu être envoyer
          0
          1. voici mes codes :

            voici mes codes:
            <?php
            $serveur = "localhost";
            $utilisateur = "belma84000";
            $motDePasse = "meh280286";
            $base = "iciturquie_db";

            mysql_pconnect($serveur, $utilisateur , $motDePasse)
            or die("Impossible de se connecter au serveur de bases de données.");
            mysql_select_db($base)
            or die("Base de données non trouvée.");

            $pseudo = $_POST["pseudo"];
            $choix = $_POST["choix"];

            mysql_connect("INSERT INTO sondage (nom, resultat)".
            " VALUES ('$pseudo', '$choix' ) ")
            or die("Impossible d'insérer le résultat du sondage");
            echo "Merci";
            ?>

            ensuite:

            <html>
            <head>
            <title>Sondage mon site !</title>
            </head>
            <body>
            <h2>Comment avez-vous découvert mon site ?</h2>
            <form method="post" action="sondage.php">
            <input type="radio" name="choix1" value="presse" />Par la presse spécialisée<br />
            <input type="radio" name="choix2" value="annuaire" />Par un annuaire<br />
            <input type="radio" name="choix3" value="moteur" />Par un moteur de recherche<br/>
            <input type="radio" name="choix4" value="forum" />Par un forum<br />
            <input type="radio" name="choix5" value="news" />Par les info<br />
            <input type="radio" name="choix6" value="ami" />Par un ami<br />
            <input type="radio" name="choix7" value="autre" />Autre<br />
            Merci de laisser votre pseudo:
            <input type="text" name="pseudo" /><br />
            <input type="submit" />
            </form>
            </body>
            0
            1. J'vois pas trop, mise à part le connect, ton code à l'air correct.

              Essaye de déterminer d'où vient l'erreur, SQL ou autre et une description plus détaillé de l'erreur. Si c'est SQL donne le code d'erreur et le message par exemple.
              0
              1. Webmaster
                Bonjour,

                Effectivement, il faut faire dans l'ordre :
                1/ mysql_connect -> pour se connecter au serveur
                2/ mysql_select_db -> pour spécifier la base sur laquelle on va travailler
                3/ mysql_query -> pour éxecuter une requête

                Passer une requête à mysql_connect ne peut pas fonctionner :)

                Si mysql_query ne fonctionne pas, c'est peut être qu'il y a une erreur dans la requête : tu peux le savoir via par ex (ca t'affichera l'erreur SQL)
                mysql_query("INSERT INTO sondage (nom, resultat)"." VALUES ('$pseudo', '$choix' ) ")
                or die("Impossible d'insérer le résultat du sondage : ".mysql_error()); 
                

                Pour rappel,
                - ce mode (die avec l'erreur) n'est PAS bon pour un site en prodcution, car il donne à l'internaute presque tout ce qu'il faut pour tenter de pirater le site ...
                - il FAUT protéger les données postées via mysql_real_escape_string pour éviter les injections SQL ...
                Mais c'est un autre sujet :)
                0
                1. ca ne marche pas les message est :Impossible d'insérer le résultat du sondage
                  <?php
                  $serveur = "localhost";
                  $utilisateur = "belma84000";
                  $motDePasse = "meh280286";
                  $base = "iciturquie_db";

                  mysql_pconnect($serveur, $utilisateur , $motDePasse)
                  or die("Impossible de se connecter au serveur de bases de données.");
                  mysql_select_db($base)
                  or die("Base de données non trouvée.");

                  $pseudo = $_POST["pseudo"];
                  $choix = $_POST["choix"];

                  mysql_query("INSERT INTO sondage (nom, resultat)".
                  " VALUES ('$pseudo', '$choix' ) ")
                  or die("Impossible d'insérer le résultat du sondage");
                  echo "Merci";
                  ?>
                  0
                  1. C'est ta requête "INSERT INTO sondage (nom, resultat)"." VALUES ('$pseudo', '$choix' ) " qui déconne alors. Essaye de vérifier la syntaxe par rapport à ta BD (champs, table, etc).

                    Et suit le conseil de dam75 et utilise ce code pour ta requête histoire de connaître le vrai problème.
                    mysql_query("INSERT INTO sondage (nom, resultat)"." VALUES ('$pseudo', '$choix' ) ")
                    or die("Impossible d'insérer le résultat du sondage : ".mysql_error());
                    0
                    1. voici le message :Impossible d'insérer le résultat du sondage : Unknown column 'nom' in 'field list'
                      apres avopr mie le code de dam75
                      0
                      1. Bah voilà t'as ta réponse, il ne trouve pas la colonne nom dans ta table. Tu es sûr que c'est le même orthographe ?
                        0
                        1. voici ma table :
                          [ Afficher ] [ Sélectionner ] [ Insérer ] [ Vider ] [ Supprimer ]
                          Champ Type Attributs Null Défaut Extra Action
                          choix1 tinyint(4) Non 0 Modifier Supprimer Primaire Index
                          choix2 tinyint(4) Non 0 Modifier Supprimer Primaire Index
                          choix3 tinyint(4) Non 0 Modifier Supprimer Primaire Index
                          choix4 tinyint(4) Non 0 Modifier Supprimer Primaire Index
                          choix5 tinyint(4) Non 0 Modifier Supprimer Primaire Index
                          choix6 tinyint(4) Non 0 Modifier Supprimer Primaire Index
                          choix7 tinyint(4) Non 0 Modifier Supprimer Primaire Index
                          pseudo tinyint(4) Non 0 Modifier Supprimer Primaire Index
                          Pour la sélection : Pour la sélection : Ou

                          Espace utilisé :
                          Type Espace
                          Données 0 Octets
                          Index 1 024 Octets
                          Total 1 024 Octets
                          Statistiques :
                          Information Valeur
                          Format fixe
                          Enregistrements 0
                          0
                          1. Tu vois une colonne "nom" à un endroit toi ? Et résultat aussi tu m'diras... C'est quoi ta base là ?
                            0
                            1. c la base de lycos de la merde je change nom par champ
                              0
                              1. regarde la page de ma base

                                Base de données iciturquie_db - table sondage

                                [ Afficher ] [ Sélectionner ] [ Insérer ] [ Vider ] [ Supprimer ]
                                Champ Type Attributs Null Défaut Extra Action
                                choix1 tinyint(4) Non 0 Modifier Supprimer Primaire Index Unique Texte entier
                                choix2 tinyint(4) Non 0 Modifier Supprimer Primaire Index Unique Texte entier
                                choix3 tinyint(4) Non 0 Modifier Supprimer Primaire Index Unique Texte entier
                                choix4 tinyint(4) Non 0 Modifier Supprimer Primaire Index Unique Texte entier
                                choix5 tinyint(4) Non 0 Modifier Supprimer Primaire Index Unique Texte entier
                                choix6 tinyint(4) Non 0 Modifier Supprimer Primaire Index Unique Texte entier
                                choix7 tinyint(4) Non 0 Modifier Supprimer Primaire Index Unique Texte entier
                                pseudo tinyint(4) Non 0 Modifier Supprimer Primaire Index Unique Texte entier
                                Pour la sélection : Pour la sélection : Ou

                                Espace utilisé :
                                Type Espace
                                Données 0 Octets
                                Index 1 024 Octets
                                Total 1 024 Octets
                                Statistiques :
                                Information Valeur
                                Format fixe
                                Enregistrements 0

                                *
                                Version imprimable
                                *
                                Exécuter une ou des requêtes sur la base iciturquie_db [Documentation] :
                                SELECT * FROM `sondage` WHERE 1
                                Réafficher la requête après exécution
                                Ou Emplacement du fichier texte :

                                *
                                Ajouter un champ :
                                *
                                Insérer un fichier texte dans la table
                                *
                                Afficher le schéma de la table
                                Structure seule
                                Structure et données
                                Données seulement
                                Données CSV pour Ms Excel
                                Données CSV :
                                Champs terminés par
                                Champs entourés par
                                Caractère spécial
                                Lignes terminées par Ajouter des énoncés "drop table"
                                Insertions complètes
                                Insertions étendues
                                Protéger les noms des tables et des champs par des "`"

                                Transmettre ( "gzippé" )
                                Premier enregistrement -- nb. d'enregistrements
                                *
                                Changer le nom de la table pour :

                                Copier la table vers (Base de données.table) :
                                .
                                Structure seule
                                Structure et données
                                *
                                Maintenance de la table : Vérifier la table [Documentation] - Analyser la table [Documentation]
                                Réparer la table [Documentation] - Optimiser la table [Documentation]

                                *
                                Commentaires sur la table :
                                *
                                Table en format : [Documentation]
                                * Supprimer la table sondage
                                0
                                1. T'essaye d'insérer des valeurs dans les champs "nom" et "resultat" or ils n'existent pas...
                                  Il te faut donc les créer.
                                  0
                                  1. j'ai réussi a avoir "merci" en créant une ligne résultat et pour le non j'ai mie choix1 regarde:

                                    mysql_query("INSERT INTO sondage (choix1, resultat)"." VALUES ('$pseudo', '$choix' ) ")
                                    or die("Impossible d'insérer le résultat du sondage : ".mysql_error());
                                    echo "Merci";
                                    ?>

                                    peut me dire comment il faut configurer la base pour quel m'affiche les résultat d'un formulaire avec des boutons radio . parce que la base a reçus un enregistrement mais je ne vois pas le chois et le pseudo merci
                                    0
                                    1. voiles resultat qui ne s'affiche pas :

                                      Affichage des enregistrements 0 - 2 (2 total)
                                      requête SQL : [Modifier]
                                      SELECT * FROM `sondage` LIMIT 0, 30

                                      lignes à partir de

                                      choix1 choix2 choix3 choix4 choix5 choix6 choix7 pseudo resultat
                                      Modifier Effacer 0 0 0 0 0 0 0 0 0
                                      Modifier Effacer 0 0 0 0 0 0 0 0 0

                                      lignes à partir de

                                      Insérer un nouvel enregistrement

                                      Intitulé :
                                      0
                                      1. Webmaster
                                        oula c'est pas encore gagné ;)

                                        TOUS tes champs sont des TINYINT, c'est à dire qu'ils ne peuvent contenir QUE des entiers numériques compris entre 0 et 255 (ou -127 à 127 si signed) ...
                                        Or ca m'etonnerait que ton $pseudo soit un entier ? idem pour $choix ???

                                        -> tu devrais essayer de modifier la structure de la table par exemple en déclarant des CHAR(30) ?

                                        Et pour en avoir le coeur net modifie ton code en
                                        mysql_query("INSERT INTO sondage (choix1, resultat)"." VALUES ('$pseudo', '$choix' ) ")
                                        or die("Impossible d'insérer le résultat du sondage : pseudo=$pseudo, choix=$choix".mysql_error()); 
                                        

                                        Ca affichera ce que tu essaies d'insérer et on verra bien si ce sont des numériques ... mais je n'y crois pas :)
                                        0
                                        1. j'ai modifier mon code :

                                          mysql_pconnect($serveur, $utilisateur , $motDePasse)
                                          or die("Impossible de se connecter au serveur de bases de données.");
                                          mysql_select_db($base)
                                          or die("Base de données non trouvée.");

                                          $pseudo = $_POST["pseudo"];
                                          $choix = $_POST["choix"];

                                          mysql_query("INSERT INTO sondage (choix1, resultat)"." VALUES ('$pseudo', '$choix' ) ")
                                          or die("Impossible d'insérer le résultat du sondage : pseudo=$pseudo, choix=$choix".mysql_error());
                                          echo "Merci";
                                          ?>

                                          et voici ma table :


                                          Base de données iciturquie_db - table sondage

                                          [ Afficher ] [ Sélectionner ] [ Insérer ] [ Vider ] [ Supprimer ]
                                          Champ Type Attributs Null Défaut Extra Action
                                          choix1 varchar(30) Non 0 Modifier Supprimer Primaire Index Unique Texte entier
                                          choix2 varchar(30) Non 0 Modifier Supprimer Primaire Index Unique Texte entier
                                          choix3 varchar(30) Non 0 Modifier Supprimer Primaire Index Unique Texte entier
                                          choix4 varchar(30) Non 0 Modifier Supprimer Primaire Index Unique Texte entier
                                          choix5 varchar(30) Non 0 Modifier Supprimer Primaire Index Unique Texte entier
                                          choix6 varchar(30) Non 0 Modifier Supprimer Primaire Index Unique Texte entier
                                          choix7 varchar(30) Non 0 Modifier Supprimer Primaire Index Unique Texte entier
                                          pseudo text Non Modifier Supprimer Primaire Index Unique Texte entier
                                          resultat varchar(30) Non 0 Modifier Supprimer Primaire Index Unique Texte entier
                                          Pour la sélection : Pour la sélection : Ou

                                          et voici les resultat :

                                          lignes à partir de

                                          Textes complets choix1 choix2 choix3 choix4 choix5 choix6 choix7 pseudo resultat
                                          Modifier Effacer belma84 0 0 0 0 0 0
                                          Modifier Effacer mehdi84000 0 0 0 0 0 0
                                          Modifier Effacer Rolls-game 0 0 0 0 0 0

                                          les pseudo ce mette dans choix1 et il n'y a rien dans resultat et pseudo et aussi il y a que des 0
                                          0
                                          • 1
                                          • 2