Bonjour,
je commence le "panier" via les SESSIONS.
J'ai fais pour commencer un exemple assez simple. J'arrive à ajouter des éléments, à vider l'entièreté de mon panier. Par contre j'ai un problème pour afficher le contenu. Il m'affiche "Array" au lieu de l'intitulé de chaque produits. J'ai également un problème qui est sans doute lié à cela c'est que je n'arrive pas à supprimer un élément.
Voici mon code, si quelqu'un à une idée.
D'avance merci
Mes fonctions
Code php : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68 <?php /* ------------------------ */ /* Déclaration de Fonctions */ /* Pour panier */ /* ------------------------ */ /* => Fonction ajout d'un produit <= */ function ajout($produit) { $new_prod['produit']=$_GET['pro_nom']; $new_prix['prix']=$_GET['prix']; echo '<p>Produit <u>'.$new_prod['produit'].'</u> a été ajouté</p>'; array_push($_SESSION['panier']['produit'],$new_prod); array_push($_SESSION['panier']['prix'],$new_prix); } /* => Vider le panier <= */ function vider() { echo '<p>Le panier est vidé</p>'; unset($_SESSION['panier']); } /* => Calcul contenu du panier <= */ function total_panier() { if(!empty($_SESSION['panier']['produit'])) { $panier=count($_SESSION['panier']['produit']); return $panier; } else { $panier=0; return $panier; } } /* => Affichage du panier <= */ function affiche_panier() { echo '<table id="tableau" border="1" width="500px" height="300px">'; echo '<thead>'; echo '<tr>'; echo '<th scope="col" id="">Produits</th>'; echo '<th scope="col" id="">Prix</th>'; echo '<th scope="col" id="">Choix</th>'; echo '</tr>'; echo '</thead>'; echo '<tbody>'; $panier=count($_SESSION['panier']['produit']); for ($i=0; $i<$panier; $i++) { echo '<tr>'; echo '<td>'.$_SESSION['panier']['produit'][$i].'</td>'; echo '<td>'.$_SESSION['panier']['prix'][$i].'</td>'; echo '<td><a href="'.$_SERVER['PHP_SELF'].'?choix=supprimer&produit='.$_SESSION['panier']['produit'][$i].'">Supprimer cet article</a></td>'; echo '</tr>'; } echo '</tbody>'; echo '</table>'; } ?>
Ma page ou je vois mes produits et ou je peux en ajouter ou vider mon panier.
Code php : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99 <?php session_start(); /*On vérifie si le panier existe*/ if(!isset($_SESSION['panier'])) { /* Initialisation du panier */ $_SESSION['panier'] = array(); /*Subdivision du panier*/ $_SESSION['panier']['produit'] = array(); $_SESSION['panier']['prix'] = array(); } ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Document sans nom</title> </head> <body> <p>Liste de nos produits</p> <?php include('connex.inc.php'); $idcom=connex('panierdim', 'myparam'); mysql_query("SET NAMES utf8"); /*TRES IMPORTANT -> permet d'éviter les problèmes d'affichage d'accents*/ include('function.inc.php'); ?> <?php /* En Cas d'ajout d'article */ /* ------------------------ */ if (isset($_GET['pro_nom'])) { $produit=$_GET['pro_nom']; ajout($produit); } /* Vider le panier */ /* ------------------------ */ if (isset($_GET['choix'])=="vider") { vider(); } ?> <?php echo '<p>Votre panier contient actuellement '.total_panier().' articles</p>'; $panier=total_panier(); /* Requete à la base */ $request_products=mysql_query("SELECT pro.pro_id, pro.pro_nom, pro.prix FROM t_produits_pro pro ORDER BY pro.pro_nom ASC") or die ("Sélection de la base impossible"); /* Tableau de produits + prix */ echo '<table id="tableau" border="1" width="500px" height="300px">'; echo '<thead>'; echo '<tr>'; echo '<th scope="col" id="">Produits</th>'; echo '<th scope="col" id="">Prix</th>'; echo '<th scope="col" id="">Choix</th>'; echo '</tr>'; echo '</thead>'; echo '<tbody>'; while ($donnees_products=mysql_fetch_array($request_products)) { echo '<tr>'; echo '<td>'.$donnees_products['pro_nom'].'</td>'; echo '<td>'.$donnees_products['prix'].'</td>'; echo '<td><a href="'.$_SERVER['PHP_SELF'].'?pro_nom='.$donnees_products['pro_nom'].'&prix='.$donnees_products['prix'].'" id="ajout" ">Ajouter au panier</a></td>'; echo '</tr>'; } ?> </tbody> </table> <!--FIN DE TABLEAU--> <p><a href="<?php echo $_SERVER['PHP_SELF']; ?>?choix=vider">Vider mon panier</a></p> <!-- <p><a href="index.php?choix=vider">Vider mon panier</a></p> --> <p><a href="panier.php">Terminer mes achats et consulter mon panier</a></p> <?php if(!empty($_SESSION['panier']) AND $panier!=0) {echo '<pre>'; var_dump($_SESSION['panier']); echo '</pre>'; echo '<br/>'; print_r($_SESSION['panier']); } ?> </body> </html>
Et enfin ma page panier qui devrait afficher l'intitulé de chacun des produits mis dans le panier. Le nombre d'éléments est lui bon.
Code php : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88 <?php session_start(); ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <title>Document sans nom</title> </head> <body> <?php include('function.inc.php'); if(!empty($_SESSION['panier']['produit'])) { $panier=count($_SESSION['panier']['produit']); var_dump($_SESSION['panier']['produit']); } else { $panier='0'; } echo '<p>Contenu de votre commande : ' .$panier.' articles </p>'; /* affiche_panier(); */ echo '<table id="tableau" border="1" width="500px" height="300px">'; echo '<thead>'; echo '<tr>'; echo '<th scope="col" id="">Produits</th>'; echo '<th scope="col" id="">Prix</th>'; echo '<th scope="col" id="">Choix</th>'; echo '</tr>'; echo '</thead>'; echo '<tbody>'; for ($i=0; $i<$panier; $i++) { echo '<tr>'; $produit=$_SESSION['panier']['produit'][$i]; $prix=$_SESSION['panier']['prix'][$i]; echo '<td>'.$_SESSION['panier']['produit'][$i].'</td>'; echo '<td>'.$_SESSION['panier']['prix'][$i].'</td>'; echo '<td><a href="'.$_SERVER['PHP_SELF'].'?choix=supprimer&produit='.$_SESSION['panier']['produit'].'">Supprimer cet article</a></td>'; echo '</tr>'; } echo '</tbody>'; echo '</table>'; /* ------------------------------- */ /* En Cas de suppression d'article */ /* ------------------------------- */ if (isset($_GET['choix'])=="supprimer") { $suppression=false; $suppr_produit=$_GET['produit']; echo '<p>Le produit '.$suppr_produit.' a été supprimé</p>'; /* Stock contenu du panier sans celui à supprimer */ $panier_tmp=array("produit"=>array(), "prix"=>array()); /* Comptage des articles du panier */ $nb_produits=count($_SESSION['panier']['produit']); for($i=0; $i<$nb_produits; $i++) { if($_SESSION['panier']['produit'][$i]!=$suppr_produit) { array_push( $panier_tmp['produit'], $_SESSION['panier']['produit'][$i]); array_push( $panier_tmp['prix'], $_SESSION['panier']['prix'][$i]); } } /* Le transfert est terminé on réinitialise le panier */ $_SESSION['panier']=$panier_tmp; /* Suppression du panier temporaire */ unset($panier_tmp); $suppression=true; return $suppression; echo '<p><a href="index.php">Continuer mes achats</a></p>'; } echo '<p><a href="index.php">Continuer mes achats</a></p>'; ?> </body> </html>
Partager