Panier d'achat

Eléphant du PHP | 331 Messages

07 déc. 2006, 21:03

Bonjour,

J'utilise le tuto :

http://jmolline.free.fr/tutos/tuto_panier.html

Au départ, J'ai mon catalogue de produit qui est fait et qui fonctionne bien.

Je comprend le tuto et j'arrive à certains résultats jusqu'a se que j'utilise les fonctions.

C'est ma GROSSE lacune en php, l'utilisation de "fonction utilisateur".

Comment je dois appeler la fonction ajout($select) à partir d'un bouton image?
echo "<td align=\"right\" colspan=\"2\"><input type=\"image\" src=\"images/panier.jpg\" name=\"ajout_panier\" value=\"Ajouter\"></td>\n";
Merci!

Stéphane

Eléphant du PHP | 445 Messages

07 déc. 2006, 21:07

C'est limité là en code, montre nous où ça va, quel est ton formulaire, le code qui est censé s'exécuter pour appeller la fonction ajout() etc.
LLDC
Ulti

Eléphant du PHP | 331 Messages

07 déc. 2006, 21:30

Alors, voici le code de mon catalogue:
echo "<form action=\"panier3.php\" method=\"post\">\n";
	echo "<table cellpadding=\"0\" cellspacing=\"0\" width=\"100%\">\n";
	echo "<tr>\n";
	echo "<td width=\"65\" valign=\"top\" rowspan=\"3\">\n";
	if($products["image"]<>"")
	{
	echo "<img src=\"produits/img_prod/".$products["image"]."\" alt=\"".StripSlashes($products["nom"])."\" border=\"0\" width='".$newwidth[0]."' height='".$newwidth[1]."'></a>\n";
	}
	echo "</td>\n";
	echo "<td rowspan=\"3\" valign=\"top\"><IMG SRC=\"images/vertical_orange.jpg\" WIDTH=\"7\" HEIGHT=\"78\" BORDER=0 ALT=\"\"></td>\n";
	echo "<td valign=\"top\" colspan=\"2\" width=\"100%\">\n";
////////////////////////////////////////////////////////
	echo "<table cellpadding=\"2\" cellspacing=\"2\" width=\"100%\">\n";
	echo "<tr>\n";
	echo "<td><b class=\"titre\"><input type=\"hidden\" name=\"id_produit\" value=\"".$products["id"]."\">".htmlentities(StripSlashes($products["nom"]))."</b></td>\n";
	echo "</tr>\n";
	if($products["description"]<>"")
	{
	echo "<tr>\n";
	echo "<td valign=\"top\" width=\"200\">".StripSlashes($products["description"])."</td>\n";
	echo "</tr>\n";
	}
	echo "</table>\n";
////////////////////////////////////////////////////////
echo "</td>\n";
echo "</tr>\n";
echo "<tr>\n";
echo "<td valign=\"top\">Prix:</td>\n";
echo "<td>\n";
////////////////////////////////////////////////////////
$sql2 = "select * from produit_format order by id ASC ";
$result2 = mysql_query($sql2);
echo "<table cellpadding=\"0\" width=\"100%\" cellspacing=\"0\">\n";
while( $row = mysql_fetch_array($result2))
 {	
	echo "<tr>\n";
	echo "<td>".$row["nom"]."</td><td>".$row["prix"]." $</td><td align=\"right\"><input type=\"radio\" name=\"format\" value=\"".$row["id"]."\"></td>\n";
	echo "</tr>\n";
 }
echo "</table>\n";
////////////////////////////////////////////////////////
echo "</td>\n";
echo "</tr>\n";
echo "<tr>\n";
echo "<td align=\"right\" colspan=\"2\"><input type=\"image\" src=\"images/panier.jpg\" name=\"ajout_panier\" value=\"Ajouter\"></td>\n";
echo "</tr>\n";
echo "</table>\n";
echo "</form>\n";
Voici le code de panier qui fonctionne de panier3.php:
<?php
/* Démarrage ou prolongation de la session */
session_start();

