Page 1 sur 1

Panier d'achat

Posté : 22 sept. 2006, 22:51
par stefane321
Bonjour,

J'ai un panier d'achat qui se rempli en cochant les produits que l'on veut ajouter au panier.

Il fonctionne presque bien sauf que j'ai l'impression que mon tableau se construit mal.

Le formulaire:
echo "<form action=\"caddy.php\" method=\"post\">\n";

mysql_connect($host, $login, $password);

mysql_select_db($db);

$query2 = "SELECT cp.id, cp.prix, cp.id_produit, p.nom ".

          "FROM clients_produits AS cp, produits AS p ".

          "WHERE p.id = cp.id_produit ".

          "AND cp.id_client='". $_SESSION['id_client'] ."'"; $result2=mysql_query($query2);

while($row2=mysql_fetch_array($result2))

{

echo "<tr>\n";

echo "<td>\n";

echo "".$row2["nom"]."<input type=\"hidden\" name=\"id_produit\" value=\"".$row2["id_produit"]."\" size=\"25\"></td>\n";

echo "<td>".$row2["prix"]."$<input type=\"hidden\" name=\"prix_".$row2["id_produit"]."[]\" value=\"".$row2["prix"]."\"></td>\n";

echo "<td><input name=\"choix[]\" type=\"checkbox\" value=\"".$row2["id_produit"]."\"></td>\n";

echo "</tr>\n";

}

echo "<tr>\n";

echo "<td align=\"center\" colspan=\"\"><input type=\"submit\" name=\"ajout\" value=\"Envoyer\">\n";

echo "</form>\n";
Le panier:
foreach($_POST["choix"] as $i)
{
echo "".$i."<br>";
$panier[]=array($_POST["choix"],$_POST["prix_".$i.""]); 
$_SESSION['panier']=$panier;
}
Si je visualise le contenu de $_SESSION["panier"] avec :
echo "<pre>";
var_dump($_SESSION['panier']);
echo "</pre>";
J'obtiens ceci avec deux produits sélectionnés:

Code : Tout sélectionner

array(2) { [0]=> array(2) { [0]=> array(2) { [0]=> string(1) "4" [1]=> string(1) "5" } [1]=> array(1) { [0]=> string(3) "555" } } [1]=> array(2) { [0]=> array(2) { [0]=> string(1) "4" [1]=> string(1) "5" } [1]=> array(1) { [0]=> string(1) "6" } } }
J'ai l'impression qu'il y a de quoi de pas correct genre un array de trop et je n'ai pas trouvé comment l'arranger.

Pouvez-vous m'aider svp?

Merci!

Posté : 22 sept. 2006, 23:33
par Cyrano
Regarde les post-it de ce forum, tu y trouveras un lien vers un tuto spécialement fait pour la construction d'un panier dont tu pourras peut-être t'inspirer pour résoudre ton problème.

J'y ai regardé

Posté : 23 sept. 2006, 00:03
par stefane321
J'ai déjà regardé ce tuto:

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

Ce tuto ci-haut, j'ai réussi a m'en servir mais seulement pour ajouter un produit à la fois ayant chacun leur bouton "Ajouter"

Alors, je me suis aussi servi de ce Post qui correspond à ce que je cherche à faire:

http://www.phpfrance.com/forums/voir_su ... panier.php

Merci

Posté : 23 sept. 2006, 03:28
par stefane321
Merci pour ton indication!

Le post:

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

Va sûrement m'aider, il est plus détaillé que tout se que j'ai lu avant sur les tableau et la section qui explique le résultat de var_dump() va sûrement m'aider.

Tableaux

Posté : 26 sept. 2006, 00:20
par stefane321
Bonjour,

Après beaucoup d'essai je suis parvenu à structurer mon tableau adéquatement.

Cependant, je reste avec un problème d'insertion de mes données dans le tableau.

Tous les articles de mon catalogue sont inséré dans mon tableau plutot que seulement items sélectionnés.

Voici mon code de catalogue:
echo "<form action=\"caddy.php\" method=\"post\">\n";

mysql_connect($host, $login, $password);

mysql_select_db($db);

