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 :

Insertion de donnée sql [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 19
    Points : 11
    Points
    11
    Par défaut Insertion de donnée sql
    Bonsoir, j'ai un problème avec ma base de donnée elle est censé ajouter un client avec id auto incrémenter.
    la saisie ce fait avec 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
    50
    51
    52
    53
    54
    55
    56
    <!DOCTYPE html>
    <html>
    <head>
    	<link rel="stylesheet" type="text/css" href="styleform.css">
    	<meta charset="utf-8">
    	<title>a propos</title>
    </head>
    <div id="page">
    <?php include('header2.php') ?>
     
    <body>
    <form method="post" action="saisir.php">
    	<label>mdp</label>
    		<input type="password" name="pass"></p><br>
    	<label>Nom</label>
    		<input type="text" name="nomCl"></p><br>
    	<label>Prénom</label>
    		<input type="text" name="prenomCl"></p><br>
    	<label>Adresse</label>
    		<input type="text" name="adresse"></p><br>
    	<label>Code postal</label>
    		<input type="text" name="codePostal"></p><br>
    	<label>Téléphone</label>
    		<input type="phone" name="tel"></p><br>
    	<label>email</label>
    		<input type="mail" name="email"></p><br>
    	<label>Date de naissance</label>
    		<input type"date" name="dateDeNaissance"></p><br>
    	<label>Departement de naissance</label>
    		<input type="text" name="departementDeNaissance"></p><br>
    	<label>Ville de naissance</label>
    		<input type="text" name="villeDeNaissance"></p><br>
    	<label>nationnalité</label>
    		<input type="text" name="nationnalite"></p><br>
    	<label>csp</label>
    		<input type="text" name="csp"></p><br>
    	<label>Situation de famille</label>
    		<select name="situationDeFamille">
    			<option value="Celibataire">Célibataire</option>
    			<option value="Marie">Marié/ée</option>
    			<option value="Divorce">Divorcé/é</option>
    			<option value="Veuf">Veuf/Veuve</option>
    		</select></p><br>
    	<label>Situation du logement</label>
    		<select name="situationDuLogement">
    			<option value="locataire">Locataire</option>
    			<option value="Propriaitaire">Propriaitaire</option>
    		</select></p><br>
    	<label>CG</label>
    		<input type="checkbox" name="cg">Accepté les CGV.
    	</p><br>
    	<label>Validez</label>
    		<input type="submit" name="validez">
    </form>
    </body>
    </html>
    voici le php
    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
    <?php
    $nomCl=$_POST['nomCl'];
    $prenomCl=$_POST['prenomCl']; 
    $adresse=$_POST['adresse']; 
    $codePostal=$_POST['codePostal']; 
    $tel=$_POST['tel']; 
    $email=$_POST['email']; 
    $dateDeNaissance=$_POST['dateDeNaissance']; 
    $departementDeNaissance=$_POST['departementDeNaissance']; 
    $villeDeNaissance=$_POST['villeDeNaissance']; 
    $nationnalite=$_POST['nationnalite']; 
    $csp=$_POST['csp'];
    $situationDeFamille=$_POST['situationDeFamille']; 
    $situationDuLogement=$_POST['situationDuLogement'];  
    $cg=$_POST['cg']; 
     
    if($bdd= mysqli_connect('localhost','root','','dandybank')){
    	echo("Connexion OK");
    	try {
    		$req="INSERT INTO client ( 'nomCl', 'prenomCl', 'adresse', 'codePostal', 'tel', 'email', 'dateDeNaissance', 'departementDeNaissance', 'villeDeNaissance', 'nationnalite', 'csp', 'situationDeFamille', 'situationDuLogement', 'cg') VALUES ('', '$prenomCl', '$nomCl', '$adresse', '$codePostal', '$tel', '$email', '$dateDeNaissance', '$departementDeNaissance', '$villeDeNaissance', '$nationnalite', '$csp', '$situationDeFamille', '$situationDuLogement', '$cg')";
    		echo("insert OK");
    	} catch (Exception $e) {
    		echo($e);
    	}};
    ?>
    voici qu'il affiche
    Connexion OKinsert OK
    si quelqu'un peut donnée des indices, merci.

  2. #2
    Membre confirmé
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2008
    Messages
    504
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2008
    Messages : 504
    Points : 470
    Points
    470
    Par défaut
    T'as oublié de dire quel était le problème...

  3. #3
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2011
    Messages
    351
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2011
    Messages : 351
    Points : 582
    Points
    582
    Par défaut
    Salut,

    Est-ce tu n'aurais pas tout simplement oublié d'exécuter ta requête ?
    Quelque chose comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mysqli_query($bdd, $req);

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 19
    Points : 11
    Points
    11
    Par défaut
    Citation Envoyé par comode Voir le message
    T'as oublié de dire quel était le problème...
    Si il m'affiche ok mais quand je vais sur php my admin pour consulté les données il n'y a rien.

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 19
    Points : 11
    Points
    11
    Par défaut
    Citation Envoyé par _Thomas Voir le message
    Salut,

    Est-ce tu n'aurais pas tout simplement oublié d'exécuter ta requête ?
    Quelque chose comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mysqli_query($bdd, $req);
    j'utilise la méthode pdo.

  6. #6
    Membre actif Avatar de Vespiras
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2012
    Messages
    168
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2012
    Messages : 168
    Points : 265
    Points
    265
    Par défaut
    Tu utilises peut-être PDO, mais il n y a aucune instruction query ou prepare dans ton code PHP ... lol.

    EDIT : et d'ailleurs tu n'utilises aucune méthode de PDO.

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    338
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 338
    Points : 192
    Points
    192
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $req="INSERT INTO client ( 'nomCl', 'prenomCl', 'adresse', 'codePostal', 'tel', 'email', 'dateDeNaissance', 'departementDeNaissance', 'villeDeNaissance', 'nationnalite', 'csp', 'situationDeFamille', 'situationDuLogement', 'cg') VALUES ('', '$prenomCl', '$nomCl', '$adresse', '$codePostal', '$tel', '$email', '$dateDeNaissance', '$departementDeNaissance', '$villeDeNaissance', '$nationnalite', '$csp', '$situationDeFamille', '$situationDuLogement', '$cg')";
    Tu as mis tes variables entre cote '.

    Astuce affiche ta requete :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $req="INSERT INTO client ( 'nomCl', 'prenomCl', 'adresse', 'codePostal', 'tel', 'email', 'dateDeNaissance', 'departementDeNaissance', 'villeDeNaissance', 'nationnalite', 'csp', 'situationDeFamille', 'situationDuLogement', 'cg') VALUES ('', '$prenomCl', '$nomCl', '$adresse', '$codePostal', '$tel', '$email', '$dateDeNaissance', '$departementDeNaissance', '$villeDeNaissance', '$nationnalite', '$csp', '$situationDeFamille', '$situationDuLogement', '$cg')";
    echo $req;
    apres tu peux la copier coller dans phpmyadmin

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 19
    Points : 11
    Points
    11
    Par défaut
    quand j' execute la requete
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    INSERT INTO client ( 'nomCl', 'prenomCl', 'adresse', 'codePostal', 'tel', 'email', 'dateDeNaissance', 'departementDeNaissance', 'villeDeNaissance', 'nationnalite', 'csp', 'situationDeFamille', 'situationDuLogement', 'cg') VALUES ('', 'buccanon', 'mitch', 'rue de la plage', '90200', '0606060606', 'email@lapotse.net', '1985-05-05', 'floride', 'miami', 'usa', 'plagiste', 'Celibataire', 'locataire', '1')

    lors de l'affichage j'ai bien les valeur mais elle ne s'insert pas dans la base
    le résultat de echo $sql_insert
    connection OK
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
     INSERT INTO client ( 'nomCl', 'prenomCl', 'adresse', 'codePostal', 'tel', 'email', 'dateDeNaissance', 'departementDeNaissance', 'villeDeNaissance', 'nationnalite', 'csp', 'situationDeFamille', 'situationDuLogement', 'cg') VALUES ('', 'buccanon', 'mitch', 'rue de la plage', '90200', '0606060606', 'email@lapotse.net', '1985-05-05', 'floride', 'miami', 'usa', 'plagiste', 'Celibataire', 'locataire', '1')

    voici ce que m'affiche sql dans phpmyadmin
    #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''', 'nomCl', 'prenomCl', 'adresse', 'codePostal', 'tel', 'email', 'dateDeNaissan' at line 1

  9. #9
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2011
    Messages
    351
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2011
    Messages : 351
    Points : 582
    Points
    582
    Par défaut
    Tu passes 15 valeurs pour 14 champs, est-ce que la requête suivante fonctionne ? (j'ai juste supprimé la première valeur) :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    INSERT INTO client ( 'nomCl', 'prenomCl', 'adresse', 'codePostal', 'tel', 'email', 'dateDeNaissance', 'departementDeNaissance', 'villeDeNaissance', 'nationnalite', 'csp', 'situationDeFamille', 'situationDuLogement', 'cg') VALUES ('buccanon', 'mitch', 'rue de la plage', '90200', '0606060606', 'email@lapotse.net', '1985-05-05', 'floride', 'miami', 'usa', 'plagiste', 'Celibataire', 'locataire', '1')

  10. #10
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 19
    Points : 11
    Points
    11
    Par défaut
    salut thomas non cela ne change rien il y a un champs qui est un id qui s'auto incrémente.

  11. #11
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2011
    Messages
    351
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2011
    Messages : 351
    Points : 582
    Points
    582
    Par défaut
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    INSERT INTO client (nomCl, prenomCl, adresse, codePostal, tel, email, dateDeNaissance, departementDeNaissance, villeDeNaissance, nationnalite, csp, situationDeFamille, situationDuLogement, cg) VALUES ('buccanon', 'mitch', 'rue de la plage', '90200', '0606060606', 'email@lapotse.net', '1985-05-05', 'floride', 'miami', 'usa', 'plagiste', 'Celibataire', 'locataire', '1')

    Sans les quotes autour des champs ça devrait aller mieux

    PS : nationalité ne prend qu'un 'n'

  12. #12
    Membre du Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mars 2014
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2014
    Messages : 67
    Points : 63
    Points
    63
    Par défaut sa avance
    j 'ai modifié le code mais j'ai toujour une erreur
    Warning: PDOStatement::execute(): SQLSTATE[HY093]: Invalid parameter number: parameter was not defined in C:\xampp\htdocs\bank\saisir2.php on line 44
    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
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    <?php
    $nomCl=$_POST['nomCl'];
    $prenomCl=$_POST['prenomCl']; 
    $adresse=$_POST['adresse']; 
    $codePostal=$_POST['codePostal']; 
    $tel=$_POST['tel']; 
    $email=$_POST['email']; 
    $dateDeNaissance=$_POST['dateDeNaissance']; 
    $departementDeNaissance=$_POST['departementDeNaissance']; 
    $villeDeNaissance=$_POST['villeDeNaissance']; 
    $nationalite=$_POST['nationalite']; 
    $csp=$_POST['csp'];
    $situationDeFamille=$_POST['situationDeFamille']; 
    $situationDuLogement=$_POST['situationDuLogement'];  
    $cg= (isset($_POST['cg']));
    echo $cg;
     
      $source='mysql:host=localhost;dbname=bank';
      $user='root';
      $password='';
      $numCl='';
     
      $bd= new PDO($source, $user, $password);
      try {
        $reponse = $bd->query('SELECT * FROM client');
        echo"OK";
        $req = $bd->prepare('INSERT INTO client(numCl, nomCl, prenomCl,
         adresse, codePostal, tel, email, dateDeNaissance,
          departementDeNaissance, villeDeNaissance, nationalite,
           csp, situationDeFamille, situationDuLogement, cg)
            VALUES(:id, :nomCl, :prenomCl, :adresse, :codePostal,
             :tel, :email, :dateDeNaissance,:departementDeNaissance,
              :villeDeNaissance, :nationalite, :csp, :situationDeFamille,
               :situationDuLogement, :cg)');
      $req->execute(array('numCl' => $numCl,
        'nomCl' => $nomCl,'prenomCl'=> $prenomCl,
        'adresse'=> $adresse,'codePostal'=> $codePostal,
        'tel'=> $tel,'email'=> $email,'dateDeNaissance'=> $dateDeNaissance,
        'departementDeNaissance'=> $departementDeNaissance,
        'villeDeNaissance'=> $villeDeNaissance,'nationalite'=> $nationalite,
        'csp'=> $csp,'situationDeFamille'=> $situationDeFamille,
        'situationDuLogement'=> $situationDuLogement,
        'cg'=> $cg,));
     
    echo 'client ajouté';
        }
       catch (PDOException $e) {
        echo"Fail";
        $e.getMessage();
      }
      while ($donnees = $reponse->fetch()){
      echo "<br>";
      echo $donnees['numCl'];
      echo $donnees['nomCl'];
      echo $donnees['prenomCl'];
      echo $donnees['adresse'];
      echo $donnees['codePostal'];
      echo $donnees['tel'];
      echo $donnees['email'];
      echo $donnees['dateDeNaissance'];
      echo $donnees['departementDeNaissance'];
      echo $donnees['villeDeNaissance'];
      echo $donnees['nationalite'];
      echo $donnees['csp'];
      echo $donnees['situationDeFamille'];
      echo $donnees['situationDuLogement'];
      echo $donnees['cg'];
    }
      $reponse->closeCursor();
      ?>
    le $cg, retourne la valeur d'une checkbox. quand je fais echo $cg j'ai bien la valeur 1 qui est retourné.

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

    Informations forums :
    Inscription : Janvier 2010
    Messages : 1
    Points : 4
    Points
    4
    Par défaut
    à la ligne 32 tu as "VALUES(:id,", or id n'est pas spécifie dans le tableau que tu passes en paramètre à execute(), d'ou l'erreur "Invalid parameter number"

  14. #14
    Membre actif Avatar de Vespiras
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2012
    Messages
    168
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2012
    Messages : 168
    Points : 265
    Points
    265
    Par défaut
    Citation Envoyé par ealexis Voir le message
    à la ligne 32 tu as "VALUES(:id,", or id n'est pas spécifie dans le tableau que tu passes en paramètre à execute(), d'ou l'erreur "Invalid parameter number"
    Tout à fait d'accord ! A la préparation de ta requête tu as du coup un champ que tu veux remplir avec un intitulé 'id'. Sauf que quand tu charges ton tableau dans la requête tu n'as strictement aucun titre de colonne de tableau nommé 'id'. En fait pour te simplifier la vie, pourquoi ne fais-tu pas ça :

    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    $req = $bd->prepare("INSERT INTO client(numCl, nomCl, prenomCl,
          adresse, codePostal, tel, email, dateDeNaissance,
          departementDeNaissance, villeDeNaissance, nationalite,
          csp, situationDeFamille, situationDuLogement, cg)
          VALUES('".$numCl."', '".$nomCl."', '".$prenomCl."', '".$adresse."', '".$codePostal."',
          '".$tel."', '".$email."', '".$dateDeNaissance."','".$departementDeNaissance."',
          '".$villeDeNaissance."', '".$nationalite."', '".$csp."', '".$situationDeFamille."',
          '".$situationDuLogement."', '".$cg."')");
     $req->execute();

    En admettant que tu protèges bien tes champs PHP avant l'insertion en base ... tu économises la création d'un tableau. Et puis c'est (pour ma part en tout cas) un peu plus lisible. Mais je ne suis pas tout le monde

  15. #15
    Membre du Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mars 2014
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2014
    Messages : 67
    Points : 63
    Points
    63
    Par défaut Résolu
    Merci de votre aide je n'avais pas vu le id que j'aurai du remplacer par numCl.
    Pour ce qui est de la requête j'ai suivi un tuto est la seul manière qui était décrite.
    Merci a vous.

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

Discussions similaires

  1. Insertion de données SQL via VB.net
    Par jdrift dans le forum VB.NET
    Réponses: 2
    Dernier message: 12/03/2011, 18h46
  2. Probleme d'insertion de donnée sql avec zend server
    Par thebarbarius dans le forum Zend
    Réponses: 0
    Dernier message: 06/03/2010, 11h34
  3. PB Insertion en base de données (Sql serveur)
    Par titou250 dans le forum ASP
    Réponses: 1
    Dernier message: 11/07/2006, 17h15
  4. [SQL] Problème insertion de données
    Par griese dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 28/06/2006, 12h09
  5. Réponses: 7
    Dernier message: 27/01/2006, 15h57

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