Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PDO
PDO Forum d'entraide sur PDO (PHP Data Objects) : pilote générique de bases de données avec PHP. Avant de poster -> FAQ PDO et Cours PDO
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 17/01/2012, 14h13   #1
Membre confirmé
 
Avatar de pendoRa
 
Homme
Developpeur Java
Inscription : mai 2007
Messages : 284
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 23
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Developpeur Java
Secteur : Industrie

Informations forums :
Inscription : mai 2007
Messages : 284
Points : 214
Points : 214
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 :
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
pendoRa est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/01/2012, 14h18   #2
Modérateur
 
Inscription : septembre 2010
Messages : 7 219
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 219
Points : 8 598
Points : 8 598
déjà : http://php.net/manual/fr/pdo.error-handling.php

ensuite tu prépares 2 paramètres mais t'en inserts 4 ...
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/01/2012, 14h20   #3
Membre Expert
 
Avatar de ska_root
 
Homme
Développeur informatique
Inscription : août 2005
Messages : 1 179
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 42
Localisation : France

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

Informations forums :
Inscription : août 2005
Messages : 1 179
Points : 1 580
Points : 1 580
Bonjour,

et j'ajoute :

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

if($test='ajout')
devient
if($_REQUEST['test']=='ajout')
__________________
http://cdemarche.developpez.com/

Tu as la réponse à ta question ? N'oublies pas le petit en bas à gauche de ton message...
ska_root est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/01/2012, 14h36   #4
Membre confirmé
 
Avatar de pendoRa
 
Homme
Developpeur Java
Inscription : mai 2007
Messages : 284
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 23
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Developpeur Java
Secteur : Industrie

Informations forums :
Inscription : mai 2007
Messages : 284
Points : 214
Points : 214
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..
pendoRa est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/01/2012, 14h38   #5
Modérateur
 
Inscription : septembre 2010
Messages : 7 219
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 219
Points : 8 598
Points : 8 598
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 :
isset($_POST['email']) && empty($_POST['email'])
si il existe mais qu'il est vide ?

faut te relire
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/01/2012, 14h48   #6
Membre confirmé
 
Avatar de pendoRa
 
Homme
Developpeur Java
Inscription : mai 2007
Messages : 284
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 23
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Developpeur Java
Secteur : Industrie

Informations forums :
Inscription : mai 2007
Messages : 284
Points : 214
Points : 214
J'ai corrigé effectivement cela n'avait aucun sens.


j'ai aussi corrigé la déclaration de la variable test (if isset($_POST['test'])) ..)
pendoRa est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/01/2012, 14h52   #7
Modérateur
 
Inscription : septembre 2010
Messages : 7 219
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 219
Points : 8 598
Points : 8 598
montre ton nouveau code
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/01/2012, 15h44   #8
Membre Expert
 
Avatar de ska_root
 
Homme
Développeur informatique
Inscription : août 2005
Messages : 1 179
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 42
Localisation : France

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

Informations forums :
Inscription : août 2005
Messages : 1 179
Points : 1 580
Points : 1 580
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 :
if(isset($_REQUEST['test'])) {
__________________
http://cdemarche.developpez.com/

Tu as la réponse à ta question ? N'oublies pas le petit en bas à gauche de ton message...
ska_root est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/01/2012, 16h40   #9
Membre confirmé
 
Avatar de pendoRa
 
Homme
Developpeur Java
Inscription : mai 2007
Messages : 284
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 23
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Developpeur Java
Secteur : Industrie

Informations forums :
Inscription : mai 2007
Messages : 284
Points : 214
Points : 214
Oui j'ai effectivement corrigé. J'ai pour le moment ce code la, et l'INSERT ne se fait toujours pas.

Code :
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>
 
 
   }
pendoRa est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/01/2012, 16h54   #10
Modérateur
 
Inscription : septembre 2010
Messages : 7 219
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 219
Points : 8 598
Points : 8 598
met un else à ton if,

et execute tout seul ça fait rien,

faut afficher les erreur sinon tu va jamais t'en sortir
Code :
1
2
display_errors sur On
error_reporting sur E_ALL | E_STRICT
(dans ton php.ini)
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/01/2012, 16h01   #11
Membre confirmé
 
Avatar de pendoRa
 
Homme
Developpeur Java
Inscription : mai 2007
Messages : 284
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 23
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Developpeur Java
Secteur : Industrie

Informations forums :
Inscription : mai 2007
Messages : 284
Points : 214
Points : 214
Bonjour,

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

Code :
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
pendoRa est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 21h38.


 
 
 
 
Partenaires

Hébergement Web