Pb récupération nom de photo dans bdd

Résolu/Fermé
Lolo - 28 juil. 2011 à 15:47
 Lolo - 1 août 2011 à 16:01
Bonjour,

Je suis en train de créer un album photo e-commerce. Je souhaiterais que mes clients est le choix parmis toutes les photos et puissent les acheter. Sur ma page achat il y a les icônes des photos, le choix du format et de la quantité.

J'ai créé un formulaire pour afficher ces données. Elles se présentent sous forme de volet déroulant.

<form method="post" action="panier.php" style="margin-top:5px; margin-left:150px;" enctype="multipart/form-data">

<p>
<label for="prix_format">Prix unitaire</label>
<select name="prix_format" id="prix_format">
<option value="format 10x13 : 30€">format 10x13 : 30€</option>
<option value="format 13x17 : 40€">format 13x17 : 40€</option>
<option value="format 30x40 : 50€">format 30x40 : 50€</option>
</select> <br/>

<label for="quantite">Quantité</label>
<select name="quantite" id="quantite">
<option value="un_exemplaire">1</option>
<option value="deux_exemplaires">2</option>
<option value="trois_exemplaires">3</option>
</select>

</p>

<input type="submit" value="Ajouter dans le panier"/>
</form>

Pour récupérer ces données dans ma base j'ai mis en place cette requête :

<?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 nom FROM cliches WHERE nom = ?');
$req=$bdd->prepare('INSERT INTO panier (email_client, date_creation_panier, nom, quantite, prix_format) VALUES (:email_client, NOW(), :nom, :quantite, :prix_format)');
$req->execute(array(
'email_client'=> $_POST['email'] = $_SESSION['email'],
'produits'=> $_POST['nom'],
'quantite'=> $_POST['quantite'],
'prix_format'=> $_POST['prix_format']));


$req->closeCursor();
}
catch(Exception $e)
{
die('Erreur: '.$e->getMessage());
}
?>

Mon problème est que je ne sais pas comment faire pour que la photo choisi s'enregistre aussi dans la bdd via ma requête ???

Merci de votre aide...



A voir également:

3 réponses

leducthomas Messages postés 20 Date d'inscription jeudi 3 mars 2011 Statut Membre Dernière intervention 1 août 2011
28 juil. 2011 à 16:04
Bonjour,

Bon je t'avoue que j'ai un peu eu la fleme de tout lire mais ton problème est un problème ^^
Tu ne peux pas stocker des images dans ta bdd ...
Il faut stocker l'adresse d'une image stocker dans un dossier.
Je n'ai peut être pas très bien compris ton explication mais je crois que tu as une galerie de photo et lorsque tu clique sur une photo tu peux choisir différents paramètres (format quantité ... ) avant de l'ajouter au panier.

Déjà 1 : Pk fais ton panier sous forme de bdd ??? La technique la plus simple serai de le faire sous forme de cookie et seulement ensuite de l'ajouter à ta base.

2 : Quand quelqu'un clique sur une photo de ta galerie, il arrive sur une page avec l'adresse de ta photo dans une variable ? Pk alors, ne pas stocker cette adresse ... tout simplement ...

3 : pardonne moi si je n'ai rien compris, et que je suis HS
0
En fait j'ai trouvé tout un script pour créer mon panier et il récupère les données par POST.
Et puis je ne connais pas le fonctionnement des cookies (oups..)

Je sais mon mess est très long et peut être pas très précis mais je ne sais trop comment être plus claire...

Il n'y a pas de chemin de photo qui s'affiche quand tu cliques dessus. Son chemin est censé s'enregistrer directement dans la bdd et le panier récupérer ce chemin pour afficher la photo en petite vignette.

C'est cela que je ne sais pas faire.
0
leducthomas Messages postés 20 Date d'inscription jeudi 3 mars 2011 Statut Membre Dernière intervention 1 août 2011
Modifié par leducthomas le 28/07/2011 à 16:29
Ton site ne serai pas en ligne par hasard ???
Parce que ça m'aiderait pas mal à comprendre ...

Dis moi où je me trompe :

1 : Tu as une galerie photo (ou du moins un étalage)
2 : Quand tu clique sur la photo, ça te dirige vers le formulaire que tu nous a posté ?
3 : L'issu de ce formulaire est l'enregistrement dans la bdd d'un article se composant de la photo, de l'email client, de la date de création du panier, du nom, de la quantité, et du prix du format.
4 : Les photos que tu vends sont déjà sur ton serveur ( le client ne peut pas uploader de photo ? )
5 : tu affiches bien une miniature de la photo dans ta galerie.
6 : tu as l'adresse des images dans la page galerie.
7 : tu envoie l'utilisateur sur la page de ton form par un lien
8 : Ce lien transmet des valeurs en GET à ta page de form ?
9 : tu envoie donc l'adresse en GET à ton form ?
10 : ton form envoie bien les données à ta page php/bdd en POST
11 : tu envoie bien l'adresse de ta photo à ta page php
0
Désolé pas encore... En pleine création et je débute.

