Panier d'achat

Eléphant du PHP | 331 Messages

14 févr. 2007, 21:26

J'utilise le tutoriel :

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

Mon problème est dans la conception de la page de catalogue.

De la façon dont j'ai compris et fait la chose tous les produits contenu dans ma page s'ajote au cataogue sans même que j'ai cliqué sur "ajouter ".

Donc, j'ai mal compris et mal fait ! :oops:

Pouvez-vous m'aider svp?

Merci!
<?
session_start();
include("header.php");
include("fonctions_panier.php");
if(isset($_GET["categorie_id"]))
	{
	$_SESSION["categorie_id"]=$_GET["categorie_id"];	
	$_SESSION["categorie_id_retour"]=$_GET["categorie_id"];	
	}	
include("config.php");
$connect=mysql_connect($host,$login,$password) or die("3333333");
$select=mysql_select_db($db) or die("Sa chie");
$sql = "select * from produits where categorie_id='".$_SESSION["categorie_id"]."' order by id ASC";
$result = mysql_query($sql) or die($sql);
?>
<form action="produits.php" method="post">
<?
while( $select = mysql_fetch_array($result) )
 {
 $newwidth=resize_images(120, 120, "$url_racine/produits/img_prod/".$select["image"]."");
?>
	<table width="100%" align="center">
	<tr>
	<td><b class="titre"><? echo StripSlashes($select["nom_".$_SESSION["lang"].""]) ?></b></td>
	</tr>
	<tr>
	<td valign="top" width="200"><p align="justify">
	<?	if($select["description_".$_SESSION["lang"].""]<>""){	echo "".StripSlashes($select["description_".$_SESSION["lang"].""])."";} ?>
	</p></td>
	</tr>
	<tr>
	<td>Quantité:&nbsp;<input type="text" name="qte" size="2"></td>
	</tr>
	<tr>
	<td valign="top"><b>&nbsp;Prix:</b><? echo $select["prix"] ; ?>&nbsp;$</td>
	</tr>
	<tr>
	<td><input type="submit" name="ajout" value="Ajouter" onClick="<? ajout($select) ; ?>"></td>
	</tr>
	</table>
<?
}
?>
</form>
<? include("footer.php"); ?>

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

15 févr. 2007, 17:23

Tu mélanges php et javascript... La fonction ajout() de ton panier est en php et doit s'exécuter sur le serveur lors de la récupération des produits sélectionnés par l'utilisateur. L'action onClic est un événement html/javascript qui s'exécute uniquement dans le navigateur.

Le php étant exécuté sur le serveur, tout le code php est traité et génère le code html qui sera affiché. Ainsi l'appel à ta fonction ajout() se fait pendant la génération de la page.
Comme le $select que tu lui passe en paramètre correspond à l'ensemble des produits de ta catégorie en base, il te les ajoutes tous dans le panier au lieu de ne prendre en compte que des produits selectionné par l'utilisateur :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphant du PHP | 331 Messages

16 févr. 2007, 17:01

Donc, Est-ce que sa veut dire que les fonctions de panier du tutoriel je dois les mettre dans des conditions
if(isset($_POST["submit_ajout"]))
{
function ajout($select)
{
    $ajout = false;
    if(!isset($_SESSION['panier']['verrouille']) || $_SESSION['panier']['verrouille'] == false)
    {
        if(!verif_panier($select['id']))
        {
            array_push($_SESSION['panier']['id_article'],$select['id']);
         	array_push($_SESSION['panier']['qte'],$select['qte']);
            /*array_push($_SESSION['panier']['taille'],$select['taille']);
            array_push($_SESSION['panier']['prix'],$select['prix']);*/
            $ajout = true;
        }
        else
        {
            $ajout = modif_qte($select['id'],$select['qte']);
        }
    }
    return $ajout;
}

}
Aussi, si je fais ça je devrai remplacer tout les $select par $_POST

???????????

Merci!

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

16 févr. 2007, 17:23

non, du tout, ce que je veux dire, c'est que ton onClick (javascript) ne peut interagir avec ta fonction ajout() (php) :)

"$select" est le nom donné au paramètre de ta fonction, mais tu peux lui passer n'importe quelle donnée, c'est juste qu'à l'intérieur de la fonction, ces données seront stockées dans la variable "$select". Si les données que tu as besoin de lui passer se trouvent dans $_POST, alors il te suffirait de l'appeler en lui passant ce paramètre :
$resultat = ajout($_POST);


En résumé il te faut :
- que l'utilisateur sélectionne articles et quantités en remplissant, cochant, etc. le formulaire
- que l'utilisateur valide le formulaire en cliquant sur le bouton pour envoyer les données au serveur
- que tu récupères en php les données envoyées par le formulaire
- que tu mettes à jour la session en ajoutant ces données :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...