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 :

[SQL] Problème insertion dans Base SQL après saisie d'un formulaire


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de Yagami_Raito
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 106
    Par défaut [SQL] Problème insertion dans Base SQL après saisie d'un formulaire
    J'aimerai ajouter une personne à ma table personnel dont voici la constitution :

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Id_Perso  int(10) auto_increment              
    Nom_Perso  varchar(30)              
    Prenom_Perso  varchar(30)
    Emploi  varchar(100) 
    Id_Section  varchar(5)
    Salaire_Perso  float(10,0)

    Voici le code ma requête sql :

    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
    <?php
    if (isset($_POST['nom']) && isset($_POST['prenom']) && isset($_POST['emploi']) && isset($_POST['section']) && isset($_POST['salaire']))
    {
    // On utilise la fonction PHP htmlentities pour éviter d'enregistrer du code HTML dans la table
    $nom = htmlentities ($_POST['nom'],ENT_QUOTES);
    $prenom = htmlentities ($_POST['prenom'],ENT_QUOTES);
    $emploi = htmlentities ($_POST['emploi'],ENT_QUOTES);
    $section = htmlentities ($_POST['service'],ENT_QUOTES);
    $salaire = htmlentities ($_POST['salaire'],ENT_QUOTES);
     
    $sql2 = "INSERT INTO personnel (Id_Perso, Nom_Perso, Prenom_Perso, Emploi, Id_Section, Salaire_Perso) VALUES('','$nom','$prenom','$emploi','$service','$salaire')";
     
    $query2 = mysql_query($sql2) or die('Erreur SQL !'.$sql2.''.mysql_error()); 
     
    echo 'L\'employé a bien été inseré';
    }
    mysql_close(); 
    ?>
    L'erreur ne viendrait pas du auto-increment ?
    Je ne vois pas du tout mon erreur, Merci de me conseiller !!

  2. #2
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Par défaut


    Je suppose que tu fais bien la connexion à la base de données.
    Si tu donnais l'erreur que le sytème t'a renvoyé, on irait plus vite

    Au fait, si dans ta balise code, tu ajoutes le langage, ça colore le code [CODE=php] ou [CODE=SQL]
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  3. #3
    Membre Expert
    Inscrit en
    Janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 291
    Par défaut
    A vue de nez comme ca je ne la vois pas non plus, mais tu ne précises pas quelle est ton erreur?
    Parce que soit tu n'affiches rien parce que tu n'entres pas dans le if (certains des $_POST[] ne sont pas remplis correctement) soit c'est une erreur mysql et dans ce cas il faut que tu nous donnes l'erreur.

    EDIT: grillé par Celira ! Faut que j'arrete de faire autre chose au milieu d'un post

  4. #4
    Membre confirmé Avatar de Yagami_Raito
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 106
    Par défaut
    J'aimerais bien vous indiquer l'erreur mais il ne m'indique aucune erreur.

    Lorsque je je suis sur cette page le dernier echo s'affiche, celui du else :

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    else	{
    		echo 'Erreur : l\'employé n\'a pas été inséré';
    		}

    Voici le code de ma page si jamais :

    Code php : 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
    <?php
    		session_start();
     
    		mysql_connect("localhost", "root", ""); // Connexion à MySQL
    		mysql_select_db("evian royal resort"); // Sélection de la base evian royal resort
     
    ?>
     
     
     
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
        <head>
            <title>Ajouter employé</title>
            <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
        </head>
        <body>
     
    		<p><center><h1>Ajout de personnel</h1></center></p> <hr>
    		<p> <?php 
    		// on récupère le numéro identifiant de l'utilisateur grâce à la variable session.
    		$id = $_SESSION['Id_CDS'];
    		// Grâce à l'identifiant on récupère le service de l'utilisateur pour qu'il ne puisse insérer qu'au sein de son service
    		$sql ="SELECT Service FROM `chef_de_service` WHERE Id_CDS='$id'";
    		$query = mysql_query($sql) or die($sql . ' : '  . mysql_error());
    		$data=  mysql_fetch_assoc($query);
    		$service=$data['Service'];	
    		?>
     
    		<form action="" method="post">
    	<p>
    <li>Nom employé 		: <input type="text" name="nom" /> </br>
    <li>Prénom employé  	: <input type="text" name="prenom" />  </br> 
    <li>Emploi      		: <input type="text" name="emploi" />  </br>
    <li>Section     		: <input type="text" name="service" value="<?php echo $service; ?>"READONLY>  </br>
    <li>Salaire     		: <input type="float" name="salaire" />  </br></br>
    <input type="submit" value="Inserer" />
    	</p>
           </form>
       </body>
    </html>
     
    		<?php
    if (isset($_POST['nom']) && isset($_POST['prenom']) && isset($_POST['emploi']) && isset($_POST['section']) && isset($_POST['salaire']))
    		{
    		// On utilise la fonction PHP htmlentities pour éviter d'enregistrer du code HTML dans la table
    		$nom = htmlentities ($_POST['nom'],ENT_QUOTES);
    		$prenom = htmlentities ($_POST['prenom'],ENT_QUOTES);
    		$emploi = htmlentities ($_POST['emploi'],ENT_QUOTES);
    		$section = htmlentities ($_POST['service'],ENT_QUOTES);
    		$salaire = htmlentities ($_POST['salaire'],ENT_QUOTES);
     
    		$sql2 = "INSERT INTO personnel (Id_Perso, Nom_Perso, Prenom_Perso, Emploi, Id_Section, Salaire_Perso) VALUES('','$nom','$prenom','$emploi','$service','$salaire')";
    		$query2 = mysql_query($sql2) or die('Erreur SQL !'.$sql2.''.mysql_error()); 
     
    		echo 'L\'employé a bien été inseré';
    		}
    else	{
    		echo 'Erreur : l\'employé n\'a pas été inséré';
    		}
    		mysql_close(); 
    		?>

    EDIT : Merci Celira pour l'information [CODE=php]

  5. #5
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Par défaut
    A priori, si tu as le message du else, c'est que le if n'est pas validé
    Question : ton message c'est après avoir soumis le formulaire ou avant ?

    Tel qu'il est écrit, lors du premier chargement de la page (avant soummission du formulaire), ça doit t'afficher le fomulaire avec en dessous un message "l'utilisateur n'a pas été inséré". C'est ça ton problème?

    [off] >> koopajah : un bon truc pour éviter de se faire griller : tu fais prévisualisation du message avant d'envoyer. ça met les messqges en dessous à jour et ça te permet de voir si quelqu'un a répondu dans l'intervalle
    >> Raito : de rien, j'ai trouvé ça par hasard en voulant indiquer qu'un code était en sql au lieu d'être en php [/off]
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  6. #6
    Membre confirmé Avatar de Yagami_Raito
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 106
    Par défaut
    J'aimerais que sur ma page il y ai le formulaire que l'utilisateur remplit et s'il oubli un champ ou quelque chose comme ca que ca lui re-affiche le formulaire avec la phrase l'employé n'a pas été inséré. Voila un problème et le deuxième c'est que le INSERT ne se fait pas, lorsque je test le formulaire et que je vais voir dans ma base l'employé n'a pas été inséré.

    Merci

  7. #7
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Par défaut
    Donc tu as une amélioration à rajouter et un problème à résoudre.

    D'abord le problème : tes champs sont bien remplis, le système ne te renvoie pas d'erreur, mais ça ne fait pas l'insertion...
    Bon, on va appliquer la methode de debugage n°1, à savoir : mettre des echos partout Après chaque affectation, ajoutes un echo, genre :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    $nom = htmlentities ($_POST['nom'],ENT_QUOTES);
    echo " nom : $nom";
    ...
    $sql2 = "INSERT INTO personnel ...";
    echo " sql2 : $sql2";
     
    // et aussi en dehors du if (au début par exemple)
    echo $_POST;
    et vérifies qu'il n'y a pas des choses bizarres.

    Pour l'amélioration, il faut ajouter des value=$_POST['la_variable'] un peu partout (mais ça, je vais vérifier la syntaxe )
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 15/12/2010, 17h02
  2. Problème : Insertion dans base de donnée
    Par guillaume62 dans le forum Requêtes
    Réponses: 11
    Dernier message: 01/12/2010, 14h13
  3. Insert dans base sql erroné
    Par krapoulos dans le forum Langage
    Réponses: 1
    Dernier message: 18/10/2010, 06h14
  4. Réponses: 2
    Dernier message: 23/11/2006, 10h37
  5. [SQL] Problème de " dans requête SQL
    Par cciocc dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 19/05/2006, 10h22

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