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 :

Réaliser un INSERT INTO depuis un formulaire


Sujet :

PHP & Base de données

  1. #1
    Candidat au Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Octobre 2022
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Octobre 2022
    Messages : 2
    Points : 2
    Points
    2
    Par défaut Réaliser un INSERT INTO depuis un formulaire
    Bonjour,

    Je rencontre un problème qui dure depuis un moment : je n'arrive pas depuis un formulaire à insérer des données dans ma base de donnée PHPMYADMIN.

    À chaque fois que je valide mon formulaire, il m'affiche le message suivant : Une erreur est survenue.
    Au lieu de m'afficher : "Article ajouté avec le numéro $Id".

    Rien ne s'ajoute en base de données.

    Est-ce que quelqu'un pourrait m'aider ?
    Merci d'avance

    Voici mon code :

    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
    63
    64
    65
    66
    67
    68
    <?php
    var_dump($_POST);
    //On traite le formulaire
    if(!empty($_POST)){
    	//Post n'est pas vide, on vérifie que toutes les données sont présentes
    	if(
    		isset($_POST["TYPE"]) AND isset($_POST["NOM"])
    		&& !empty($_POST["TYPE"]) && !empty($_POST["NOM"])
    	){
    		//Le Formulaire est complet
    		//On récupere les données en les protéfeant (faille XSS)
    		//On retire toute balise du titre
    		$TYPE =strip_tags($_POST["TYPE"]);
    		// on neutralise toute balise du NOM
     
    		$NOM = htmlspecialchars($_POST["NOM"]);
     
    		//On peut les enregistrer
     
    		$bdd = new PDO('mysql:host=localhost;dbname=bdd;charset=utf8', 'root', '');
     
    		//On écrit la Requete
     
    		$sql = "INSERT INTO 'item' ('TYPE','NOM') VALUES (:TYPE, :NOM)";
     
    		// on prepare la requete
     
    		$query = $bdd->prepare($sql);
     
    		//On injecte les valeurs
     
    		$query->bindvalue(":TYPE", $TYPE, PDO::PARAM_STR);
    		$query->bindvalue(":NOM", $NOM, PDO::PARAM_STR);
     
    		//on execture la requete
    		$query->execute()){
    			die("Une erreur est survenue");
    		}
     
    		//On récupère l'id de l'article
    		$id = $bdd->lastInsertId();
     
    		die ("Article ajouté avec le numéro $Id");
     
    	}else {
    		die("Le formulaire est incomplet");
    	}
    }
     
    ?>
    <html>
    <head>
    	<title>Insersion BDD</title>
    	<meta charset="utf-8">
     
    </head>
    <body>
    	<form method="POST">
    		<div>
    		<label for="TYPE">TYPE</label>
    		<input type="text" name="TYPE" id="TYPE">
    		</div>
    			<div>
    		<label for="NOM">NOM</label>
    		<input type="text" name="NOM" id="NOM">
    		</div>
    		<button type="Submit">ENREGISTRER</button>
    	</form>

  2. #2
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 219
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 219
    Points : 8 450
    Points
    8 450
    Billets dans le blog
    17
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sql = "INSERT INTO 'item' ('TYPE','NOM') VALUES (:TYPE, :NOM)";
    Il est incorrect de délimiter des noms de colonnes ou de tables avec des '
    ' sert à délimiter des chaînes

    Si besoin de délimiter un nom de table/colonnes il faut utiliser " (si option ANSI_QUOTES de MySQL actif) ou ` (propriétaire MySQL)
    et ce n'est nécessaire que si tu as un nom spécial (avec une espace par exemple)

    Et pour en savoir plus sur ton erreur, il existe des méthodes ::errorInfo() :
    https://www.php.net/manual/fr/pdo.errorinfo.php
    https://www.php.net/manual/fr/pdosta....errorinfo.php

  3. #3
    Candidat au Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Octobre 2022
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Octobre 2022
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sql = "INSERT INTO `item` (`TYPE`,`NOM`) VALUES (:TYPE, :NOM)";
    Je viens de modifier mon code

    Voici l'erreur que ça me retourne : PDOStatement::errorInfo(): Array ( [0] => 00000 [1] => [2] => ) Une erreur est survenue

    Je n'arrive pas à voir d'où provient l'erreur dans le code

    Avez-vous une piste ?

    Merci d'avance

  4. #4
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 219
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 219
    Points : 8 450
    Points
    8 450
    Billets dans le blog
    17
    Par défaut
    00000 n'est pas une erreur.

    Montre-nous ton nouveau script.

    Sur le précédent le die() est potentiellement toujours exécuté et il y a une parenthèse qui traine.

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

Discussions similaires

  1. [MySQL] PDO insert into depuis un formulaire n'ecrit pas dans ma bdd
    Par petinico83 dans le forum PHP & Base de données
    Réponses: 13
    Dernier message: 30/12/2013, 17h51
  2. Problème récupération du fichier depuis son formulaire
    Par zikyoubi dans le forum Développement Web en Java
    Réponses: 5
    Dernier message: 17/08/2013, 14h26
  3. Réponses: 4
    Dernier message: 24/04/2007, 16h45
  4. Réponses: 5
    Dernier message: 03/04/2007, 16h11
  5. Réponses: 3
    Dernier message: 26/04/2006, 08h16

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