Page 1 sur 1

Panier d'achat

Posté : 07 déc. 2006, 21:03
par stefane321
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

Posté : 07 déc. 2006, 21:07
par Ultim4T0m
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.

Mon code

Posté : 07 déc. 2006, 21:30
par stefane321
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!

Posté : 07 déc. 2006, 21:35
par Ultim4T0m
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 !=

Explication

Posté : 07 déc. 2006, 21:51
par stefane321
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?

Posté : 07 déc. 2006, 21:55
par Ultim4T0m
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

On va y arrivver

Posté : 07 déc. 2006, 22:04
par stefane321
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="" ?????????

Posté : 07 déc. 2006, 22:11
par Ultim4T0m
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: