Vous n'êtes pas identifié(e).
Pages :: 1
bonjour,
apres avoir créé un catalogue depuis une base de données, j'aimerais creer un panier pour que le client puisse choisir ce qu'il veut.
j'ai trouvé pleins de tutos mais tous sont tres mal expliqué et ne montre q'un exemple mais n'explique pas ce qui m'interresse.
lien vers le catalogue en travaux
j'ai copié session_start(); en haut de chacune de mes pages
apres je suis perdu.^^'
j'ai créé une page 'panier' a l'interrieur de laquelle j'ai rentré ca:
//verification du panier
if (!isset ($_SESSION[['panier']))
//initilisation du panier
$_SESSION['panier'] = array();
//rangement
$_SESSION['panier'] ['IDBDD'] = array();
$_SESSION['panier'] ['Quantite'] = array();
$_SESSION['panier'] ['prix'] = array();
$_SESSION['panier'] ['Nom'] = array();
$_SESSION['panier'] ['Reference'] = array();
$_SESSION['panier'] ['Fraisport'] = array();
//ajout de l'article
array_push($_SESSION['panier']['']
?>
<table width="600" border="1" align="center" bordercolor="#999966">
<tr>
<td width="369" height="104" bordercolor="#FF9900" bgcolor="#6699FF"><table width="600" border="0">
<tr>
<td width="100" rowspan="3"><img src=<?php echo $donnees['image']; ?> /></td>
<td width="230"><?php echo $donnees['Nom']; ?></td>
<td width="64"><label></label></td>
<td width="157"><div align="right">Quantité: </div></td>
<td width="6"><input type="int" onclick="cancelBuble()" name="Quantite" value="1" size="1" maxlength="1" method="post" /></td>
<td width="17"><?php echo $Quantite['Quantite']; ?></td>
</tr>
<tr>
<td> </td>
<td width="64"><div align="right"></div></td>
<td><div align="right">prix: </div></td>
<td colspan="2"><?php echo $donnees['prix']; ?> €</td>
</tr>
<tr>
<td>réf: <?php echo $donnees['Reference']; ?></td>
<td><div align="right"></div></td>
<td><div align="right">+<?php echo $donnees['Fraisport']; ?> € de frais de port</div></td>
<td colspan="2"><div align="right"><a href="panier.php5?action=ajout&l=LIBELLEPRODUIT&q=QUANTITEPRODUIT&p=PRIXPRODUIT" onclick="window.open(this.href, '',
'toolbar=no, location=no, directories=no, status=yes, scrollbars=yes, resizable=yes, copyhistory=no, width=600, height=350'); return false;"><img src="../images/cadi.png" alt="ajouter au cadi" width="24" height="22" /></a></div></td>
</tr>
<a href="panier.php5?action=ajout&l=LIBELLEPRODUIT&q=QUANTITEPRODUIT&p=PRIXPRODUIT" onclick="window.open(this.href, '',
'toolbar=no, location=no, directories=no, status=yes, scrollbars=yes, resizable=yes, copyhistory=no, width=600, height=350'); return false;"> </a>
</table></td>
<?php
}
$reponse->closeCursor(); // Termine le traitement de la requête
?>
</tr>
</table>
ce que j'aimerais c'est que mes articles se mettent en page suivant le meme shema que sur la page du catalogue et dans les tutos c'est juste un array d'un article exemple donc je ne sais pas comment faire.
en plus sur la page du catalogue, j'aimerais que le bouton ajouter au cadi ajoute l'article mais ca ne fonctionne pas.
pleaze help
Hors ligne
salut,
hum le code la c'est un fourbit pas possible
alors :
- pourquoi les sessions ? parce que c'est un moyen simple (relativement sécurisé) de reconnaitre la personne qui navigue sur ton site.
- comment fonctionnent les sessions ? si tu ne sais pas je t'invite a lire le cours sur le sujet.
- a tu regardé le source html de ta page ? (celle que tu met en lien) tu a pour le lien sur l'image du caddie <a href="Commande.php?prod=%22.$donnees[" idbdd']."'=""> donc la c'est clair tu un problème de concaténation sur le lien.
Le principe de base pour un caddie
- une variable de session (qui peut être appelé panier)
- Pas besoin de ce tout ce qui est dans ton code, il te suffit d'y mettre l'id et la quatitée du produit dans le caddie. pour cela, en général, on met la référence en clef et la quantité dans le tableau ce qui veut dire
$_SESSION['panier'][reference] = quantité; c'est tout.
tu va donc avoir un tableau ($_SESSION['panier']) qui va contenir les quantités commandées et la référence
comment ajouter ?
il faut un lien comme le tiens <a href="?prod=reference&action=ajoutpanier">ajouter un article</a>
que veut dire ce lien ? le ?permet d'indiquer la page courante, ça veut dire que l'on va faire l'ajout dans le panier sur la même page que celle qui affiche le catalogue (c'est plus simple ça évite une redirection ensuite).
donc en haut de catalogue.php
voila pour l'ajout quelque soit l'article. C'est vraiment basique, il serait bon, par exemple, de vérifier si la référence existe, si tu l'a en stock etc).
comment afficher le panier ?
- il faut récupérer les infos des produits, pour cela rien de plus simple, la fonction array_key retourne un tableau contenant les clef d'un tableau.
la requete SQL devient simple $select = 'SELECT nom, description, prix etc from tableproduit where reference in ('.implode(',',array_key($_SESSION['panier']).')';
ensuite dans le traitement de la requête tu récupère la quantité dans le tableau panier et tu fait le calcul
par exemple
après il te faut adapter la requête pour avoir les bonnes infos (nom des champs, jointure sur autre table etc)
il te faut sauvegarder la commande quelque part ? (le mieux serait dans une table ce qui pourrait t'orienter vers un panier dans le SGBD plutôt qu'en session, bien que pour la commande tu n'ai pas besoin de mettre le tout dans un table tu garde ça pour la validation de la commande.
exemple de table commande
CREATE TABLE produitscommandes(
id INT UNSIGNED NOT NULL AUTO_INCREMENT,
idcommande INT UNSIGNED NOT NULL,
reference INT NOT NULL,
quantite INT NOT NULL,
PRIMARY KEY(id)
)TYPE=myisam;
avec une telle structure tu a des commandes (tables commandes) et des produits liés à la commande (table produitscommandes).
dans la table commande tu à les infos nécessaire qui sont la référence de la commande, la référence client (qui est en fait la clef primaire de la table client) cela permet de savoir à qui est la commande.
la seconde table contient les articles de chaque commande.
Le prix totale de la commande étant calculé à la volée (tu peut le faire en SQL, à la limite tu peut ajouter un champ à la première table pour limiter l'utilisation du SGBD mais pas vraiment utile).
j'ai fait au plus simple mais perso j'utiliserais des tables innodb pour utiliser les clefs étrangères et forcer intégrité des données des tables (impossible d'avoir une référence d'article qui ne serait pas dans la table des articles etc).
voila comment répondre à ta question "simplement".
ce n'est pas compliqué mais il faut être à l'aise avec les sessions et les requêtes SQL.
@+
Il en faut peu pour être heureux pompompompompompompompompompompom
Hors ligne
ca ne marche pas il me sort une erreur :
Parse error: syntax error, unexpected T_VARIABLE in /homez.20/espacelo/www/Pages/panier.php5 on line 19
ce qui correspond a cette ligne:
$select = 'SELECT reference,nom, description, prix,livraison from tableproduit where reference in ('.implode(',',array_key($_SESSION['panier']).')';
et je n'arrive pas a mettre le doigt dessus
Hors ligne
c'est simple manque la parenthèse fermant de l'impode ...
je te conseil un editeur de txt qui colorise la syntaxe et indique les correspondances des parenthèses. (ou tu peu ausss tester netbeans, qunata etc)
@+
Il en faut peu pour être heureux pompompompompompompompompompompom
Hors ligne
Pages :: 1