Page 1 sur 1

récupérer données d'un panier

Posté : 19 sept. 2005, 17:22
par alcofribas
Bonjour,

Je viens de créer un panier fonctionnant avec des sessions, et je me demande maintenant comment afficher le contenu du tableau de session dans mon code html.

Je sais que pour afficher mes articles, il faut qqc comme ça:

$articles = count($_SESSION['caddie']['produit']['reference']);

for($i = 0; $i < $articles; $i++)
{
echo $_SESSION['caddie']['produit']['reference'][$i];
echo $_SESSION['caddie']['produit']['quantite'][$i];
}

N'est-ce pas?

Mais je voudrais par exemple faire apparaître la quantité dans un champs qui permette le cas échéant de modifier la quantité...
Et là je ne sais pas comment faire...

Quelqu'un peut m'aider?

Posté : 19 sept. 2005, 18:17
par Cyrano
Tiens, j'avais préparé un tuto spécialement fait pour les paniers. Tu devrais y trouver ce que tu cherches ou de quoi t'inspirer pour développer ta propre solution.

Posté : 23 sept. 2005, 10:03
par alcofribas
Merci encore pour ton tuto, ça m'a permis de résoudre bien des problèmes :D

Mais je bloque sur la fonction de modification des quantités dans le panier. Je pense qu'il y a un problème avec la fonction de vérification des produits présents, qui permet d'éviter les embrouilles avec la navigation par flèches et les rechargements impromtus...: je demande l'affichage de la qt dans une zone input et lorsque j'envoie le formulaire, la quantité redevient la quantité initiale... Ben oui.

J'y ai passé toute la journée hier, sans succès. A court d'aspirine, je vous envoie mon script pour que vous me le critiquiez: tout fonctionne sauf la partie if(isset($_POST("Modifier"))... Suit la méthode d'affichage, peut-être fautive aussi?

if(!isset($_SESSION['caddie']))
{
$_SESSION['caddie'] = array(
"session"=> session_id(),
"aujourdhui" => date("d-m-Y"),
"produit" => array(
"reference" => array(),
"quantite" => array(),
"prixunitaire" => array(),
"prixactuel" => array(),
"totalproduit" => array(),
"acompteproduit" => array(),
"soldeproduit" => array(),
),
"facture"=> array (
"total" => array(
"total" => array(),
"acompte" => array(),
"solde" => array(),
),
"clients" => array(
"nom" => array(),
"prenom" => array(),
"adresse" => array(),
"codepostal" => array(),
"batiment" => array(),
"etage" => array(),
"ville" => array(),
"pays" => array(),
"telephone" => array(),
"email" => array(),
)
)
);
}

require_once ('ref.php');
require_once ('refprod.php');

require_once ('deja.php');


if (isset($_POST["Commander"])){

if(!verif_panier($refprod))

{

array_push($_SESSION['caddie']['produit']['reference'], $refprod);


$qt = $_POST["quantite"];

array_push($_SESSION ['caddie']['produit']['quantite'], $qt);

require_once ('ac_px.php');

array_push($_SESSION['caddie']['produit']['prixunitaire'], $pu);
array_push($_SESSION['caddie']['produit']['prixactuel'], $pa);

require_once('montantprod.php');

$total_prod = total_prod();

array_push($_SESSION['caddie']['produit']['totalproduit'], $total_prod);


require_once('acompteprod.php');

$acompte_prod = acompte_prod();

array_push($_SESSION['caddie']['produit']['acompteproduit'], $acompte_prod);


require_once('soldeprod.php');

$solde_prod = solde_prod();

array_push($_SESSION['caddie']['produit']['soldeproduit'], $solde_prod);

}

}


if (isset($_POST["Modifier"])) {
require_once('verif_qt.php');

$refprod = $_SESSION['caddie']['produit']['reference'];
$qt = $_POST["quantite"];

function modif_qte($refprod, $qt)
{
$modifie = false;
// verif_qt_art = vérification des quantités d'un produit appelée depuis verif_qt.php //
if(verif_qt_art($refprod) != false && $qt != verif_qt_art($refprod))
{

/* Comptage des articles du panier */
$nb_articles = count($_SESSION['caddie']['produit']['reference']);
/* Transfert du panier dans le panier temporaire */
for($i = 0; $i < $nb_articles; $i++)
{

if($refprod == $_SESSION['caddie']['produit']['reference'])
{
$_SESSION['caddie']['produit']['reference'] = $qt;
$modifie = true;
}
}
}

}

if (modif_qte($refprod, $qt) == true)
{
array_push($_SESSION ['caddie']['produit']['quantite'], $_POST["quantite"]);
}
}

require_once('coordclient.php');

require_once('Effacerpanier.php');

require_once('Effacerproduit2.php');

Et maintenant une partie de l'affichage du panier (ds le code html):

function recup_panier()
{

$articles = 0;

$articles = count($_SESSION['caddie']['produit']['reference']);

for ($i = 0; $articles > $i; $i++) {

$panier = '<form method="post" action="Panier.php">
<td align="center" colspan="6" style="text-align: left; vertical-align: middle; height: 40px;">

<span style="color: rgb(255, 255, 255); font-weight: bold;font-family: Optima;">

<b>'.$_SESSION['caddie']['produit']['reference'][$i].'</b>
</span>
</td>';
$panier .= '<td align="center" colspan="6" style="text-align: left; vertical-align: middle; height: 40px;">

<span style="color: rgb(255, 255, 255); font-weight: bold;font-family: Optima;">

<input value="'.$_SESSION['caddie']['produit']['quantite'][$i].'"maxlength="3" size="3" name="quantite">
....
}

return $panier

}

Alors???