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 :

PDO Insert Into [PDO]


Sujet :

PHP & Base de données

  1. #1
    Membre éclairé Avatar de pendoRa
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Mai 2007
    Messages
    317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2007
    Messages : 317
    Par défaut PDO Insert Into
    Bonjour,

    après plusieurs recherche et de temps passé a essayer de rajouter des données dans ma base, je poste ici pour mon code car je ne vois vraiment pas se qui cloche !


    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
    <?php
    include ("connexion.php"); // la connexion fonctionne ( login du site )
    if($test='ajout') {
            if(isset($_POST['id_membre']) && !empty($_POST['id_membre']))
    {
            if(isset($_POST['email']) && empty($_POST['email']))
            { 
               $req = array($id_membre, $email, $password, $pseudo);
     
               $stmt = $_bdd->prepare('INSERT INTO membres(id_membre, email) VALUES(?,?)');
               $stmt = execute($req);
           }
        }
    }?>
     
    <form method="post" ACTION='index.php?test=ajout'>
    ID : <input type="text" name="id_membre"><br>
    email : <input type="text" name"email"><br>
    <input type="submit" value="ENVOYER" style="cursor:hand;"></form>
    Je ne comprend pas pourquoi l'insert ne s'effectue pas la base !

    Merci pour vos eclairssissements

  2. #2
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    déjà : http://php.net/manual/fr/pdo.error-handling.php

    ensuite tu prépares 2 paramètres mais t'en inserts 4 ...

  3. #3
    Membre Expert
    Avatar de ska_root
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2005
    Messages
    1 203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Août 2005
    Messages : 1 203
    Par défaut
    Bonjour,

    et j'ajoute :

    une condition s'effectue avec l'opérateur "==" et non "="

    if($test='ajout')
    devient
    if($_REQUEST['test']=='ajout')

  4. #4
    Membre éclairé Avatar de pendoRa
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Mai 2007
    Messages
    317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2007
    Messages : 317
    Par défaut
    Bonjour,

    j'ai corrigés les incohérences avec la requettes et la condition.

    J'avais déja rajouté : $_bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); mais je n'ai rien qui remonte..

  5. #5
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    rajoute des else à tes if tu verras bien si ca rentre ou pas dans les conditions

    ps : empty fait déjà office de isset

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    isset($_POST['email']) && empty($_POST['email'])
    si il existe mais qu'il est vide ?

    faut te relire

  6. #6
    Membre éclairé Avatar de pendoRa
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Mai 2007
    Messages
    317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2007
    Messages : 317
    Par défaut
    J'ai corrigé effectivement cela n'avait aucun sens.


    j'ai aussi corrigé la déclaration de la variable test (if isset($_POST['test'])) ..)

  7. #7
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    montre ton nouveau code

  8. #8
    Membre Expert
    Avatar de ska_root
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2005
    Messages
    1 203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Août 2005
    Messages : 1 203
    Par défaut
    Citation Envoyé par pendoRa Voir le message
    j'ai aussi corrigé la déclaration de la variable test (if isset($_POST['test'])) ..)
    Attention, comme je te l'avais indiqué auparavant, la clé "test" est envoyé dans l'URI via l'attribut "action" de la balise "form", tu la récupère donc soit avec "$_GET" soit avec "$_REQUEST" !!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(isset($_REQUEST['test'])) {

  9. #9
    Membre éclairé Avatar de pendoRa
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Mai 2007
    Messages
    317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2007
    Messages : 317
    Par défaut
    Oui j'ai effectivement corrigé. J'ai pour le moment ce code la, et l'INSERT ne se fait toujours pas.

    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
    <?php
    //include ("connexion.php");
     
    try
    {
    $_bdd = new PDO('mysql:host=localhost;dbname=electrofield', 'root', '');
    $_bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);
    }catch(Exception $e) {
    die ('Echec ! : '.$e->getMessage());
    }
     
    $test = (isset($_GET['test'])) ? $_GET['test'] : '';
    $id_membre = (isset($_POST['id_membre'])) ? $_POST['id_membre'] : '';
    $email = (isset($_POST['email'])) ? $_POST['email'] : '';
     
    if($test=='ajout' && $id_membre!="" && $email!="")
     
    {
     
    $stmt = $_bdd->prepare('INSERT INTO membres(id_membre, email) VALUES(:id_membre, :email)');
    $stmt = execute(array(':id_membre' => $id_membre, ':email' => $email));
    }
     
    ?>
       <form method="post" ACTION='index.php?test=ajout'>
        ID : <input type="text" name="id_membre"><br>
        eMail : <input type="text" name="email"><br>
    <input type="submit" value="ENVOYER"
       style="cursor:hand;"></form>
     
     
       }

  10. #10
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    met un else à ton if,

    et execute tout seul ça fait rien,

    faut afficher les erreur sinon tu va jamais t'en sortir
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    display_errors sur On
    error_reporting sur E_ALL | E_STRICT
    (dans ton php.ini)

  11. #11
    Membre éclairé Avatar de pendoRa
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Mai 2007
    Messages
    317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2007
    Messages : 317
    Par défaut
    Bonjour,

    j'ai résolu mon problème, merci de votre aide !

    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
    <?php 
     
    include("connexion.php");
     
    	$test = (isset($_POST['test'])) ? $_POST['test'] : '';
    	$test_id = (isset($_POST['test_id'])) ? $_POST['test_id'] : '';
    	$email = (isset($_POST['email'])) ? $_POST['email'] : '';
    if($test=='ajout')
    	{
    		//$requete=$_bdd->prepare('INSERT INTO membres(:id_membre, :email)');
    		$sql = "INSERT INTO membres(id_membre, email) VALUES(:id_membre, :email)";
     
    		$stmt = $_bdd->prepare($sql);
     
    		$stmt->execute(array(':id_membre'=> $test_id, ':email' => $email));
     
    } else {
    		echo '<p>Erreur lors de l\'insertion : </p>';
    	}
    	?>
     
     <form method="post" ACTION='index.php?p=formulaire'>
       id : <input type="text" name="test_id"><br>
        pwd : <input type="text" name="email"><br>
        <input type="hidden" name="test" value="ajout"><br>
    	<input type="submit" value="ENVOYER"
       style="cursor:hand;"></form>
    Le soucis venait du ACTION=index.php?test=ajout, la redirection était donc mauvaise. Maintenant je reste sur ma page formulaire.php et l'INSERT s'effectue.


    Merci

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

Discussions similaires

  1. Erreur d'Insert into PDO
    Par Francisco22 dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 04/04/2015, 01h19
  2. [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
  3. [PDO] PDO MySQL INSERT INTO rien ne s'insere.
    Par jano_dave dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 17/12/2009, 10h49
  4. erreur SQL ...INSERT INTO
    Par naidinp dans le forum ASP
    Réponses: 20
    Dernier message: 18/09/2003, 11h38
  5. Insert Into + Date
    Par BoeufBrocoli dans le forum SQL
    Réponses: 10
    Dernier message: 13/08/2003, 11h23

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