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 :

Problème d'insertion dans la base de données


Sujet :

PHP & Base de données

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2016
    Messages : 12
    Points : 11
    Points
    11
    Par défaut Problème d'insertion dans la base de données
    Juste pour vérifier, ce code est bien correct ? Sachant que $nom, $ingredient et $prix stocke bien les bon résultats.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    $req = $bdd->prepare('INSERT INTO Pizza(nom, ingredient, prix) VALUES(:nom, :ingredient, :prix)');
    $req->execute(array(
      'nom' => $nom,
      'ingredient' => $ingredient,
      'prix' => $prix
    ));
     
    header('Location: http://www.mon-site.fr/');
    exit();

  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
    Non, regarde les exemples de code ici pour la syntaxe :

    http://php.net/manual/fr/pdo.prepared-statements.php
    PDO, une soupe et au lit !
    Partir de la fin est un bon moyen de retrouver son chemin. Bibi - 2020

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2016
    Messages : 12
    Points : 11
    Points
    11
    Par défaut
    J'ai ça maintenant mais ça marche toujours pas, j'ai suivi la syntaxe indiqué pourtant.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    $req = $bdd->prepare('INSERT INTO Pizza(nom, ingredient, prix) VALUES(:nom, :ingredient, :prix)');
    $req->bindParam(':nom', $nom);
    $req->bindParam(':ingredient', $ingredient);
    $req->bindParam(':prix', $prix);
     
    $nom = $_POST['nom'] ;
    $ingredient = $_POST['ingredient'] ;
    $prix = $_POST['prix'] ;
     
    $req->execute();
     
    header('Location: http://www.mon-site.fr/');
    exit();

  4. #4
    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 : 39
    Localisation : France

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Tu peux préciser "ça ne fonctionne pas" ? l'insertion n'est pas faite ?
    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]

  5. #5
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2016
    Messages : 12
    Points : 11
    Points
    11
    Par défaut
    L'insertion n'est pas faite, et ça ne redirige pas vers http://www.mon-site.fr/. Ça reste sur une page blanche.

  6. #6
    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 : 39
    Localisation : France

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Donc, en gros, ça plante, mais avec les messages d'erreurs non affichés. Je suppose que $bdd est bien initialisé quelque part ?
    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]

  7. #7
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2016
    Messages : 12
    Points : 11
    Points
    11
    Par défaut
    Oui je fais au début du fichier :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    include ('../bdd.php') ;
    Et ce bdd.php fait :

  8. #8
    Membre à l'essai Avatar de __Qu0kk4__
    Homme Profil pro
    Développeur web Junior
    Inscrit en
    Juillet 2015
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur web Junior
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2015
    Messages : 15
    Points : 18
    Points
    18
    Par défaut
    Salut,

    il semblerait que dans ton dernier bout de code, tes variables sont initialisées après le requête.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    $req = $bdd->prepare('INSERT INTO Pizza(nom, ingredient, prix) VALUES(:nom, :ingredient, :prix)');
    $req->bindParam(':nom', $nom);
    $req->bindParam(':ingredient', $ingredient);
    $req->bindParam(':prix', $prix);
     
    $nom = $_POST['nom'] ;
    $ingredient = $_POST['ingredient'] ;
    $prix = $_POST['prix']
    Essaie :

    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
     
    error_reporting(E_ALL);
     
    $nom        = $_POST['nom'];
    $ingredient = $_POST['ingredient'];
    $prix       = $_POST['prix'];
     
    $req = $bdd->prepare('INSERT INTO Pizza(nom, ingredient, prix) VALUES(:nom, :ingredient, :prix)');
    $req->bindParam(':nom', $nom, PDO::PARAM_STR);
    $req->bindParam(':ingredient', $ingredient, PDO::PARAM_STR);
    $req->bindParam(':prix', $prix);
     
    try {
        $req->execute();
    } catch (PDOException $e) {
        echo "[!] ERR: ". $e->getMessage();
    }
    Il faut aussi être certain que tes "champs" dans ta base soit nommé pareil.

    Bonne journée

  9. #9
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    pour éviter toute embrouille, il faut préciser qu'il existe TROIS METHODES de requêtes préparées :

    METHODE 1 :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $req = $bdd->prepare('INSERT INTO Pizza(nom, ingredient, prix) VALUES (:nom, :ingredient, :prix)');
    $req->execute(array(
      ':nom' => $nom,
      ':ingredient' => $ingredient,
      ':prix' => $prix
    ));

    METHODE 2 :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $req = $bdd->prepare('INSERT INTO Pizza(nom, ingredient, prix) VALUES (:nom, :ingredient, :prix)');
    $req->bindParam(':nom', $nom);
    $req->bindParam(':ingredient', $ingredient);
    $req->bindParam(':prix', $prix);
     
    $req->execute();

    METHODE 3 :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $req = $bdd->prepare('INSERT INTO Pizza(nom, ingredient, prix) VALUES (:nom, :ingredient, :prix)');
    $req->bindValue(':nom', $nom, PDO::PARAM_STR);
    $req->bindValue(':ingredient', $ingredient, PDO::PARAM_STR);
    $req->bindValue(':prix', $prix, PDO::PARAM_INT);
     
    $req->execute();

    Voir :


    remarque importante :
    avec l'utilisation d'une requête préparée, il n'est pas nécessaire de "proteger" les variables trnasmises, puiqu'elles le seront lors de la préparation.

    On peut donc écrire directement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $req = $bdd->prepare('INSERT INTO Pizza(nom, ingredient, prix) VALUES (:nom, :ingredient, :prix)');
    $req->execute(array(
      ':nom' => $_POST['nom'],
      ':ingredient' => $_POST['ingredient'],
      ':prix' => $_POST['prix']
    ));
    Dernière modification par Celira ; 15/04/2016 à 09h42.

  10. #10
    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 : 39
    Localisation : France

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    A noter : bindValue utilisera la valeur de la variable à l'instant de l'appel à bindValue alors bindParam utilisera la valeur de la variable à l'instant de l'appel à execute :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    $nom = "Magarita";
    $ingredient = "Tomate";
    $prix = 10;
     
    $req = $bdd->prepare('INSERT INTO Pizza(nom, ingredient, prix) VALUES (:nom, :ingredient, :prix)');
    $req->bindValue(':nom', $nom); // ici :nom vaut Margarita
    $req->bindParam(':ingredient', $ingredient);
    $req->bindParam(':prix', $prix); // ici :prix vaut vaut 10
     
    $nom = "Reine" ;
    $prix = 15;
     
    // ici, :nom vaut toujours Margarita, mais :prix vaut 15
    $req->execute();
    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]

  11. #11
    Membre à l'essai Avatar de __Qu0kk4__
    Homme Profil pro
    Développeur web Junior
    Inscrit en
    Juillet 2015
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur web Junior
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2015
    Messages : 15
    Points : 18
    Points
    18
    Par défaut
    Salut,

    ok merci pour ces précisions. Ce n'est pas moi qui avait posé la question de départ, mais j'ai appris quelque chose .

    a+

Discussions similaires

  1. problême d'insertion dans la base de données
    Par tchimou dans le forum Bases de données
    Réponses: 5
    Dernier message: 21/03/2007, 16h33
  2. Problème d'insertion dans une base de donnèes
    Par atout dans le forum Administration
    Réponses: 14
    Dernier message: 27/12/2006, 07h07
  3. [paradox7] Problème d'insertion dans la base de données
    Par mouna201 dans le forum Bases de données
    Réponses: 4
    Dernier message: 01/02/2006, 09h47
  4. problème d'insertion dans une base de données
    Par belmansour tidjani dans le forum JDBC
    Réponses: 7
    Dernier message: 18/01/2006, 22h13
  5. [Hibernate] problème d'insertion dans la base de données
    Par Willy7901 dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 18/08/2005, 13h19

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