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 :

Insérer des données dans une table MySQL avec PHP et PDO


Sujet :

PHP & Base de données

  1. #1
    Membre du Club
    Femme Profil pro
    piano
    Inscrit en
    Décembre 2011
    Messages
    131
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Suisse

    Informations professionnelles :
    Activité : piano
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Décembre 2011
    Messages : 131
    Points : 65
    Points
    65
    Par défaut Insérer des données dans une table MySQL avec PHP et PDO
    Bonjour,

    J'essaie de faire un formulaire pour insérer des données dans ma bdd, à chaque fois l'id passe mais pas les données écrites dans les différents champs, idem lorsque je veux passer des données d'un formulaire à un autre, seul l'id passe.

    N'y arrivant pas, j'ai créé une table test avec juste trois champs : id, nom, prénom, pour faire des essais plus courts et sans modifier mes autres tables, j'ai fait deux formulaires, un pour insérer les données et un autre pour afficher les données sous forme de tableau. Le problème, c'est que cela me rajoute un id mais pas les noms et prénoms écrits dans les cases du formulaire !!!

    Voici le formulaire pour insérer les données :

    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
    <?php error_reporting (E_ALL ^ E_NOTICE); ?>
    <?php include("menu.php");?>
    <link rel="stylesheet" href="menu/dropdown_three.css" type="text/css">
    <link rel="stylesheet" href="style.css" type="text/css">
     
    <?php
     
    include("include/db_inc_pdo.php");
     
      // récupérer les valeurs 
      $id = isset($_POST['id']) ? $_POST['id'] : ''; 
      $nom = isset($_POST['nom']) ? $_POST['nom'] : ''; 
      $prenom = isset($_POST['prenom']) ? $_POST['prenom'] : '';   
     
     
      // Requête mysql pour insérer des données
      $sql = "INSERT INTO test(nom, prenom) VALUES (:nom,:prenom)";
      $res = $pdo->prepare($sql);
        $exec = $res->execute
      (array(
      ':nom'=>$nom,
      ':prenom'=>$prenom));
     
      // vérifier si la requête d'insertion a réussi
      if($exec){
        echo 'Données insérées';
      }else{
        echo "Échec de l'opération d'insertion";
      }
    echo "<p align=left> :: essai </p>";
    ?>
     
     
    <html>
      <head>
        <title>Insérer des données dans la table test</title>
      </head>
      <body>
      <form method="post" action="process.php">
      <input type="hidden" name='enregistrer' value='oui' />
          <input type="text" name="nom"><br>
          <input type="text" name="prenom"><br>
    <input type="submit" value="enregistrer" />
        </form>
      </body>
    </html>
    et voici le tableau :

    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
    <?php error_reporting (E_ALL ^ E_NOTICE); ?>
    <?php include("menu.php");?>
    <link rel="stylesheet" href="menu/dropdown_three.css" type="text/css">
    <link rel="stylesheet" href="style.css" type="text/css">
     
    <?php
      $nom = isset($_POST['nom']) ? $_POST['nom'] : ''; 
      $prenom = isset($_POST['prenom']) ? $_POST['prenom'] : '';   
    include("include/db_inc_pdo.php");
    ?>
    	<table class="bicolor" border="1"  align="center">
     
    	        <tr>
    			<th>ID</th>
    			<th>Nom</th>
    			<th>Prénom</th>
    </tr>
     
    <?php
     
    $reponse = $pdo->query('SELECT id, nom, prenom FROM test');
     
    while ($donnees = $reponse->fetch())
     
     
    {
     
    	 //On affiche les données dans le tableau
        echo "<tr>";
        echo "<td> $donnees[id] </td>";
        echo "<td> $donnees[nom] </td>";
        echo "<td> $donnees[prenom] </td>";
    	echo  "</td>";
        echo  "</tr>";
     
    }
     
    $reponse->closeCursor();
     
     
    ?>
    Voici également la table test :

    Nom : 2020-09-14 (2).png