$query2 = "SELECT cp.id, cp.prix, cp.id_produit, p.nom ".

          "FROM clients_produits AS cp, produits AS p ".

          "WHERE p.id = cp.id_produit ".

          "AND cp.id_client='". $_SESSION['id_client'] ."'"; $result2=mysql_query($query2);

while($row2=mysql_fetch_array($result2))

{



echo "<tr>\n";

echo "<td>\n";

echo "".$row2["nom"]."<input type=\"hidden\" name=\"id_produit[]\" value=\"".$row2["id_produit"]."\" size=\"25\"></td>\n";

echo "<td>".$row2["prix"]."$<input type=\"hidden\" name=\"prix[]\" value=\"".$row2["prix"]."\"></td>\n";

//echo "<td><input type=\"text\" name=\"qte[]\" size=\"5\"></td>\n";

echo "<td><input name=\"choix[]\" type=\"checkbox\" value=\"".$row2["id_produit"]."\"></td>\n";

//echo "<td><input type=\"submit\" name=\"ajout\" value=\"Ajouter au panier\"></td>\n";

echo "</tr>\n";

}

echo "<tr>\n";

echo "<td align=\"center\" colspan=\"\"><input type=\"submit\" name=\"ajout\" value=\"Envoyer\">\n";

echo "</form>\n";

echo "</td>\n";
Voici mon code du panier:
session_start();
if(!isset($_SESSION["panier"]))
{
$_SESSION["panier"] = array();
$_SESSION["panier"]["id_produit"] = array();
//$_SESSION["panier"]["qte"] = array();
$_SESSION["panier"]["prix"] = array();
}

foreach($_POST["choix"] as $i)
{
echo "".$i."<br>";
$_SESSION['panier']["id_produit"]=$_POST["id_produit"];
$_SESSION['panier']["prix"]=$_POST["prix"];
}
Chose étrange pour moi le:
echo "".$i."<br>";
M'affiche correctement les items sélectionnés!

Pouvez-vous m'aider de nouveau SVP?

Merci!

Posté : 26 sept. 2006, 08:19
par Cyrano
Il y a un problème avec l'ajout de données dans ton tableau :
<?php
//...
foreach($_POST["choix"] as $i)
{
    echo "".$i."<br>";
    $_SESSION['panier']["id_produit"]=$_POST["id_produit"];
    $_SESSION['panier']["prix"]=$_POST["prix"];
}
//...
?>
à chaque nouveau tour de boucle, tu écrases la valeur précédente. Si tu as regardé le mini tuto sur les tableaux, tu as dû voir une chose importante. Essaye comme ceci:
<?php
//...
foreach($_POST["choix"] as $i)
{
    echo "".$i."<br>";
    $_SESSION['panier']["id_produit"][] = $_POST["id_produit"];
    $_SESSION['panier']["prix"][] = $_POST["prix"];
}
//...
?>
Les explications sont dans le mini-tuto mentionné.

On y est presque!

Posté : 26 sept. 2006, 15:30
par stefane321
Bonjour,

J'ai corrigé mon code, il fonctionne, maintenant seulement les items sélectionnés son ajoutés au panier.

Voici mon code:
foreach($_POST["choix"] as $i)
{
echo "".$i."<br>";
$panier=$_SESSION["panier"];
$panier[]=array("id_produit"=>$_POST["id_produit_".$i.""],"prix"=>$_POST["prix_".$i.""]);
$_SESSION["panier"]=$panier;
}
Cependant, je m'intéroge sur le résultat de var_dump il semble qu'il y a un index de vide en début d'affichage. Mais il ne me manque pas de données.
array(4) {
["id_produit"]=>
array(0) {
}
["prix"]=>
array(0) {
}
[0]=>
array(2) {
["id_produit"]=>
string(1) "4"
["prix"]=>
string(3) "555"
}
[1]=>
array(2) {
["id_produit"]=>
string(1) "7"
["prix"]=>
string(3) "777"
}
}
Il y a deux produits de sélectionné dans ça.

Que peux-tu me dire la-dessus?

Est-ce correct ou non?

Merci!