Bonjour,
aujourd'hui, nous abordons la suite de notre article sur la mise en place d'une
boutique en ligne.
Faudra
m'excuser pour cette si longue attente, c'est pas facile de jongler avec le
boulot afin d'avoir du temps de libre pour écrire. Je promets néanmoins de
mieux m'organiser afin de publier au moins 1 article par semaine.
Notre
base de données étant déjà crée, l'on va aborder la suite. Principalement il
s'agira de :
- Créer une page pour la sélection des produits
- Créer une page pour la gestion de son panier
- Créer une page pour la validation de son panier
Chacune
de ses pages sera en inter-action avec un script php pour l'exécution d'une
fonction de notre système.
Avant
toutes chose, il est nécessaire de créer la connexion avec notre base de
donnée. Nous allons donc créer un premier fichier pour cela.
Ouvré
votre éditeur de texte favoris, crée un fichier et enregistré le sous le nom de
connexion.php dans le repertoire test que nous avons crée précédement.
Dans
votre fichier connexion, saisissez le contenu suivant :
<?php
mysql_connet('localhost','root',''); // ligne de connexion à notre serveur de base de données
mysql_select_db('panier')
; // ligne de connexion à notre base de
donées
?>
RMQ : les
paramètres de connexion peuvent être différent chez vous, mais si vous êtes en
local et que vous n'avez rien changé dans vos paramètres par défaut, cela
devrait aller.
Maintenant
que notre fichier de connexion est ok, passons au second fichier. Le fichier
liste_pdt.php
Ce
fichier affichera tout les produits de notre base de donnée. Comme précédement,
ouvré votre éditeur et crée un fichier liste_pdt.php toujours dans le dossier
test.
Dans ce
fichier, saisissez le contenu suivant :
<?php
require("connexion.php"); // on fait appel à notre fichier de connexion
$req="select
* from produit order by nom asc"; // requête de selection
$res=mysql_query($req); // exécution de la requête
//
ouverture de la table qui servira de conteneur pour l'affichage de nos produits
echo'<table>';
//
remplissage de la table crée, chaque ligne de notre table servira de ligne du
tableau
while($ligne=mysql_fetch_array($res))
{
echo'<tr><td
align="center"><img src="pdt/'.$ligne['image'].'
" width="150"
height="75"
title="'.$ligne['description'].'" /> <td> ';
echo'<td>'.$ligne['nom'].'
</td>';
echo'<td
align="center">'.number_format($ligne['prix'],0,'',' ').' FCFA</td> ';
echo'<td
align="center"><a href="panier.php?id='.$ligne['id'].'
" >Ajouter au panier</a></td></tr> ';
}
//
ferméture du tableau
echo'</table>';
?>
Si vous
remarquez bien le code ci-dessus, vous remarquerez que les liens sur les
produits pointent vers la page panier, c'est elle que nous allons maintenant
créer.
Ouvré
votre éditeur de texte et crée un nouveau fichier panier.php, enregistré le
toujours dans le repertoire test.
Copiez et
collez y le contenu suivant :
<?php
//
ouverture d'une session car le contenu du panier sera stocké dans un tableau
session
Session_start();
$id=$_GET['id']; // récupération de l'id du produit
//
fonction d'ajout du produit dans le panier, elle initialise la variable
$_SESSION['panier']
function add($code,$qt) {
$_SESSION['achats'][] = array ("id1"
=> $code,"statut"=> 0,"qte"=>$qt);
}
// on teste si la variable $_SESSION['achat'][] existe
if(isset($_SESSION['achats'])){
// les lignes de code ci-dessous servent à incrémenter la quantité
du produit dans le panier, ainsi chaque fois que l'on choisit d'ajouter un
produit, un test est fait pour savoir s'il existe déjà dans le panier ou
pas.
$count1 = count($_SESSION['achats']); $tab=array(); $tab1=array();
for($i=0;$i<$count1;$i++)
{ $tab[$i]=$_SESSION['achats'][$i]['id1'];
$tab1[$i]=$_SESSION['achats'][$i]['statut']; }
if(!in_array($id,$tab)){
add($id,'1'); }
else {
for($j=0;$j<$count1;$j++) {
if($id==$tab[$j]) {
if($_SESSION['achats'][$j]['statut']==0) {
$q=$_SESSION['achats'][$j]['qte']; $q++; $_SESSION['achats'][$j]['qte']=$q; }
else {
add($id,'1'); }
}
}
}
}
// si la variable n'existe, on l'initialise
else {add($id,'1'); }
$nbre=0;
$count = count($_SESSION['achats']);
// calcul du nombre de produit dans le panier
for($i=0;$i<$count;$i++)
{
if($_SESSION['achats'][$i]['statut']=='0') {
$nbre+=$_SESSION['achats'][$i]['qte']; } }
// stockage du nombre de produit dans une variable session
$_SESSION['nbre']=$nbre;
// redirection après insertion dans le panier
echo"<script
language='javascript'>
document.location.href='mon_panier.php';
</script>
";
?>
Comme
vous l'avez une fois de plus encore remarquée, à la fin de l'opération l'on est
redirigé vers la page mon_panier.php
c'est
cette page qui nous servira pour la gestion de notre panier. De la, on pourra
modifier ou supprimer les produits de notre panier.
Comme
vous en avez pris l'habitude, ouvrez votre éditeur de texte préféré, créez un
nouveau fichier mon_panier.php
Remplissez
y le contenu suivant :
<?php
Session_start();
// petit
test pour voir si le panier existe
if(!isset($_SESSION['achats']))
{ echo"<script language='javascript'>
document.location.href='liste_pdt.php';
</script>
";
}
?>
<script
language="javascript">
// script
javascript pour le dynamisme de notre page
function
fin(){
if(confirm("Voulez
vous vraiment annuler votre commande ?")){
document.location.href="fin_achat.php";
}
}
function
effacer(val){
if(confirm("Voulez
vous vraiment effacer ce produit de votre panier ?")) {
document.location.href="effacer.php?id="+val; }
}
function
payer(){
if(confirm("Voulez
vous vraiment valider cette commande ?")){
document.location.href="validation.php";
}
}
</script>
<?php
$total=0;
$count=count($_SESSION['achats']); $tot=0;
if($count==0){ }
else{
// le
code suivant liste le contenu du panier et nous donne la possibilité de
supprimer ou de modifier les quantités des produits du panier
?>
<form
action="calcul.php" method="post">
<table
border='0' CellSpace='2' CellPad='0' width='638'>
<?php
for($i=0;$i<$count;$i++){
// on
parcourt notre tableau session et on ne considère que les lignes encore active
if($_SESSION['achats'][$i]['statut']==0) {
$id=$_SESSION['achats'][$i]['id1']; // on
recupère l'id
$qte=$_SESSION['achats'][$i]['qte']; // de
même que la quantité
$req3="select nom,prix from produit where id='$id
$res3=mysql_query($req3);
$lig3=mysql_fetch_array($res3); $prix=number_format($lig3['prix'],0,'',' ');
echo"<tr>
<td height='34' class='lie4 zone
esp'>$lig3['nom']</td>
<td align='center' class='lie
zone'><input type='text' value='$qte' name='$i' size='5'
class='li3'></td>
<td align='center' class='lie4
zone'>$prix FCFA</td>
<td align='center' class='lie
zone'><a href='#' onclick='effacer($id)'
class='lie41'>Effacer</a></td>
</tr>";
// on incrémente le total
$tot=$lig3['prix']*$qte;
$total+=$tot;
}
}
$prix1=number_format($total,0,'','
');
?>
<tr><td
colspan="5"> </td></tr>
<tr><td> </td><td
bgcolor="#0099CC" class="zone lie4 style7 style4">Prix
Total : </td><td class='lie42 zone'
align="center"><?php echo $prix1 ?>
FCFA</td><td> </td>
<td> </td>
</tr>
<tr><td
colspan="5"> </td></tr>
<tr><td
colspan="2"><div align="center">
<input
name="Button2" type="button" class="text6"
onclick="fin()" value="Annuler la commande" />
</div></td><td><div align="center">
<input
name="Button" type="submit" class="text6"
value="Recalculer" />
</div></td><td><div align="center">
<input
name="Button" type="button" class="text6"
value="Valider" onclick="payer()" />
</div></td>
<td> </td>
</tr>
</table>
</form>
<?php
}
?>
Dans le
code ci-dessus, on fait appel a calcul.php, validation .php, fin_achat.php et effacer.php ce sont les trois derniers
fichiers de notre tuto.
Reprennez
votre éditeur de texte et crée ces 4 fichiers, voici le contenu que vous devez
y mettre :
- pour le fichier effacer.php
<?php
//
lorsque l'on efface un produit, il est physiquement toujours présent dans notre
tableau session, mais n'est plus visible à l'utilisateur
session_start();
if(!isset($_SESSION['achats']))
{ echo"<script language='javascript'>
document.location.href='liste_pdt.php';
</script>
"; return;
}
$id=$_GET['id'];
$count=count($_SESSION['achats']);
for($i=0;$i<$count;$i++){
if($_SESSION['achats'][$i]['id1']==$id){
$_SESSION['achats'][$i]['statut']='1';
}
}
$nbre=0;
for($i=0;$i<$count;$i++)
{
if($_SESSION['achats'][$i]['statut']=='0') {
$nbre+=$_SESSION['achats'][$i]['qte']; } }
$_SESSION['nbre']=$nbre;
echo"<script
language='javascript'>
document.location.href='mon_panier.php';
</script>
";
?>
- Calcul.php
<?php
session_start();
if(!isset($_SESSION['achats']))
{ echo"<script language='javascript'>
document.location.href='liste_pdt.php';
</script>
"; return;
}
$count=count($_SESSION['achats']);
// on
parcourt notre tableau session, si un produit a été mis à jour, on le modifie
for($i=0;$i<$count;$i++){
if(isset($_POST[$i])) {
if(empty($_POST[$i])) $val=0;
else $val=$_POST[$i];
$_SESSION['achats'][$i]['qte']=$val;
}
}
$nbre=0;
for($i=0;$i<$count;$i++)
{
if($_SESSION['achats'][$i]['statut']=='0') {
$nbre+=$_SESSION['achats'][$i]['qte']; } }
$_SESSION['nbre']=$nbre;
echo"<script
language='javascript'>
document.location.href='mon_panier.php';
</script>
";
?>
- Fin_achat.php
<?php
session_start();
// On
détruit les variables de notre session
unset($_SESSION['achats']);
// On
détruit notre session
//session_destroy
();
// On
redirige le visiteur vers la page d'accueil
echo
"<script language='Javascript'>
<!--
document.location.href='liste_pdt.php';
// -->
</script>
";
?>
Le
fichier validation.php est assez long, le réecrire ici ne ferait qu'alourdi cet
article déjà assez long je trouve. Pour
résumé disons qu'il contient le même contenu que celui de mon_panier.php
A la
seule différence que les quantités ne sont plus dans des zone de textes, mais
écrit en dur, donc non modifiable. La possibilité est toujours donné à
l'utilisateur de tout abandonner.
Afin de
mieux comprendre cele, je vous invite à aller sur ce site : www.technoelec-sarl.com et de tester
le panier d'achat, soyez attentif a la derniière étape. c'est elle que j'ai pas
expliqué ici.
Si
quelqu'un d'entre vous à des diffilcultés ou souhaites un éclaircissement, il
peut me contacter à tout moment.
Merci et
bonne lecture !
bonjour mais comment on fait pour test ce panier?
RépondreSupprimerBonjour, juste pour vous informer que le blog a été déplacé a cette adresse : www.blog.glieunou.com
Supprimerje vous y attend pour plus d'éclaircissemnt sur votre question !!
quand j'essaie l'exercice voici l'erreur qu'on m'affiche et javoue que je n'y comprend rien
RépondreSupprimerParse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in C:\Program Files\EasyPHP-5.3.6.0\www\test\mon_panier.php on line 65
Je souhaiterais avoir le contenu du code du fichier valider.php SVP.
RépondreSupprimerLe lien que vous avez donner ne marche pas
C'est pareil pour moi. Lorsque je fais le test, on m'affiche une erreur comme celle de Yannick Kasongo "Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in C:\Program Files\EasyPHP-5.3.6.0\www\test\mon_panier.php on line 65"
RépondreSupprimer