Problème récupération données dans bdd

Résolu/Fermé
Lolo - 29 juil. 2011 à 16:34
 Lolo - 1 août 2011 à 16:02
Bonjour,

Je suis entrain de réaliser un panier pour un galerie photo e-commerce.
Le formulaire de ma galerie est prêt.
Ma requête pour l'insertion des données choisie par le client (prix/format, quantité, image) dans le bdd est faite mais rien ne sa passe. Pas de message d'erreur, ni de données enregistrées dans la bdd.
Je pense que le problème vient de ma boucle. Elle tourne dans le vide (je pense ???).
<?php
try

{
$pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
$bdd = new PDO('mysql:host=localhost;dbname=album_photos', 'root', '', $pdo_options);

$req=$bdd->prepare('SELECT chemin FROM cliches');
while ($donnees = $req->fetch())


{
if(isset($_SESSION['email']))
{
$req=$bdd->prepare('INSERT INTO panier (email_client, date_creation_panier, produit, quantite, prix_format) VALUES (:email_client, NOW(), :produit, :quantite, :prix_format)');
$req->execute(array(
'email_client'=> $_POST['email'] = $_SESSION['email'],
'produit'=> $_POST['produit'] = $donnees,
'quantite'=> $_POST['quantite'],
'prix_format'=> $_POST['prix_format']));
}
else
{
echo 'Veuillez vous identifier';
}
}

$req->closeCursor();
}
catch(Exception $e)
{
die('Erreur: '.$e->getMessage());
}
?>
De plus ma condition ne renvoie rien non plus. Ni message d'erreur, ni l'echo.
Auriez vous des idées ?
Merci.



1 réponse

Je ne connais pas le fonctionnement de ta class PDO de gestion de ta base de donnée mais quand je vois :

$req=$bdd->prepare('SELECT chemin FROM cliches');


J'imagine que derriere la requete il faut l'executer avant de faire :
while ($donnees = $req->fetch())


Surtout qu'au dessous il y a :

$req=$bdd->prepare('INSERT INTO panier (email_client, date_creation_panier, produit, quantite, prix_format) VALUES (:email_client, NOW(), :produit, :quantite, :prix_format)');
$req->execute(array(....));


Peux-tu copier le contenu de class PDO ? ou au moins la fonction prepare() ?
0
euh ??? Désolé je débute en php/MySql est je ne vois pas ce qu'est PDO ?
0
A la place de $req=$bdd->prepare('SELECT chemin FROM cliches');
j'ai mis $req=$bdd->query('SELECT chemin FROM cliches');
et l'echo s'affiche enfin mais toujours pas de données intégrées dans la bdd et en plus quand je m'identifie il me marque cette erreur :
Notice: Array to string conversion in C:\wamp\www\album_photos\panier.php on line 37
Erreur: SQLSTATE[HY000]: General error
???
0
Je ne te garantie rien mais essaye de mettre :

$req->execute(); 


avant :

while ($donnees = $req->fetch()) 
0
En ce qui concerne l'insertion, essaye deja de remplacer :
$req->execute(array(
'email_client'=> $_POST['email'] = $_SESSION['email'],
'produit'=> $_POST['produit'] = $donnees,
'quantite'=> $_POST['quantite'],
'prix_format'=> $_POST['prix_format'])); 

Par des valeurs fixe donc quelque chose comme :
$req->execute(array(
'email_client'=> 'email',
'produit'=> 'produit',
'quantite'=> '1',
'prix_format'=> 'blabla')); 

Je ne suis pas sur mais la syntaxe :
'email_client'=> $_POST['email'] = $_SESSION['email']

et
'produit'=> $_POST['produit'] = $donnees

Me semble douteuses
Je ne sais pas si c'est bien faisable ca en php...
'email_client'=> $_SESSION['email']
'produit'=> $donnees

ou
'email_client'=> $_POST['email']
'produit'=> $_POST['produit']

Serait plus cohérent
0
Merci à tous...
0