Apprendre panier php

mickaelm30 Messages postés 218 Date d'inscription   Statut Membre Dernière intervention   -  
hesa2020 Messages postés 15 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour à tous,

Je souhaite réaliser un panier électronique pour mon site, et malgrès tous les posts que j'ai pu lire, je ne sais toujours pas comment m'y prendre.J 'espère donc que vous pourrez éclairer ma lanterne :D

Points importants:

1)J'utilise les sessions.

2) Ma BDD surement mal construite pour facilité la création du panier: j'ai créé une table produit(numprod,nomprod...), client(numcli,nomcli...), contenir(numpanier,numprod,qté), panier(numpanier,prixtotal,moderegl,moderetrait,datecmde).

3)page "composant.php": c'est ici que j'affiche tous les produits présent dans ma BDD grace à ma requete et à la boucle while($donnees=mysql_fetch_assoc($req)) ... Pour chaque produit, il y a biensur l'option "ajouter un produit" qui ajoute le produit voulu avec sa quantitée désirée dans ma page panier.php.

Problèmes:

1) Comment faire pour ajouter le produit que le client a choisi, dans son panier.

2)Pour tous ceux qui auront la gentillesse de me venir en aide, si vous pouvez entrée dans le détails le plus possible en faisant comme si j'étais un débutant(ce que je suis peut etre d'ailleur :X), je vous en serai très reconnaissant.


Je vous remerci d'avance pour le temps que vous m'accroderez et vos réponses!
A voir également:

13 réponses

zoby44 Messages postés 818 Date d'inscription   Statut Membre Dernière intervention   199
 
Salut, le plus simple, pour faire un panier, c'est d'utiliser les sessions au maximum.
Pour chaque produit, tu fait un formulaire :
<form action="panier.php" method="post">
<input type="text" name="quantite" value="1"/>
<input type="hidden" name="id_produit" value="15"/>
<input type="submit" value="Ajouter au panier"/>
</form>


Dans la page panier.php, tu récupère les infos que tu stockes dans des session, en attendant la validation de la commande.
<?php
session_start(); // A ne pas oublier sur toutes les pages
$n = count($_SESSION['panier']); // On compte le nombre de sessions
if($n != 0) { // Si il n'y a aucun produit, on laisse le 0 sinon, on incrémente pour ne pas écraser le produit d'avant
$n++; // 
}
$_SESSION['panier'][$n]['quantite'] = $_POST['quantite'];
$_SESSION['panier'][$n]['id_produit'] = $_POST['id_produit'];
?>


Après, pour récupérer les infos :
<?php
$n = count($_SESSION['panier']);
for ($i = 0; $i<$n; $i++) {
echo $_SESSION['panier'][$i]['quantite'].'<br/>';
echo $_SESSION['panier'][$i]['id_produit'].'<br/>';
}
?>


Une fois la commande validée, tu enregistre tout ça dans la bdd :
<?php
$n = count($_SESSION['panier']);
for ($i = 0; $i<$n; $i++) {
$qte .= $_SESSION['panier'][$i]['quantite'].'-';
$id .= $_SESSION['panier'][$i]['id_produit'].'-';
}
?>

Tu entres $qte et $id dans la bdd, avec l'id du client.
En faisant juste un split('-', $qte) pour $qte et $id, tu auras l'id du produit et la quantité qui va bien.

J'espère que ça va te servir. En tout cas, le principe, c'est d'utiliser les sessions comme des array jusqu'a la validation de la commande, qui, une fois validée est entrée dans la bdd sur la même ligne.
Si tu as besoin d'autre explications , hésite pas. Après si tu as bien compris le principe, tu devrais pas avoir de mal pour la modification des quantités et la suppression des produits.
2
dreamfeeder Messages postés 253 Date d'inscription   Statut Membre Dernière intervention   54
 
0
dreamfeeder Messages postés 253 Date d'inscription   Statut Membre Dernière intervention   54
 
En ce qui concerne la bdd il faut que tu lie ton client au panier correspondant donc ajoute un champ numcli dans ta table panier qui contiendra l'identifiant du client afin de lier ces deux ci.
0
mickaelm30 Messages postés 218 Date d'inscription   Statut Membre Dernière intervention   12
 
oui j'ai déja lu ce tuto mais je t'avous que j'ai du mal a comprendre rien que le début ...

OK pour la bdd je vien d'ajouter le numcli dans la table panier! merci
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
mickaelm30 Messages postés 218 Date d'inscription   Statut Membre Dernière intervention   12
 
Je vous sollicite encore car mise a part dreamfeeder, aucun conseil ne m'a été donné.

unpeu d'aide svp!
0
mickaelm30 Messages postés 218 Date d'inscription   Statut Membre Dernière intervention   12
 
je comprends deja mieux les étapes à réaliser,

-Pour entrer chaque produit dans un formulaire, je peux mettre le formulaire dans une boucle while?

-A quoi servent mes tables contenir et panier, il n'y a aucun insert. Tu parles du split mais je ne comprends pas comment il fonctionne.

Merci pour ton aide!
0
mickaelm30 Messages postés 218 Date d'inscription   Statut Membre Dernière intervention   12
 
Voici l'affichage de mes articles dans composant.php(j'ai utilisé le formulaire comme tu me l'as dis):

<?php
while($donnees=mysql_fetch_assoc($req))

{
echo "<form action=panier.php method=POST>";

?>

<td><?php echo $donnees['nomprod']; ?></td>
<td><?php echo $donnees['prixprod']." euros"; ?></td>
<td><?php echo $donnees['duréegarantie']." ans"; ?></td>

<td><select id="quantite" name="quantite">
<option value="1">1</option>
<option value="1">2</option>
<option value="1">3</option>
<option value="1">4</option>
<option value="1">5</option>
<option value="1">6</option>
<option value="1">7</option>
<option value="1">8</option>
</select></td>
</form>
<td width=125 height=30><a href="panier.php" /><img src='btpanier.bmp' /></a></td></tr></p><br />



Et voici mon code dans panier.php:

<?php
session_start(); // A ne pas oublier sur toutes les pages
$n = count($_SESSION['panier']); // On compte le nombre de sessions
if($n != 0) { // Si il n'y a aucun produit, on laisse le 0 sinon, on incrémente pour ne pas écraser le produit d'avant
$n++; //
}
$_SESSION['panier'][$n]['quantite'] = $_POST['quantite'];
$_SESSION['panier'][$n]['nomprod'] = $donnees['nomprod'];

?>


<?php
$n = count($_SESSION['panier']);
for ($i = 0; $i<$n; $i++) {
echo $_SESSION['panier'][$i]['quantite'].'<br/>';
echo $_SESSION['panier'][$i]['nomprod'].'<br/>';

}
?>


Malheureusement, rien ne s'affiche dans panier.php!
0
mickaelm30 Messages postés 218 Date d'inscription   Statut Membre Dernière intervention   12
 
j'ai toujours besoin de vous plz !!
0
zoby44 Messages postés 818 Date d'inscription   Statut Membre Dernière intervention   199
 
Salut, c'est normal, dans ton formulaire, il manque un <input type="submit"/> pour envoyer le formulaire, et un <input type="hidden"/> avec l'id du produit pour savoir quel produit est à enregistrer dans les sessions.
Il y a aussi un problème dans le <select>, toutes les value="" sont à 1, il faut que tu les mette en fonction de la quantité, sinon le $_POST['quantite'] sera toujours égal à 1.
Enlève aussi le id="quantite", vu que tu fait une boucle dessus, tu va te retrouver avec plusieurs id="quantite" sur la page. En xHTML, un id doit être unique.
0
mickaelm30 Messages postés 218 Date d'inscription   Statut Membre Dernière intervention   12
 
C'est ok pour les quantités, ça marche.

Mais je n'arrive pas à afficher le nom du produit choisi.

tu peux m'expliquer un peu mieux le <input type="hidden"/>


merci
0
zoby44 Messages postés 818 Date d'inscription   Statut Membre Dernière intervention   199
 
<input type="hidden"/> c'est une balise que tu met dans un formulaire. Elle permet de stocker des infos sans les afficher.
Dans ton cas, tu met : <input type="hidden" name="nomprod" value="<?php echo $donnees['nomprod']; ?>"/>
et dans panier.php, tu la récupère avec : $_POST['nomprod'];
0
bloque
 
Bonjour, je suis actuellement en train de créer un site web pour un projet de programmation (en première année de BTS) et je dois donc créer un panier.
J'ai un petit problème suite à l'explication de zoby44, j'utilise ma base de donnée pour afficher plusieurs produits en fonction du choix dans le menu.
Pour le choix du produit j'ai utilisé un select afin d'avoir une liste déroulante des différents produits mais du coup je ne peux pas utiliser le input hidden pour l'id_produit (qui, dans ma base de donnée est pdt_ref)
Si vous pouviez m'aider ça m'éviterait des heures et des heures de galères :-)
Merci d'avance.
0
hesa2020 Messages postés 15 Date d'inscription   Statut Membre Dernière intervention   2
 
Le Meilleur tuto que tu puisse trouver ce trouve ici :
http://www.developphp.com/list_php_video.php
Section : E - Commerce Website Tutorial, Admin, Shopping Cart, PayPal
Open Source ICI : http://www.developphp.com/ExampleSites/Ecommerce_Series_Source/MyOnlineStore.zip

Derien =D

C'est en anglais mais tu peux comprendre seulement en regardant
0