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 :

Ajouter un enregistrement à partir d'un formulaire [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre du Club
    Inscrit en
    Mars 2008
    Messages
    73
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 73
    Points : 56
    Points
    56
    Par défaut Ajouter un enregistrement à partir d'un formulaire
    salut,
    mon problème est que je veux insérer un nouveau enregistrement dans ma base de données à partir d'un formulaire
    j'ai utilisé ce code mais il ne marche pas, j'ai aucune modification dans ma base de données:

    Code HTML : 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
    <FORM method=post action="essai.php">
    Ajout d'un Etudiant
    <TABLE BORDER=0>
    <TR>
    	<TD>Nom</TD>
    	<TD>
    	<INPUT type=text name="nom">
    	</TD>
    </TR>
     
    <TR>
    	<TD>Prénom</TD>
    	<TD>
    	<INPUT type=text name="prenom">
    	</TD>
    </TR>
     
    <TR>
    	<TD>Telephone</TD>
    	<TD>
    	<INPUT type=text name="Tel">
    	</TD>
    </TR>
     
    <TR>
    	<TD>Email</TD>
    	<TD>
    	<INPUT type=text name="Email">
    	</TD>
    </TR>
     
    <TR>
    	<TD COLSPAN=2>
    	<INPUT type="submit" value="Ajouter">
    	</TD>
    </TR>
     
    </TABLE>
    </FORM>

    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
    <?php
           if (isset($_POST['Nom']) AND isset($_POST['Prenom']) AND isset($_POST['Tel']) AND isset($_POST['Email']))
             {  
               if ($_POST['Nom'] != NULL AND $_POST['Prenom'] != NULL AND $_POST['Tel'] != NULL AND $_POST['Email'] != NULL )
                {
                 mysql_connect("localhost", "root", "");
                 mysql_select_db("bd");
                 $Nom = mysql_real_escape_string(htmlspecialchars($_POST['Nom']));
                 $Prenom = mysql_real_escape_string(htmlspecialchars($_POST['Prenom']));
                 $Tel = mysql_real_escape_string(htmlspecialchars($_POST['Tel']));
                 $Email = mysql_real_escape_string(htmlspecialchars($_POST['Email']));
                 mysql_query("INSERT INTO etudiant VALUES('', '$Nom', '$Prenom', '$Tel', '$Email')");
                 mysql_close();
                }
             }
    ?>
     
    </body>
    </html>
    merci d'avance

  2. #2
    Expert confirmé

    Homme Profil pro
    SDE
    Inscrit en
    Août 2007
    Messages
    2 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : SDE

    Informations forums :
    Inscription : Août 2007
    Messages : 2 013
    Points : 4 324
    Points
    4 324
    Par défaut
    remplace
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
                 mysql_query("INSERT INTO etudiant VALUES('', '$Nom', '$Prenom', '$Tel', '$Email')");
    par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
                 mysql_query("INSERT INTO etudiant VALUES('', '$Nom', '$Prenom', '$Tel', '$Email')") or die(mysql_error());
    et donne nous l'erreur que tu va normalement voir apparaitre.
    donne nous aussi la structure de ta table etudiant si possible afin de nous aider a cerner le problème
    http://alaindefrance.wordpress.com
    Certifications : SCJP6 - SCWCD5 - SCBCD5 - SCMAD1
    SDE at BitTitan

  3. #3
    Membre du Club
    Inscrit en
    Mars 2008
    Messages
    73
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 73
    Points : 56
    Points
    56
    Par défaut
    j'ai fait ce changement de code mais j'ai pas reçu d'erreur....!!
    et pour ma table etudiant il comporte 5 champs:
    id : identificateur (int).
    Nom
    Prenom
    Tel
    Email.
    c tout et merci de m'avoir repondu

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    12
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 12
    Points : 12
    Points
    12
    Par défaut
    L'insertion en BDD est super sensible et souvent ne donne pas d'erreurs. J'ai vu ça assez souvent

    Voici ma structure copiée/collée, je te laisse l'adapter à ta sauce :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
     
    if(isset($_POST['nomfichier']))      $nomfichier=$_POST['nomfichier'];
    if(isset($_POST['envoyeur']))      $envoyeur=$_POST['envoyeur'];
    if(isset($_POST['legende']))      $legende=$_POST['legende'];
     
    mysql_connect($mysqlserver,$mysqlusername,$mysqlpass);
    	@mysql_select_db($mysqldatabase) or die( "Unable to select database");
    mysql_query("INSERT INTO $prochainconcours (nomfichier,envoyeur,legende) VALUES('$nomfichier','$nomenvoyeur','$legende')");
    Avec ce genre de choses, la moindre apostrophe compte et fait bien chier le monde. Si ça ne marche vraiment pas, créé une table avec un seul champ, et fais un formulaire avec une seule donnée à envoyer. Commence petit avant de voir en réel

  5. #5
    Membre du Club
    Inscrit en
    Mars 2008
    Messages
    73
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 73
    Points : 56
    Points
    56
    Par défaut
    J'ai même essayé avec un seul champ et ça ne marche pas...!!!
    voici le code que j'ai tapé:
    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
    <html>
    <body>
     
    <FORM method="post" action="essai1.php">
    Ajout d'un Client
    <TABLE BORDER=0>
    <TR>
    	<TD>Nom</TD>
    	<TD>
    	<INPUT type=text name="nom">
    	</TD>
    </TR>
     
     
    <TR>
    	<TD COLSPAN=2>
    	<INPUT type="submit" value="Ajouter">
    	</TD>
    </TR>
     
    </TABLE>
    </FORM>
     
    <?php
          if (isset($_POST['nom']))    
     
              { 
                 mysql_connect("localhost", "root", "");
                 mysql_select_db("bd1") or die("unable to select database");
                 mysql_query("INSERT INTO client VALUES('".$_POST['nom']."')")  or die(mysql_error());
                 mysql_close();
              }  
     
    ?>
     
    </body>
    </html>
    si vous pouvez me trouver une solution

  6. #6
    Expert confirmé

    Homme Profil pro
    SDE
    Inscrit en
    Août 2007
    Messages
    2 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : SDE

    Informations forums :
    Inscription : Août 2007
    Messages : 2 013
    Points : 4 324
    Points
    4 324
    Par défaut
    L'insertion en BDD est super sensible et souvent ne donne pas d'erreurs
    Les erreurs ne s'affichent pas uniquement si la conf de php le spécifie. Je me trompe peut-être mais dans tous les cas si tu prend la requête (qui ne semble pas fonctionner) et que tu la passe directement dans mySQL tu verra l'erreur apparaitre.

    que te donne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     echo  "INSERT INTO etudiant VALUES('', '$Nom', '$Prenom', '$Tel', '$Email')";
    On verra bien si tu reçoit correctement tes informations.
    Donne nous la structure de ta table s'il te plait ça nous permettra de voir si l'insert correspond bien a ta structure étant donné que tu ne spécifie pas les champs valué dans ta requête
    http://alaindefrance.wordpress.com
    Certifications : SCJP6 - SCWCD5 - SCBCD5 - SCMAD1
    SDE at BitTitan

  7. #7
    Membre du Club
    Inscrit en
    Mars 2008
    Messages
    73
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 73
    Points : 56
    Points
    56
    Par défaut
    c'est l'erreur que j'ai reçu apres l'utilisation de l'instruction:
    ----------------------------------------
    echo ("INSERT INTO etudiant VALUES('' , '".$nom."' , '".$prenom."' , '".$tel."' , '".$email."' )") ;
    ----------------------------------------
    j'ai trouvé dans la page ajouter.php cette ligne:
    -----------------------------------------
    INSERT INTO etudiant VALUES('' , '' , '' , '' , '' )
    -----------------------------------------
    structure de la table etudiant:
    id
    Nom
    Prenom
    Tel
    Email

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    12
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 12
    Points : 12
    Points
    12
    Par défaut
    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
    <html>
    <body>
     
    <FORM method="post" action="essai1.php">
    Ajout d'un Client
    <TABLE BORDER=0>
    <TR>
    <TD>Nom</TD>
    <TD>
    <INPUT type=text name="Nom">
    </TD>
    </TR>
     
     
    <TR>
    <TD COLSPAN=2>
    <INPUT type="submit" value="Ajouter">
    </TD>
    </TR>
     
    </TABLE>
    </FORM>
     
    <?php
    {
     
    if(isset($_POST['Nom']))      $Nom=$_POST['Nom'];
     
    mysql_connect("localhost", "root", "");
    mysql_select_db("bd1") or die("unable to select database");
    mysql_query("INSERT INTO client (Nom) VALUES('$Nom')") or die(mysql_error());
    mysql_close();
    }
     
    ?>
     
    </body>
    </html>
    SI ça ne marche pas, je vois vraiment pas !

  9. #9
    Membre du Club
    Inscrit en
    Mars 2008
    Messages
    73
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 73
    Points : 56
    Points
    56
    Par défaut
    Voici la page que je reçois avec ce code si ça pouvez vous aider a bien determiner le probleme...! et merci
    Images attachées Images attachées  

  10. #10
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    12
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 12
    Points : 12
    Points
    12
    Par défaut
    A mon avis, ça vient bêtement de ta table. Elle doit être mal configurée, refais-la à zéro en n'y mettant que le Nom (text). Pas de clé primaire, ni auto increment, rien.
    Et reteste encore ^^

  11. #11
    Membre expérimenté
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    1 349
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 349
    Points : 1 460
    Points
    1 460
    Par défaut
    Citation Envoyé par PhiphyL Voir le message
    Pas de clé primaire



    une table sans clé primaire...
    Stay in Bed .. Save Energy

  12. #12
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    12
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 12
    Points : 12
    Points
    12
    Par défaut
    Il me semble que j'en mets jamais. Il faut ?
    (tant que ça marche...)

  13. #13
    Membre expérimenté
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    1 349
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 349
    Points : 1 460
    Points
    1 460
    Par défaut
    oui c'est pas il faut c imperatif cela permet d'éviter les doublons dans ta base
    Stay in Bed .. Save Energy

  14. #14
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    12
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 12
    Points : 12
    Points
    12
    Par défaut
    Ah, c'est donc pas impératif. Et techniquement on peut très bien s'en passer.

    Après, dans ce sujet on s'en fout complètement, le but ici est de faire en sorte que son truc fonctionne. Et autant faire le plus simple possible.

  15. #15
    Membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 60
    Points : 55
    Points
    55
    Par défaut
    ta clé primaire est-t-elle mise en autoincrement ?
    Et surtout verifie les types de tes champs et compare les avec ceux de ta base ( car des fois des entiers qui recoivent :"" ou quelque chose du genre peut générer ce genre de problème )

    Sinon cela peut aussi venir d'une option PHP désactivé par défaut (regiter-globals)

    Tu purras modifier cette ligne dans ton fichier de configuration php.ini
    et remplaces register_globals=oFF par register_globals=On
    et refais un test, si le problème ne vient pas de là, alors remet register_globals=off (question de sécurité de tes variables)

  16. #16
    Membre expérimenté
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    1 349
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 349
    Points : 1 460
    Points
    1 460
    Par défaut
    Et techniquement on peut très bien s'en passer.
    oui techniquement c'est possible mais tu perd le but et l'utilité d'une bdd

    Après, dans ce sujet on s'en fout complètement,
    le but ici est de faire en sorte que son truc fonctionne.
    je pense que répondre au problème en amenant de nouveau ne sert pas a grand chose

    voila le débat est clos

    pour tkhchkhiche peux tu essayer
    INSERT INTO etudiant VALUES('' , 'toto' , 'tata' , '0101010101' , 'aaa@aaa.fr') ;

    dans une console sql directement de plus ton champ id est bien en autoincrement?
    Stay in Bed .. Save Energy

  17. #17
    Expert confirmé

    Homme Profil pro
    SDE
    Inscrit en
    Août 2007
    Messages
    2 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : SDE

    Informations forums :
    Inscription : Août 2007
    Messages : 2 013
    Points : 4 324
    Points
    4 324
    Par défaut
    Ah, c'est donc pas impératif. Et techniquement on peut très bien s'en passer.
    Ça dépend si tu veux faire les choses bien ou pas, et tant qu'as faire si on peut aider a réaliser une meilleur conception c'est mieux

    Ici pour tenter de résoudre ton problème, il semble que tes variables ne recoivent pas de valeurs puisque la requête généré est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    INSERT INTO etudiant VALUES('' , '' , '' , '' , '' )
    Il semble donc y avoir un problème a la récupération des valeurs que tu veux ajouter dans ta base de donnée.

    Je regarderais mieux dans la soirée l'intégralité de ton code pour voir si je trouve pas un problème à ce niveau là.

    Pour rajouter une clé primaire il te suffit de faire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    ALTER TABLE `etudiant`
    ADD CONSTRAINT `PK_etudiant` PRIMARY KEY(`id`) AUTO_INCREMENT;
    http://alaindefrance.wordpress.com
    Certifications : SCJP6 - SCWCD5 - SCBCD5 - SCMAD1
    SDE at BitTitan

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 21/03/2009, 14h53
  2. Réponses: 8
    Dernier message: 27/07/2006, 09h09
  3. [ACCESS 2003] - enregistrement à partir d'un formulaire
    Par guiguikawa dans le forum Access
    Réponses: 5
    Dernier message: 13/06/2006, 16h40
  4. ajout d'enregistrement dans un sous-formulaire
    Par LBSinclair dans le forum Access
    Réponses: 2
    Dernier message: 10/04/2006, 23h11
  5. Réponses: 4
    Dernier message: 14/10/2005, 09h54

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