/* On vérifie l'existence du panier, sinon, on le crée */
if(!isset($_SESSION['panier']))
{
    /* Initialisation du panier */
    $_SESSION['panier'] = array();
    /* Subdivision du panier */
	$_SESSION['panier']['id_produit'] = array();
    $_SESSION['panier']['format'] = array();
}

/* Ici, on sait que le panier existe, donc on ajoute l'article dedans. */
array_push($_SESSION['panier']['id_produit'],$_POST['id_produit']);
array_push($_SESSION['panier']['format'],$_POST['format']);
?>
Voici la fonction que je ne sais pas comment appeler:
<?
function ajout($select)
{
    array_push($_SESSION['panier']['id_produit'],$_POST['id_produit']);
    array_push($_SESSION['panier']['format'],$_POST['format']);
}
?>
Merci!

Eléphant du PHP | 445 Messages

07 déc. 2006, 21:35

Tu n'as apparement pas besoin de l'appeller puisqu'elle se trouve déjà dans panier3.php, en fin de script.

De plus, elle ne se sert même pas de la variable $select qu'elle a en paramètre :?

Qu'est ce qui ne marche pas, concrètement ? L'ajout d'article dans le panier ? Il m'a l'air indépendant de ta fonction, même si tu pourrais éventuellement en faire une fonction sans trop de problème.


Petite remarque, en php, le signe différent ne se note pas <> mais !=
LLDC
Ulti

Eléphant du PHP | 331 Messages

07 déc. 2006, 21:51

La fonction n'est pas dans le même fichier.

Le catalogue = produits.php

Le panier = panier3.php

L'ajout des articles fonctionne mais je veux faire comme dans le tutoriel cité dans mon premier post.

Je veux en faire une fonction.

La variable $select oublie ça j'ai oublié de l'effacer.

Sais-tu de quel tuto je te parle?

Eléphant du PHP | 445 Messages

07 déc. 2006, 21:55

Donc tout fonctionne si je comprends bien :roll:

Pour ce qui est de la fonction, tu dois pouvoir faire quelque chose de ce style :
<?
function ajout($id_produit, $format)
{
    array_push($_SESSION['panier']['id_produit'],$id_produit);
    array_push($_SESSION['panier']['format'],$format);
}
?> 
Et remplacer :
/* Ici, on sait que le panier existe, donc on ajoute l'article dedans. */
array_push($_SESSION['panier']['id_produit'],$_POST['id_produit']);
array_push($_SESSION['panier']['format'],$_POST['format']);
par
include 'fichier_contenant_la_fonction.php';
ajout($_POST['id_produit'], $_POST['format']);

En espérant avoir compris ton problème
LLDC
Ulti

Eléphant du PHP | 331 Messages

07 déc. 2006, 22:04

Ben on approche mais j'ai le même problème qu'au départ.

Mon bouton "Ajouter au panier"
echo "<td align=\"right\" colspan=\"2\"><input type=\"image\" src=\"images/panier.jpg\" name=\"ajout_panier\" value=\"Ajouter\"></td>\n";
Il fait comment pour appeler:
ajout($_POST['id_produit'], $_POST['format']);
Je mets ça dans son attribut NAME="" ou VALUE="" ?????????

Eléphant du PHP | 445 Messages

07 déc. 2006, 22:11

Ton input fait partie d'un formulaire, il passe donc les données que tu entre dans ce formulaire à la page de destination, en l'occurrence panier3.php

Ton <input type="image" .... /> n'est autre qu'un bouton de validation du formulaire.

C'est dans cette page qu'il te faut appeller la fonction.

Tu peux déjà faire des echo() pour vérifier si les données sont bien transmises.


Si ce n'est toujours pas ça le problème, alors je n'ai définitvement pas compris ^^' Peut-être qu'en te tournant vers du Javascript, tu arriverais à ce que tu veux, avec un attribut onClick="" sur ton bouton de validation :roll:
LLDC
Ulti