Affichages : 2255
Taille : 8,7 Ko


    Qu'est-ce que je fais faux ? est-ce que j'ai oublié quelque chose ?

    Si j'arrive à faire ce petit bout de code, j'arriverai avec plus de champs.

    D'avance merci de m'aider à résoudre ce problème sur lequel je sèche depuis plusieurs jours

  2. #2
    Membre expert
    Avatar de Dendrite
    Femme Profil pro
    Développeuse informatique
    Inscrit en
    Juin 2008
    Messages
    2 129
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 58
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeuse informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2008
    Messages : 2 129
    Points : 3 627
    Points
    3 627
    Billets dans le blog
    8
    Par défaut
    Bonsoir.
    Je suppose que ton id est auto-incrémenté ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     $sql = "INSERT INTO test(id, nom, prenom) VALUES (NULL, :nom,:prenom)";
    D'une façon générale, teste toujours d'abord dans ton PHPMyAdmin tes requêtes SQL, et assure-toi qu'elles fonctionnent AVANT de les mettre dans ton script.
    PDO, une soupe et au lit !
    Partir de la fin est un bon moyen de retrouver son chemin. Bibi - 2020

  3. #3
    Membre du Club
    Femme Profil pro
    piano
    Inscrit en
    Décembre 2011
    Messages
    131
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Suisse

    Informations professionnelles :
    Activité : piano
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Décembre 2011
    Messages : 131
    Points : 65
    Points
    65
    Par défaut
    Citation Envoyé par Dendrite Voir le message
    Bonsoir.
    Je suppose que ton id est auto-incrémenté ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     $sql = "INSERT INTO test(id, nom, prenom) VALUES (NULL, :nom,:prenom)";
    D'une façon générale, teste toujours d'abord dans ton PHPMyAdmin tes requêtes SQL, et assure-toi qu'elles fonctionnent AVANT de les mettre dans ton script.
    Bonjour,

    Merci pour la réponse.

    Oui mon id est auto-incrémenté, J'ai testé dans PHPMyAdmin en faisant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    INSERT INTO test (nom, prenom) VALUES ('Marc', 'Durand')
    cela fonctionne, mais dans mon fichier j'ai :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      $sql = "INSERT INTO test(nom, prenom) VALUES (:nom,:prenom)";
    et cela ajoute seulement un id, cela fait la même chose avec le code que tu m'as montré
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     $sql = "INSERT INTO test(id, nom, prenom) VALUES (NULL, :nom,:prenom)";
    Je ne comprends vraiment pas pourquoi ? Est-ce un problème dans la partie html ? Je remets le code :

    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
    <?php error_reporting (E_ALL ^ E_NOTICE); ?>
    <?php include("menu.php");?>
    <link rel="stylesheet" href="menu/dropdown_three.css" type="text/css">
    <link rel="stylesheet" href="style.css" type="text/css">
     
    <?php
     
    include("include/db_inc_pdo.php");
     
      // récupérer les valeurs 
      $id = isset($_POST['id']) ? $_POST['id'] : ''; 
      $nom = isset($_POST['nom']) ? $_POST['nom'] : ''; 
      $prenom = isset($_POST['prenom']) ? $_POST['prenom'] : '';   
     
     
      // Requête mysql pour insérer des données
     
      $sql = "INSERT INTO test(id, nom, prenom) VALUES (NULL, :nom,:prenom)";
     
      $res = $pdo->prepare($sql);
        $exec = $res->execute
      (array(
     
      ':nom'=>$nom,
      ':prenom'=>$prenom));
     
      // vérifier si la requête d'insertion a réussi
      if($exec){
        echo 'Données insérées';
      }else{
        echo "Échec de l'opération d'insertion";
      }
    echo "<p align=left> :: essai </p>";
    ?>
     
    <html>
      <head>
        <title>Insérer des données dans la table test</title>
      </head>
      <body>
      <form method="post" action="process.php">
      <input type="hidden" name='enregistrer' value='oui' />
          <input type="text" name="nom"><br>
          <input type="text" name="prenom"><br>
    <input type="submit" value="enregistrer" />
        </form>
      </body>
    </html>
    Si cela peut aider, voici la table :
    Nom : 2020-09-15 (2).png