1. Une galerie
2. La photo n'est pas cliquable. Il y a la photo et dessous les volets déroulants pour choisir le format/prix et la quantité. Tous ça sur une même page.
3. Tout à fait exacte
4. Non le client ne peut pas télécharger les photos. Se sont des photos perso (pro) en vente.
5. Dans ma galerie (même endroit que pour l'achat) les photos sont en vignettes en effet. Elles doivent apparaître sous même forme dans le panier.
6. Aucune adresse image n'apparaît dans mon site. Le but étant de limiter le copiage. Seul la photo apparaît
7. Le lien de mon form amène jusqu'au panier
8. Les valeurs sont transmises en POST à ma requête sql qui insère les données dans la bdd
9. tout se passe en POST
10. oui
11. ???
0
leducthomas Messages postés 20 Date d'inscription jeudi 3 mars 2011 Statut Membre Dernière intervention 1 août 2011
Modifié par leducthomas le 28/07/2011 à 18:34
A oui en effet je n'avais pas pensé au lien visible ^^

Et bien moi, voilà ce que je te propose :

En gros dans ta base tu auras une table PHOTO avec l'id de ta photo, son nom et son adresse, et l'adresse de sa miniature.
(l'id peut-être remplacer par l'adresse de la miniature)

Dans ton formulaire (galerie) :

$req="SELECT id,nom FROM PHOTO"; 

(récup de ta requete dans un objet ou tableau $photos) 

foreach($photos as $photo) 
{ 
echo"
     <form method="post" action="panier.php" style="margin-top:5px; margin-left:150px;" enctype="multipart/form-data">  

    <input type=\"hidden\" name =\"id_photo\" value=\"$photos->id\">
    <p>  
            <label for="prix_format">Prix unitaire</label>  
            <select name="prix_format" id="prix_format">  
                      <option value="format 10x13 : 30€">format 10x13 : 30€</option>  
                      <option value="format 13x17 : 40€">format 13x17 : 40€</option>  
                      <option value="format 30x40 : 50€">format 30x40 : 50€</option>  
           </select> <br/>  

<label for="quantite">Quantité</label>  
<select name="quantite" id="quantite">  
<option value="un_exemplaire">1</option>  
<option value="deux_exemplaires">2</option>  
<option value="trois_exemplaires">3</option>  
</select>  

</p>  

<input type="submit" value="Ajouter dans le panier"/>  
</form>  "
} 



et enfin dans ta page php
tu fais une requete en fonction de l'id pour avoir l'adresse ...

ne copie colle pas .. j'ai oublié plein dantislash ^^
0
Merci beaucoup j'y vois un peu plus claire.
Serais tu juste comment on fait pour écrire du texte dans un formulaire (sans zone sélectionnables input, select...) et qu'il soit récupéré dans une requête en POST ???
0
Alors on y est presque... J'ai mis dans mon formulaire la balise <input type="image" .... />
<form method="post" action="panier.php" style="margin-top:5px; margin-left:150px;">

<input type="image" Style="width:150px; margin-top: 75px; margin-left: 5px; border: ridge 2px pink;" src="photos/gite205106.jpg" name="produit" alt="Macro" />
<p>
<label for="prix_format">Prix unitaire</label>
<select name="prix_format" id="prix_format">
<option value="format 10x13 : 30€">format 10x13 : 30€</option>
<option value="format 13x17 : 40€">format 13x17 : 40€</option>
<option value="format 30x40 : 50€">format 30x40 : 50€</option>
</select> <br/>

<label for="quantite">Quantité</label>
<select name="quantite" id="quantite">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
</select>

</p>

<input type="submit" value="Ajouter au panier"/>
</form>

Puis ma requête:
<?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())

$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']));


$req->closeCursor();
}
catch(Exception $e)
{
die('Erreur: '.$e->getMessage());
}
?>

Problème : ma page panier s'affiche mais rien ne s'enregistre dans ma bdd ????
0
leducthomas Messages postés 20 Date d'inscription jeudi 3 mars 2011 Statut Membre Dernière intervention 1 août 2011
30 juil. 2011 à 11:20
Bonjour, bonjour !

Je ne te suit plus du tout ^^
Tu as lu mon code ??
<input type="hidden" name="id_photo" value="id_image" > est un champ caché ou tu peux mettre l'id de la photo.

après tu le récupère comme ça :

session_start();// tu as bien enregistré le mail lors de l'authentification ?
$id_photo=$_POST['id_photo'];

pour la requête ton script est assez bizarre et moi j'utilise plutôt tout simplement :

if(isset($_SESSION['email'])
{

$connexion = mysql_connect('localhost', 'root', '') OR die('Erreur de connexion');

mysql_select_db('album_photos') OR die('Sélection de la base impossible');

$req_ajout="INSERT INTO panier (email_client, date_creation_panier, produit, quantite, prix_format) VALUES (\"$_SESSION['email']\", NOW(), $id_photo, $_POST['quantite'], $_POST['prix_format'])";

$query_ajout=mysql_query($req_ajout);

if(!$query_ajout)
{
echo "la requête à échoué";
}


}
else
{
echo "la session n'est pas active";
}
0