Problème d'insertion base MySQL

Résolu
Bonjour tout le monde,

J'ai un problème en voulant insérer les données récupérées par un formulaire lors de l'inscription et de les insérer dans la base. Voici le code, très simple:

$dbname = '***';
$hostname = '***';
$username = '***';
$password = '***';



$id_link = mysql_connect($hostname, $username, $password);

$sql = "INSERT INTO utilisateur (id, nom, prenom, date_naissance, date_inscription, ecole, classe, rue, ville, type, newsletter, activite, email, mot_de_passe, question_sec, reponse_sec) VALUES('', '$nom', '$prenom', '$date_naissance', '$moment', '$ecole', '$classe', '$rue', '$ville', '', '$newsletter', '', '$email', '$mot_de_passe', '$question_sec', '$reponse_sec')"; 

@mysql_db_query ($dbname,$sql,$id_link);


La connexion fonctionne. Les données récupérées par le formulaire sont "bonnes", je l'ai testé avec echo.
Problème, la requete ne fonctionne pas : les données ne s'ajoutent pas dans la base!!!!
Petite précision : le champ "id" est en AUTO_INCREMENT et "activité" n'est pas renseigné lors de l'inscription, il reste blanc..

MERCI d'avance.. Je cale!
DL
Configuration: Windows XP Internet Explorer 7.0

25 réponses

Résumé de la discussion

Problème d'insertion des données récupérées via un formulaire persiste lors de l'enregistrement en base, malgré une connexion fonctionnelle et des données testées comme correctes pour l'inscription. Le problème tient à l'insertion explicite de l'identifiant alors que la colonne id est AUTO_INCREMENT, ce qui peut empêcher l'ajout des données et rend nécessaire de retirer id de la liste. Des conseils suggèrent d afficher la requête et de l exécuter directement via phpMyAdmin ou MySQL pour identifier les erreurs, puis de tester sans id et d ajuster les colonnes. D'autres réponses conseillent aussi de vérifier les valeurs des colonnes et d éviter les fautes d orthographe ou les champs non renseignés, et d activer les messages d'erreur pour diagnostiquer rapidement.

Bobot (l’IA à votre service)
  1. si t'as tout bon pour les parametres... c'est censé marcher impec...
    1. Salut Chamicki
      je sens que tu vas me hair toute ta vie :)
      J'ai fait une faute de frappe en créant ma base il y a un mois

      ecolara_be au lieu de ecoloara_be

      Merci à tous pour vos réponses en tout cas et bonnes vacances !!!! Shame on me !!!
      DL
      1. Alors j'ai essayé avec mysql_error

        Code

        $probleme = mysql_error();
        echo $probleme;
        


        Réponse : Base "ecoloara_be" inconnue.

        Alors là je me pose des questions !!! Ma base existe !
        1. Essaye en changeant les valeurs de connexion à ta base

          $serveur="???????";
          $utilisateur="??????";
          $mot_de_passe="?????";
          $nom_de_base="???????";
          1. Merci pour ce code personnalisé :)

            Réponse:
            Echec de connexion a la base. Veuillez contacter le responsable du site
            1. des clés etrangères... mais bon je crois pas ke ce soit le cas, vu ta réaction !!

              mais.... j' bug là !!! je Ne pensez-vous pas qu'il faille SELECTIONNER la base??? et je suis ouff !!!

              en recuperant l'erreur avec mysql_error() t'as l'info sur l'erreur qui est produite....
              1. if($id=mysql_connect($serveur,$utilisateur,$mot_de_passe))
                {
                    if(mysql_select_db($nom_de_base))
                    {
                       	$req = "INSERT INTO utilisateur (id, nom, prenom, date_naissance, date_inscription, ecole, classe, rue, ville, type, newsletter, activite, email, mot_de_passe, question_sec, reponse_sec) VALUES('', '$nom', '$prenom', '$date_naissance', '$moment', '$ecole', '$classe', '$rue', '$ville', '', '$newsletter', '', '$email', '$mot_de_passe', '$question_sec', '$reponse_sec')"; 
                
                		$ok_req = mysql_query($req,$id);
                		if($ok_req)
                		{
                			echo "Envoi ok";
                			
                		}
                		else
                		{
                			die("Envoi Non ok. Veuillez contacter le responsable du site");
                		}
                
                    }
                    else
                    {
                        die("Echec de connexion a la base. Veuillez contacter le responsable du site");
                    }
                    mysql_close($id);
                }
                else
                {
                    die("Echec de connexion au serveur de base de données. Veuillez contacter le responsable du site");
                }
                ?>
                
                1. Voila donc je suppose qu'il faut mettre NULL pour :
                  - type
                  - activite

                  Il ne me laisse pas mettre NULL pour id.

                  Alors je l'ai fait ... Eh ben nan, toujours rien ! POURTANT, PHP n'indique AUCUNE erreur...

                  Avez-vous une idée??? Pourtant sur MySql ça marche à merveille..
                  1. chuuttt... dis rien..

                    c'est pas un mystère php.... si ce champ est auto_increment... y a aucun intérêt à la mentionné dans ta requête, puis de lui donner une valeur NULL... autant l'omettre.... il aura de toute façon sa valeur...

                    ce ki est sûr.. c'est censé passer... si c'est vraiment auto comme tu l'as dit....
                    1. Salut Atspinto

                      Donc la requete fonctionne quand j'enleve Id, comme tu dis. Mais avec le PHP, mystère rien ne s'ajoute.
                      Je n'ai pas encore essayé avec NULL, chamicki, je te dis koi.

                      Merci à vous pour vos reponses rapides
                      1. l'auto_increment doit pas etre effectif... si t'as ce genre d'erreur.. enfin je crois...

                        supprimes donc la partie id dans ta requete d'insertion... et vois ce ke ça donne ....
                        1. Voilà : j'ai essayé la requete:
                          Voici l'erreur: ;
                          #1366 - Incorrect integer value: '' for column 'id' at row 1

                          Que dois-je faire???
                          Merci DL
                          • 1
                          • 2