Affichages : 2246
Taille : 61,2 Ko

    D'avance merci pour ton aide et bonne journée

  4. #4
    Membre expert
    Avatar de Dendrite
    Femme Profil pro
    Développeuse informatique
    Inscrit en
    Juin 2008
    Messages
    2 129
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 58
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeuse informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2008
    Messages : 2 129
    Points : 3 627
    Points
    3 627
    Billets dans le blog
    8
    Par défaut
    Alors ce sont tes variables post qui ne sont pas récupérées. Or, je ne vois rien qui me choque dans ton formulaire, ni dans ton code PDO.
    Sauf si process.php n'est pas ta page de traitement insertion ?

    Ajoute ceci en début de code dans process.php :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    echo '<pre>';
    print_r($_POST);
    echo '</pre>';
    edit : un truc inutile, ton input de type hidden. Mets ceci à la place.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="submit" name="enregistrer" value="enregistrer" />
    PDO, une soupe et au lit !
    Partir de la fin est un bon moyen de retrouver son chemin. Bibi - 2020

  5. #5
    Membre du Club
    Femme Profil pro
    piano
    Inscrit en
    Décembre 2011
    Messages
    131
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Suisse

    Informations professionnelles :
    Activité : piano
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Décembre 2011
    Messages : 131
    Points : 65
    Points
    65
    Par défaut
    Merci, entretemps j'ai réfléchi, j'ai refait deux fichiers :

    Le premier :

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <html>
      <head>
        <title>Insérer des données dans la table test</title>
      </head>
      <body>
     <form method="post" action="test_requete1.php">
    	<input type="submit" name="enregistrer" value="enregistrer" /><br>
          <input type="text" name="nom"><br>
          <input type="text" name="prenom"><br>
     </form>
      </body>
    </html>


    et le deuxième :

    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
    <?php error_reporting (E_ALL ^ E_NOTICE); ?>
    <?php include("menu.php");?>
    <link rel="stylesheet" href="menu/dropdown_three.css" type="text/css">
    <link rel="stylesheet" href="style.css" type="text/css">
    <?php
    include("include/db_inc_pdo.php");
     
    echo '<pre>';
    print_r($_POST);
    echo '</pre>';
      // récupérer les valeurs 
    //  $id = isset($_POST['id']) ? $_POST['id'] : ''; 
      $nom = isset($_POST['nom']) ? $_POST['nom'] : ''; 
      $prenom = isset($_POST['prenom']) ? $_POST['prenom'] : '';   
     
     $sql = "INSERT INTO test(nom, prenom) VALUES (:nom,:prenom)";
     $res = $pdo->prepare($sql);
     
        $exec = $res->execute    
     
      (array(
     
      ':nom'=>$nom,
      ':prenom'=>$prenom));
     
      // vérifier si la requête d'insertion a réussi
      if($exec){
        echo 'Données insérées';
      }else{
        echo "Échec de l'opération d'insertion";
      }
    echo "<p align=left> :: essai </p>";
     
    ?>
    	<table class="bicolor" border="1"  align="center">
     
    	        <tr>
    			<th>ID</th>
    			<th>Nom</th>
    			<th>Prénom</th>
    </tr>
     
    <?php
     
     
    $reponse = $pdo->query('SELECT id, nom, prenom FROM test');
     
    while ($donnees = $reponse->fetch())
     
     
    {
     
    	 //On affiche les données dans le tableau
        echo "<tr>";
        echo "<td> $donnees[id] </td>";
        echo "<td> $donnees[nom] </td>";
        echo "<td> $donnees[prenom] </td>";
    	echo  "</td>";
        echo  "</tr>";
     
    }
     
    $reponse->closeCursor();
     
     
    ?>
    Cela fonctionne, l'enregistrement est bien effectué dans la bdd.

    J'ai essayé de l'adapter à mon "vrai" problème et là cela ne fonctionne pas, lorsque je clique sur enregistrer il ne se passe rien, il reste sur le premier fichier et rien n'est enregistré dans la bdd


    Voici le premier fichier :

    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
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    <?php error_reporting (E_ALL ^ E_NOTICE); ?>
    <?php include("menu.php");?>
    <link rel="stylesheet" href="menu/dropdown_three.css" type="text/css">
    <link rel="stylesheet" href="style.css" type="text/css">
     
    <?php
     
    include("include/db_inc_pdo.php");
     
    $reponse = $pdo->query("SELECT * FROM locataires 
    WHERE  reserve = 'oui'
    ORDER BY nom");
     
    $reponse->execute([$query]);
    $row = $reponse->fetch();
     
    ?>
    <p>Choisissez un nom :</p> <select name="choix">
     
    <?php
     
    {
     
    while ($row = $reponse->fetch())
     
        echo '<option value="'.$row['idnoms'].'">'.$row['nom']."&nbsp;&nbsp;-&nbsp;&nbsp;" .$row['prenom'].'</option>';
        }
    ?>
     
    <html>
      <head>
        <title>Insérer des données dans la table test</title>
      </head>
      <body>
      <form method="post" action="ajouterloca2.php">
    <input type="submit" name="enregistrer" value="enregistrer" /><br>
     
     
     
     	<div>
    	<label for="datearrive">Date d'arrivée : </label><input type="text" name="datearrive" label="datearrive" value="" onclick="new calendar(this);" />
    	<label for="datedepart">&nbsp;Date de départ : </label><input type="text" name="datedepart" label="datedepart" value="" onclick="new calendar(this);" />
    	<label for="datelettre">&nbsp;Date de la lettre : </label><input type="text" name="datelettre" label="datelettre" value="" onclick="new calendar(this);" />
    	<label for="nombre">&nbsp;Nombre : </label><input type="text" name="nombre" label="nombre" value="0" /></div><br />
     
     	<div><label for="prixlocation">Prix de la location : </label><input type="text" name="prixlocation" label="prixlocation" value="0.00" />
    	<label for="caution">&nbsp;Caution : </label><input type="text" name="caution" label="caution" value="0.00" />
    	<label for="linge">&nbsp;Linge : </label><input type="text" name="linge" label="linge" value="0.00" />
    	<label for="litbaby">&nbsp;Lit bébé : </label><input type="text" name="litbaby" label="litbaby" value="0.00" />
     
    	<div>
    	<label for="remarques">Remarques : </label><input type="text" name="remarques" label="remarques" value=" " />
    	<label for="paragraphesup">&nbsp;Paragraphe supplémentaire : </label><input type="text" name="paragraphesup" label="paragraphesup" value=" " />
    	<label for="enfants">&nbsp;Enfants : </label><input type="text" name="enfants" label="enfants" value=" " /></div>
    <div>
    <div class="boite1">
    <div class="case">
    <div>
    <p>	Tarifs envoyés?</p>
    	<ul>
    		<li>Oui<input type="radio" name="envoitarifs" value="1" />
    		<li>Non<input type="radio" name="envoitarifs" value="2" />
    	</ul>
    </div>
    </div>
    <div class="case">
    <div>
    <p>	Descriptif envoyé?</p>
    	<ul>
    		<li>Oui<input type="radio" name="envoidescriptif" value="1" />
    		<li>Non<input type="radio" name="envoidescriptif" value="2" />
    	</ul>
    </div>
    </div>
    <div class="case">
    <div>
    <p>	Caution restituée</p>
    	<ul>
    		<li>Oui<input type="radio" name="restitution" value="oui" />
    		<li>Non<input type="radio" name="restitution" value="non" />
    		<li>Pas de caution<input type="radio" name="restitution" value="pas de caution" />
    	</ul>
    </div>
    </div>
    </div>
    <div class="boite1">
    <div class="case">
    <div>
    <p>	Appart</p>
    	<ul>
    		<li>1<input type="radio" name="appart" value="1" />
    		<li>2<input type="radio" name="appart" value="2" />
    	</ul>
    </div>
    </div>
    <div class="case">	
    <div>
    <p>	Confirmation de réservation</p>
    	<ul>
    		<li>Oui<input type="radio" name="confirmation" value="1" />
    		<li>Non<input type="radio" name="confirmation" value="2" />
    	</ul>
    </div>
    </div>
     
    <div class="case">
    <div>
    <p>	Annulé</p>
    	<ul>
    		<li>Oui<input type="radio" name="annul" value="1" />
    		<li>Non<input type="radio" name="annul" value="2" />
    	</ul>
    </div>
    </div>
     
     
     
        </form>
      </body>
    </html>
    et le deuxième :

    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
    71
    72
    73
    74
    <?php error_reporting (E_ALL ^ E_NOTICE); ?>
    <?php include("menu.php");?>
    <link rel="stylesheet" href="menu/dropdown_three.css" type="text/css">
    <link rel="stylesheet" href="style.css" type="text/css">
     
    <?php
     
    include("include/db_inc_pdo.php");
     
    echo '<pre>';
    print_r($_POST);
    echo '</pre>';
     
     
    	$idnoms = isset($_POST['idnoms']) ? $_POST['idnoms'] : ''; 
    	$datearrive = isset($_POST['datearrive']) ? $_POST['datearrive'] : ''; 
    	$datedepart = isset($_POST['datedepart']) ? $_POST['datedepart'] : ''; 
    	$datelettre = isset($_POST['datelettre']) ? $_POST['datelettre'] : ''; 
    	$nombre = isset($_POST['nombre']) ? $_POST['nombre'] : ''; 
    	$prixlocation = isset($_POST['prixlocation']) ? $_POST['prixlocation'] : ''; 
    	$caution = isset($_POST['caution']) ? $_POST['caution'] : ''; 
    	$linge = isset($_POST['linge']) ? $_POST['linge'] : ''; 
    	$litbaby = isset($_POST['litbaby']) ? $_POST['litbaby'] : ''; 
    	$remarques = isset($_POST['remarques']) ? $_POST['remarques'] : ''; 
    	$paragraphesup = isset($_POST['paragraphesup']) ? $_POST['paragraphesup'] : ''; 
    	$enfants = isset($_POST['enfants']) ? $_POST['enfants'] : ''; 
    	$envoitarifs = isset($_POST['envoitarifs']) ? $_POST['envoitarifs'] : ''; 
    	$envoidescriptif = isset($_POST['envoidescriptif']) ? $_POST['envoidescriptif'] : ''; 
    	$restitution = isset($_POST['restitution']) ? $_POST['restitution'] : ''; 
    	$appart = isset($_POST['appart']) ? $_POST['appart'] : ''; 
    	$confirmation = isset($_POST['confirmation']) ? $_POST['confirmation'] : ''; 
    	$annul = isset($_POST['annul']) ? $_POST['annul'] : ''; 
     
     $sql = "INSERT INTO dateloca (idnoms, datearrive, datedepart, datelettre, nombre, prixlocation, caution, linge, litbaby, remarques, paragraphesup, enfants, envoitarifs, appart, envoidescriptif, confirmation, restitution, annul) (VALUES :idnoms, :datearrive, :datedepart, :datelettre, :nombre, :prixlocation, :caution, :linge, :litbaby, :remarques, :paragraphesup, :enfants, :envoitarifs, :appart, :envoidescriptif, :confirmation, :restitution, :annul)";
     
    	$res = $pdo->prepare($sql);
     
        $exec = $res->execute    
     
    	(array(
     
    ':idnoms' => $idnoms,
    ':datearrive' => $datearrive,
    ':datedepart' => $datedepart,
    ':datelettre' => $datelettre,
    ':nombre' => $nombre,
    ':prixlocation' => $prixlocation,
    ':caution' => $caution,
    ':linge' => $linge,
    ':litbaby' => $litbaby,
    ':remarques' => $remarques,
    ':paragraphesup' => $paragraphesup,
    ':enfants' => $enfants,
    ':envoitarifs' => $envoitarifs,
    ':appart' => $appart,
    ':envoidescriptif' => $envoidescriptif,
    ':confirmation' => $confirmation,
    ':restitution' => $restitution,
    ':annul' => $annul
    ));
     
      // vérifier si la requête d'insertion a réussi
      if($exec){
        echo 'Données insérées';
      }else{
        echo "Échec de l'opération d'insertion";
      }
    echo "<p align=left> :: essai </p>";
     
    ?>
    <?php
    include("tableau.php");
     
    ?>
    Merci d'avance de bien vouloir m'aider et bonne fin de journée

  6. #6
    Membre du Club
    Femme Profil pro
    piano
    Inscrit en
    Décembre 2011
    Messages
    131
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Suisse

    Informations professionnelles :
    Activité : piano
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Décembre 2011
    Messages : 131
    Points : 65
    Points
    65
    Par défaut
    Bonsoir,

    J'ai refait un test avec des fichiers plus petits et c'est toujours le même problème, je peux choisir un nom dans la liste déroulante du premier formulaire, introduire des données dans les champs, lorsque je clique sur enregistrer il passe au formulaire suivant, l'array montre bien que les données ont passé mais rien n'est inséré dans la bdd et j'ai les erreurs suivantes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Fatal error: Uncaught PDOException: SQLSTATE[42000]: Syntax error or access violation: 1064 Erreur de syntaxe près de 'VALUES NULL, NULL, NULL, NULL)' à la ligne 1 in C:\wamp64\www\chaletgestion\test_requete3.php on line 31
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    PDOException: SQLSTATE[42000]: Syntax error or access violation: 1064 Erreur de syntaxe près de 'VALUES NULL, NULL, NULL, NULL)' à la ligne 1 in C:\wamp64\www\chaletgestion\test_requete3.php on line 31
    Voici les scripts, le premier ;

    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
    <?php error_reporting (E_ALL ^ E_NOTICE); ?>
    <?php include("menu.php");?>
    <link rel="stylesheet" href="menu/dropdown_three.css" type="text/css">
    <link rel="stylesheet" href="style.css" type="text/css">
    <link rel="stylesheet" type="text/css" href="calendrier.css" /> 
    <script language="JavaScript" src="calendrier.js"></script>
     
    <?php
    include("include/db_inc_pdo.php");
    ?>
    <html>
    <body>
    <form action="test_requete3.php" method="post" ">
     
    <input type="submit" name="enregistrer" value="Enregistrer" /><br>
     
     	<div>
    	<label for="datea">Date d'arrivée : </label><input type="text" name="datea" label="datea" value="" onclick="new calendar(this);" />
    	<label for="dateb">&nbsp;Date de départ : </label><input type="text" name="dateb" label="dateb" value="" onclick="new calendar(this);" />
    	<div>
    	<label for="remarques">Note : </label><input type="text" name="note" label="note" value=" " />
    	</div>
    	</div>
     
    <div><label>Choisissez un nom : <select name="choix"></label></div>
     
    <?php
    	$reponse = $pdo->query("SELECT * from test 
    	ORDER BY nom");
     
    	$reponse->execute([$query]);
    	$row = $reponse->fetch();
    {
     
    	while ($row = $reponse->fetch())
     
        echo '<option value="'.$row['id'].'">'.$row['nom']."&nbsp;&nbsp;-&nbsp;&nbsp;" .$row['prenom'].'</option>';
        }
    ?>  
    </form>
    </body>
    </html>

    et le second (celui qui pose problème !)

    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
    <?php error_reporting (E_ALL ^ E_NOTICE); ?>
    <?php include("menu.php");?>
    <link rel="stylesheet" href="menu/dropdown_three.css" type="text/css">
    <link rel="stylesheet" href="style.css" type="text/css">
     
    <?php
     
    include("include/db_inc_pdo.php");
     
    echo '<pre>';
    print_r($_POST);
    echo '</pre>';
     
    	$id = isset($_POST['id']) ? $_POST['id'] : ''; 
    	$datea = isset($_POST['datea']) ? $_POST['datea'] : ''; 
    	$dateb = isset($_POST['dateb']) ? $_POST['dateb'] : ''; 
    	$note = isset($_POST['note']) ? $_POST['note'] : ''; 
     
    $tab = array(
    ':id' => $POST['id'],
    ':datea' => $POST['datea'],
    ':dateb' => $POST['dateb'],
    ':note' => $POST['note']
    );
     
     $sql = "INSERT INTO tesdate (id, datea, dateb, note) (VALUES :id, :datea, :dateb, :note)";
     
    echo $sql;
    	$res = $pdo->prepare($sql);
     
        $exec = $res->execute($tab);
     
     
      // vérifier si la requête d'insertion a réussi
      if(!$exec){
    echo "Une erreur est survenue : " . $res->errorCode();
      print_r($res->errorInfo());
    }
     
    ?>
    Je ne comprends pas pourquoi cela n'enregistre pas

    D'avance merci de bien vouloir m'aider et bonne soirée à tous

  7. #7
    Membre du Club
    Femme Profil pro
    piano
    Inscrit en
    Décembre 2011
    Messages
    131
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Suisse

    Informations professionnelles :
    Activité : piano
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Décembre 2011
    Messages : 131
    Points : 65
    Points
    65
    Par défaut
    Bonjour,

    J'ai fini par trouver la solution :

    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
    <?php error_reporting (E_ALL ^ E_NOTICE); ?>
    <?php include("menu.php");?>
    <link rel="stylesheet" href="menu/dropdown_three.css" type="text/css">
    <link rel="stylesheet" href="style.css" type="text/css">
    <link rel="stylesheet" type="text/css" href="calendrier.css" /> 
    <script language="JavaScript" src="calendrier.js"></script>
     
    <?php
    include("include/db_inc_pdo.php");
     
    echo '<pre>';
    print_r($_POST);
    echo '</pre>';
     
    	$id = isset($_POST['id']) ? $_POST['id'] : ''; 
    	$datea = isset($_POST['datea']) ? $_POST['datea'] : ''; 
    	$dateb = isset($_POST['dateb']) ? $_POST['dateb'] : ''; 
    	$note = isset($_POST['note']) ? $_POST['note'] : ''; 
     
    $sql = "INSERT INTO testdate (id, datea, dateb, note) VALUES (?,?,?,?)";
    $stmt= $pdo->prepare($sql);
    $stmt->execute([$id, $datea, $dateb, $note]);	
     
    ?>
    C'était tout bête et ça fonctionne

    Merci d'avoir bien voulu me lire

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

Discussions similaires

  1. [MySQL] Insérer des données dans une table avec Foreach
    Par Gogad dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 07/04/2010, 08h53
  2. Réponses: 1
    Dernier message: 23/03/2009, 13h56
  3. [MySQL] Insérer des données dans une table, mais ce n'est pas une table USER
    Par amerex dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 16/08/2008, 00h01
  4. Access: Insérer des données dans une table acces
    Par Malika_AL dans le forum VBA Access
    Réponses: 6
    Dernier message: 27/01/2008, 22h41
  5. [SQL] Insérer des données dans une table
    Par wonga dans le forum PHP & Base de données
    Réponses: 11
    Dernier message: 01/08/2007, 12h00

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