Rechercher : dans
Par :

Apprendre panier php

Dernière réponse le 9 jun 2009 à 16:00:15 mickaelm30, le 8 jun 2009 à 17:11:15 
 Signaler ce message aux modérateurs

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!

Configuration: Windows XP Internet Explorer 6.0

Meilleures réponses pour « Apprendre panier php » dans :
[PHP] Upload de fichiers VoirLe langage PHP permet de gérer des fichiers envoyés (uploadés) grâce à un formulaire HTML. Formulaire d'envoi de fichiers Configuration de PHP pour permettre l'upload Récupération du fichier avec PHP Formulaire d'envoi de fichiers La...
[PHP] Notice: Undefined index: VoirSi vous utilisez les tableaux $_POST ou $_GET pour récupérer les variables de vos formulaires ou autres, il se peut que vous tombiez sur cette erreur: Notice: Undefined index 'champs du tableau' in 'chemin du fichier php en cours d'execution' on line...
[PHP] Parse error, unexpected T_STRING, expecting ',' or ';' VoirCette erreur, fréquente, se produit notamment lorsqu'un guillemet est présent dans une chaîne délimitée par ce même type de guillemets, par exemple :
Télécharger PHP Edit VoirPHPEdit est un environnement de développement intégré (IDE) sous Windows pour le langage PHP. Il offre un grand nombre de fonctionnalités permettant de développer plus efficacement : Coloration syntaxique Auto-complétion des fonctions Débuggeur...
PHP - Récupération de données VoirPHP rend très simple la récupération de données envoyées par l'intermédiaire de formulaires HTML. Création d'un formulaire Grâce à la balise FORM du langage HTML, il est très simple de créer des formulaires comprenant : des champs de saisie des...
PHP - Bases de données VoirPhp permet un interfaçage très simple avec un grand nombre de bases de données. Lorsqu'une base de données n'est pas directement supportée par Php, il est possible d'utiliser un driver ODBC, pilote standard pour communiquer avec les bases de...
PHP - Les fichiers VoirLa gestion des fichiers avec PHP Avec PHP, la création ou la lecture de fichiers est, une fois de plus, assez simple. Il existe une multitude de fonctions dédiées à l'utilisation des fichiers. La communication entre le script PHP et le fichier...

1

dreamfeeder, le 8 jun 2009 à 17:32:33
Répondre à dreamfeeder

2

dreamfeeder, le 8 jun 2009 à 17:38:49

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.

Répondre à dreamfeeder

3

mickaelm30, le 8 jun 2009 à 17:41:05

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

Répondre à mickaelm30

4

mickaelm30, le 8 jun 2009 à 21:57:47

Je vous sollicite encore car mise a part dreamfeeder, aucun conseil ne m'a été donné.

unpeu d'aide svp!

Répondre à mickaelm30

5

zoby44, le 8 jun 2009 à 22:41:41
  • +1

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. Il est souvent plus rapide de chercher que d'attendre une réponse... Google est notre ami.

Répondre à zoby44

6

mickaelm30, le 9 jun 2009 à 08:42:51

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!

Répondre à mickaelm30

7

mickaelm30, le 9 jun 2009 à 10:42:42

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!

Répondre à mickaelm30

8

mickaelm30, le 9 jun 2009 à 14:26:55

J'ai toujours besoin de vous plz !!

Répondre à mickaelm30

9

zoby44, le 9 jun 2009 à 15:00:12

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. Il est souvent plus rapide de chercher que d'attendre une réponse... Google est notre ami.

Répondre à zoby44

10

mickaelm30, le 9 jun 2009 à 15:50:47

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

Répondre à mickaelm30

11

 zoby44, le 9 jun 2009 à 16:00:15

<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']; Il est souvent plus rapide de chercher que d'attendre une réponse... Google est notre ami.

Répondre à zoby44