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 :

Enregistrement formulaire dans ma base de donnée [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 5
    Points : 2
    Points
    2
    Par défaut Enregistrement formulaire dans ma base de donnée
    Salut à tous, je suis comme la majeur partie des poseurs de questions un débutant!!!

    Je vais tenter de poser ma question le plus clairement possible, j'apprends a programmer sur un notepad à partir d'un bouquin. Seulement je bloque sur la partie des enregistrement dans une base de données.

    J'ai programmé un formulaire :

    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
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    <html>
     
    <head>
     
    <title>Ajout d'eleve</title>
     
    </head>
     
    <body>
     
    <h1>Ajouter un eleve</h1>
     
       <form action="enregistrement.php" method="post">
     
          <label>Nom</label>
          <input type="text" name="nom"/><br/>
     
          <label>Prenom</label>
          <input type="text" name="prenom"/><br/>
     
          <label>Adresse</label>
          <textarea name="adresse"></textarea><br/>
     
          <label>Ville</label>
          <input type="text" name="ville"/><br/>
     
          <label>Code Postal</label>
          <input type="text" name="codepostal"/><br/>
     
          <label>Sexe</label>
          <input type="radio" name="sexe" value="masculin"/>Masculin
          <input type="radio" name="sexe" value="feminin"/>Feminin<br/>
     
          <label>Date de naissance</label>
          <input type="text" name="naissance"/><br/>
     
          <label>E-mail</label>
          <input type="text" name="email"/><br/>
     
          <label>Telephone</label>
          <input type="text" name="telephone"/><br/>
     
          <input type="submit" value="enregistrement"/>
     
       </form>
     
    </body>
     
    </html>

    et j'ai écris le script enregistrement.php afin qu'il traite le 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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    <?php
     
    if (empty($_REQUEST['nom']) || empty($_REQUEST['prenom']) || empty($_REQUEST['adresse']) || 
        empty($_REQUEST['ville']) || empty($_REQUEST['codepostal']) || empty($_REQUEST['naissance']) || 
        empty($_REQUEST['telephone']))
     
       die("ERREUR : tous les champs doivent etre remplis."); 	
     
    if ($_REQUEST['sexe']!="masculin" && $_REQUEST['sexe']!="feminin")
     
       die("ERREUR : choisissez votre sexe.");
     
    if (preg_match("/^[\w\.-]+@[\w\.-]+\.[a-z]{2,3}$/",
        $_REQUEST ['email']) ==  false)
     
       die("ERREUR : adresse email non valide.");
     
    // connection base de donnée
     
    	$liendb = mysql_connect('localhost', 'root', '');
    	mysql_select_db ("coursphp", $liendb);
    	$sql = "INSERT INTO eleve (nom, prenom, adresse, ville, codepostal, sexe, naissance, email, telephone);
    	VALUES ('".$_REQUEST['nom']."', '".$_REQUEST['prenom']."', '".$_REQUEST['adresse']."',
    	'".$_REQUEST['ville']."', '".$_REQUEST['codepostal']."', '".$_REQUEST['sexe']."', 
    	'".$_REQUEST['naissance']."', '".$_REQUEST['email']."', '".$_REQUEST['telephone']."',)";
     
    // fin requete base de donnée
     
     
    if ($result = mysql_query($sql) !=false)    
        print("eleve ".$_REQUEST['nom']." enregistré.");
     
    else 
        print ("Echec lors de la création de la fiche.");
     
    mysql_close($liendb);
     
    ?>
    J'ai donc gentiment recopier ce que le livre explique!!! jusque la pas trop dur.
    Mais le résultat qui m'est retourné n'est pas satisfaisant du fait qu'il me retourne "Echec lors de la création de la fiche." et qu'aucun enregistrement ne s'effectue.

    Alors je ne vois pas, si ça vient de la connexion avec la base, de mon query, ou autre chose. Je tourne en ronds alors si quelqu'un voit d'ou ca vient!!!

    Toutes critiques sur mes méthodes est la bienvenue, c'est en s'exerçant qu'on s'améliore.

    Merci de votre aide.
    pixstaff

  2. #2
    Membre confirmé
    Développeur Web
    Inscrit en
    Avril 2005
    Messages
    397
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2005
    Messages : 397
    Points : 518
    Points
    518
    Par défaut
    tu as activé l'affichage des erreurs ?


    pour l'activé juste pour un script place
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ini_set("display_errors", 1);
    au début de ta page enregistrement.php


    et donne nous ce qui est mentionné ensuite


    ps : en attendant je peux te donner quelque point à modifier


    utilise de préférence $_POST par rapport à $REQUEST (dans le cas de ton formulaire en method post car à la suite d'un request on ne sait plus quelle méthode a été utilisé GET ou POST).

    pour ta requête d'insertion il est fortement recommandé d'utiliser la syntaxe

    INSERT INTO ma_table SET
    mon_champ_1 = 'valeur_1',
    mon_champ_2 = 'valeur_2',
    mon_champ_3 = 'valeur_3';

    si dans l'avenir l'ordre des champs de la table ma_table est modifié la requête fonctionnera encore vu que tu peux intervertir de cette manière :

    INSERT INTO ma_table SET
    mon_champ_2 = 'valeur_2',
    mon_champ_1 = 'valeur_1',
    mon_champ_3 = 'valeur_3';

    sans avoir de conséquence problématique.


    il n'est pas conseillé non plus d'utiliser la fonction die() à tout bout de champs


    préfère des structures du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    if($_POST['enregistrement'])
    {
     
    }
    else
    {
     
    }
    Zend PHP5 Certification
    MySQL 4 Core Certification

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    J'ai inséré le code, mais pas de changement!!!

    Il m'affiche toujours mon code d'erreur "Echec lors de la création de la fiche."
    Qui inclut que me requete (query) retourne false!!!

    Je fais les modifs ($_POST / $_REQUET) et je te tiens informé!!!

    merci pour cet essai...

    pixstaff

  4. #4
    Membre averti
    Homme Profil pro
    Consultant ERP
    Inscrit en
    Mai 2006
    Messages
    257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Consultant ERP
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2006
    Messages : 257
    Points : 318
    Points
    318
    Par défaut
    Bonjour, j'ai trouvé une petite erreur dans ton code, je crois que c de là que viens l'erreur.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <?php
    $sql = "INSERT INTO eleve (nom, prenom, adresse, ville, codepostal, sexe, naissance, email, telephone);
    VALUES ('".$_REQUEST['nom']."', '".$_REQUEST['prenom']."', '".$_REQUEST['adresse']."',
    '".$_REQUEST['ville']."', '".$_REQUEST['codepostal']."', '".$_REQUEST['sexe']."', 
    '".$_REQUEST['naissance']."', '".$_REQUEST['email']."', '".$_REQUEST['telephone']."',)";
    ?>
    Il faut enlever cette virgule en rouge.
    http://fr.obedev.com/: Un blog sur le développement web et mobile.

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    ahhh!!! pendant un moment j'avais repris espoir avec la virgule en trop!!! mais non ca ne vient pas de la.

    Je sais pas comment en deux jours la dessus, j'ai pû passer a cotés... mais bon ca m'apprendra a etre plus attentif.

    j'ai changé les $_REQUEST en $_POST et je regarde comment faire pour virer les "die".

    Merci pour la virgule othmane126 !!!

    Pixstaff

  6. #6
    Membre à l'essai
    Inscrit en
    Janvier 2006
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 13
    Points : 16
    Points
    16
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $liendb = mysql_connect('localhost', 'root', '');
    	mysql_select_db ("coursphp", $liendb);
    	$sql = "INSERT INTO eleve (nom, prenom, adresse, ville, codepostal, sexe, naissance, email, telephone);
    	VALUES ($_POST['nom'], $_POST['prenom'], $_POST['adresse'], $_POST['ville'], $_POST['codepostal'], $_POST['sexe'], $_POST['naissance'], $_POST['email'], $_POST['telephone'])";
    Je pense que tu devrais simplifierl'écriture de ta reqête, il y a des quotes et double-quotes qui à mon avis ne s'imposent pas.
    Par ailleurs, tu fermes la première partie de ta requête par un ;,
    mais à considérer que aies eu l'intention de concatèner la suite, ce n'est pas ce que tu as fait.
    A mon avis.
    Dans le cas où ça marche pas, fais déjà une récupération et un affichage des données reçus pour voir si les variables sont correctement transmises.

  7. #7
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Ok y a effectivement pas de ; a la fin de la premiere partie, donc je l'ai virée.

    Mais concernant les quotes, si je simplifies comme tu me l'as indiqué je une erreur type :

    Parse error: parse error, expecting `T_STRING' or `T_VARIABLE' or `T_NUM_STRING' in d:\internet\easyphp1-8\easyphp1-8\www\enregistrement.php on line 33

    qui apparait.

    Merci pour la virgule, mais pour les quotes je vais devoir trouver autre chose.

    pixstaff

  8. #8
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Merci a tous pour vos réponses, j'ai trouvé des tutos pas mal!!!

    Je lance les liens pour ce que ca pourra intérésser.

    http://antoine-herault.developpez.co...ls/php/upload/

    http://beaussier.developpez.com/arti...hp/mysql/blob/

    Les puristes me diront ... normal ... c'est du developpez!!! Mais comme je dis ... hein!!! bah y faut persévérer

    a bientot!!

    pixstaff

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

Discussions similaires

  1. [MySQL] Inscription des données d'un formulaire dans une base de données
    Par xjulio59 dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 25/08/2010, 14h45
  2. Enregistrer image dans une base de données
    Par charrynsasi dans le forum JDBC
    Réponses: 2
    Dernier message: 11/06/2010, 20h15
  3. Réponses: 1
    Dernier message: 03/10/2009, 13h52
  4. Réponses: 5
    Dernier message: 03/04/2009, 20h51
  5. [VBA-E] copie d'un formulaire dans un Base de données
    Par bigbozz dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 05/02/2007, 20h26

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