Session et tableaux

Eléphant du PHP | 64 Messages

14 juin 2005, 14:33

Merci Saqued, ta solution fonctionne très bien !

Le seul souci c'est que si je clique deux fois sur le meme produit, au lieu de m'écraser l'entrée il m'en crée une autre...ce qui doit pourvoir être modifié.
Je dois pouvoir faire un test du genre:
foreach($caddie as $ligne)
 if ($ligne[0] = $nom){
j'écrase l'entrée par la nouvelle
//$caddie[]= array($nom,$qt,$pu,$sub);
}
else{
$caddie[]= array($nom,$qt,$pu,$sub);
}

Mammouth du PHP | 19672 Messages

14 juin 2005, 14:41

En fin de compte : [Résolu] :?:
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 64 Messages

14 juin 2005, 14:45

Merci !!!

Modérateur PHPfrance
Modérateur PHPfrance | 2575 Messages

14 juin 2005, 16:14

Ô tu fais une recherche de l'article s'il existe tu ne l'ajoute pas :
Voici le programme entier :
session_start(); 

if (isset($_SESSION["caddie"])) 
{ 
    $caddie = $_SESSION["caddie"]; 
} 
else 
{ 
    $caddie = null; 
} 

//Identité d'un article
$nom = isset($_GET['nom'])?$_GET['nom']:null; 
$pu = isset($_GET['pu'])?$_GET['pu']:0; 

//Maj automatique des qté's
if (isset($_GET['qt']) && $caddie != null) 
{ 
	 $qt = $_GET['qt']; 
	 if ($qt != null)
	 	foreach($qt as $key=>$valeur) {
		   if ($valeur>0){
	 			$caddie[$key][2] = $valeur ;
	 			$caddie[$key][3] = $caddie[$key][1] * $valeur;
			}
		$_SESSION["caddie"] = $caddie; 
	}
} 

//Suppression d'un article
if (isset($_GET["supprimer"]) && $caddie != null) 
{ 
	unset($caddie[$_GET["supprimer"]]);
	$caddie = array_values($caddie) ;
    $_SESSION["caddie"] = $caddie; 
}  

//Ajout d'article
if (isset($_GET["ajout"]) && $nom != null  && $pu>0) 
{ 
	//Ajout par défaut d'1 article : structure du caddie (Nom, Prix, Qté, Total=Qté*Prix) 
	if (!existe($nom,$caddie)) { //si l'article n'existe pas déjà dans le caddie
		$caddie[]= array($nom,$pu,1,$pu); 
    	$_SESSION["caddie"] = $caddie; 
	}
} 
function existe($mot_clé,$tableau ){
if ($tableau != null) 
	foreach ($tableau as $ligne){
		if (is_array($tableau) && in_array($mot_clé,$ligne)) return true;
		else if ($mot_clé == $ligne) return true;
		}		
return false;
}
//Affichage
echo "
<h1>Panier</h1>
<form name='f1'>
Nom <input name=nom value='$nom'> Prix <input name=pu value='$pu'> 
<input type=submit name=ajout value=+>
";

if ($caddie != null) {
	$total = 0;
	echo "<h3>Produits achetés</h3><table><tr><th>Nom<th>Prix<th>Qté<th>Total";
 	foreach($caddie as $key=>$ligne) 
	 if ($ligne != null) {
		echo "<tr><th>".$ligne[0]."<th>".$ligne[1]."<th><input name='qt[]' value='".$ligne[2]."' onChange='f1.submit()'><th>".$ligne[3]
		."<td><a href=?supprimer=$key>Supprimer</a>";
		$total += $ligne[3];
	}
	echo "<tr><th colspan=3>Total (ht)<th>$total <td><input type=submit name='editer' value=Editer></table>";
}
echo "</form>";
--------//////----//---//----//////
-------//---//----//---//----//---//
------//////----//////-----//////
-----||--------||--||---||
Prendre le recul n'est pas une perte de temps.


ps: Affrontez moi dans l'arène