Posez votre question Signaler

Apprendre panier php

mickaelm30 185Messages postés 28 mai 2009Date d'inscription 4 mai 2011Dernière intervention - Dernière réponse le 20 avril 2011 à 01:31
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!
Lire la suite 

Apprendre panier php »

Suggestions
13 réponses
Réponse
+3
moins plus
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.
Ajouter un commentaire
Réponse
+0
moins plus
ce tutoriels devrait t'aider:

http://jcrozier.developpez.com/articles/web/panier/
Ajouter un commentaire
Réponse
+0
moins plus
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.
Ajouter un commentaire
Réponse
+0
moins plus
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
Ajouter un commentaire
Réponse
+0
moins plus
Je vous sollicite encore car mise a part dreamfeeder, aucun conseil ne m'a été donné.

unpeu d'aide svp!
Ajouter un commentaire
Réponse
+0
moins plus
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!
Ajouter un commentaire
Réponse
+0
moins plus
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!
Ajouter un commentaire
Réponse
+0
moins plus
j'ai toujours besoin de vous plz !!
Ajouter un commentaire
Réponse
+0
moins plus
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.
Ajouter un commentaire
Réponse
+0
moins plus
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
Ajouter un commentaire
Réponse
+0
moins plus
<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'];
Ajouter un commentaire
Réponse
+0
moins plus
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.
Ajouter un commentaire
Réponse
+0
moins plus
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
Ajouter un commentaire
Ce document intitulé « Apprendre panier php » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?