Pb Php array
Résolu
nab13
Messages postés
54
Date d'inscription
Statut
Membre
Dernière intervention
-
nab13 Messages postés 54 Date d'inscription Statut Membre Dernière intervention -
nab13 Messages postés 54 Date d'inscription Statut Membre Dernière intervention -
Bonjour à tous;
Je suis en train d'essayer de construire un panier virtuel qui est presque fini mais le pb est que je n'arrive pas à stocker plus de 5 articles dedans...
Je récupère les infos des articles via un formulaire dans une autre page et je les stocke dans une variable de session.
Voici le code :
<?
SESSION_start() ;
/* je recupere les données*/
$a=trim($_POST["prix"]);
$b=trim($_POST["qte"]);
$select = array();
$select["ref"]=$_POST["ref"];
$select["des"]=$_POST["des"];
$select["prix"]=$_POST["prix"];
$select["qte"]=$_POST["qte"];
$select["total"]=$a*$b;
/* Si la variable de session qui sert à stocker les articles n'est pas crée*/
if (!isset($_SESSION["panier"]))
{
$_SESSION["panier"] = array();
$_SESSION["panier"]["reference"] = array();
$_SESSION["panier"]["description"] = array();
$_SESSION["panier"]["prix"] = array();
$_SESSION["panier"]["qte"] = array();
$_SESSION["panier"]["total"] = array();
array_push($_SESSION["panier"]["reference"],$select["ref"]);
array_push($_SESSION["panier"]["description"],$select["des"]);
array_push($_SESSION["panier"]["prix"],$select["prix"]);
array_push($_SESSION["panier"]["qte"],$select["qte"]);
array_push($_SESSION["panier"]["total"],$select["total"]);
header ("location:mapage.php");
}
/* sinon je rajoute les données à la fin du tableau*/
else
{
array_push($_SESSION["panier"]["reference"],$select["ref"]);
array_push($_SESSION["panier"]["description"],$select["des"]);
array_push($_SESSION["panier"]["prix"],$select["prix"]);
array_push($_SESSION["panier"]["qte"],$select["qte"]);
array_push($_SESSION["panier"]["total"],$select["total"]);
header ("mapage.php");
}
?>
Pour afficher toutes les données du panier j'ai fais ce script (c'est juste pour tester je sais que c'est pas beau)
<?
SESSION_start() ;
if (isset($_SESSION["panier"]))
{
$result = sizeof($_SESSION["panier"]);
For ($i=0;$i < $result;$i++)
{
echo $_SESSION["panier"]["reference"] [$i];
echo "<br /> <br/>";
echo $_SESSION["panier"]["description"] [$i];
echo "<br /> <br/>";
echo $_SESSION["panier"]["prix"] [$i];
echo "<br /> <br/>";
echo $_SESSION["panier"]["qte"] [$i];
echo "<br /> <br/>";
echo $_SESSION["panier"]["total"] [$i];
echo "<br /> <br/>";
echo "<br /> <br/>";
}
}
else
{
header("location:mapage.php");
}
En résumé en cliquant sur ajouter au panier, les 5 premiers éléments s'ajoutent mais pas le reste.
Voila si quelqu'un avait une idée cela serait formidable
Merci d'avance
Je suis en train d'essayer de construire un panier virtuel qui est presque fini mais le pb est que je n'arrive pas à stocker plus de 5 articles dedans...
Je récupère les infos des articles via un formulaire dans une autre page et je les stocke dans une variable de session.
Voici le code :
<?
SESSION_start() ;
/* je recupere les données*/
$a=trim($_POST["prix"]);
$b=trim($_POST["qte"]);
$select = array();
$select["ref"]=$_POST["ref"];
$select["des"]=$_POST["des"];
$select["prix"]=$_POST["prix"];
$select["qte"]=$_POST["qte"];
$select["total"]=$a*$b;
/* Si la variable de session qui sert à stocker les articles n'est pas crée*/
if (!isset($_SESSION["panier"]))
{
$_SESSION["panier"] = array();
$_SESSION["panier"]["reference"] = array();
$_SESSION["panier"]["description"] = array();
$_SESSION["panier"]["prix"] = array();
$_SESSION["panier"]["qte"] = array();
$_SESSION["panier"]["total"] = array();
array_push($_SESSION["panier"]["reference"],$select["ref"]);
array_push($_SESSION["panier"]["description"],$select["des"]);
array_push($_SESSION["panier"]["prix"],$select["prix"]);
array_push($_SESSION["panier"]["qte"],$select["qte"]);
array_push($_SESSION["panier"]["total"],$select["total"]);
header ("location:mapage.php");
}
/* sinon je rajoute les données à la fin du tableau*/
else
{
array_push($_SESSION["panier"]["reference"],$select["ref"]);
array_push($_SESSION["panier"]["description"],$select["des"]);
array_push($_SESSION["panier"]["prix"],$select["prix"]);
array_push($_SESSION["panier"]["qte"],$select["qte"]);
array_push($_SESSION["panier"]["total"],$select["total"]);
header ("mapage.php");
}
?>
Pour afficher toutes les données du panier j'ai fais ce script (c'est juste pour tester je sais que c'est pas beau)
<?
SESSION_start() ;
if (isset($_SESSION["panier"]))
{
$result = sizeof($_SESSION["panier"]);
For ($i=0;$i < $result;$i++)
{
echo $_SESSION["panier"]["reference"] [$i];
echo "<br /> <br/>";
echo $_SESSION["panier"]["description"] [$i];
echo "<br /> <br/>";
echo $_SESSION["panier"]["prix"] [$i];
echo "<br /> <br/>";
echo $_SESSION["panier"]["qte"] [$i];
echo "<br /> <br/>";
echo $_SESSION["panier"]["total"] [$i];
echo "<br /> <br/>";
echo "<br /> <br/>";
}
}
else
{
header("location:mapage.php");
}
En résumé en cliquant sur ajouter au panier, les 5 premiers éléments s'ajoutent mais pas le reste.
Voila si quelqu'un avait une idée cela serait formidable
Merci d'avance
A voir également:
- Pb Php array
- Easy php - Télécharger - Divers Web & Internet
- Expert php pinterest - Télécharger - Langages
- Retour a la ligne php - Forum Webmastering
- Alert php - Forum PHP
- Retour a la ligne php ✓ - Forum PHP
2 réponses
Bonjour,
Ton résultat est due à une petite erreur (d'inattention généralement), regarde bien l'entier que tu récupère ici :
A quoi correspond-t-il ? -> à la taille de ta variable "panier" qui est en fait un tableau avec 5 éléments (reference, description, prix, qte et total)
Si tu souhaites récupérer le nombre d'éléments stockés, il faut faire :
Sinon, plutot que de stocker 5 tableaux contenant les informations pour chaque article, pourquoi ne fais-tu pas plutôt une liste des articles tout simplement (liste de tableau), représentée de la manière suivante :
Un stockage de cette façon te permettra de compter le nombre d'élément stocké bien plus facilement, mais aussi de controle si un élément n'a pas déjà été ajouté au panier et de supprimer un élément en ayant sa référence.
Ton code pour ajouter un article à ton panier serait le suivant :
Et le code pour supprimer un article via la référence :
Ton résultat est due à une petite erreur (d'inattention généralement), regarde bien l'entier que tu récupère ici :
$result = sizeof($_SESSION["panier"]);
A quoi correspond-t-il ? -> à la taille de ta variable "panier" qui est en fait un tableau avec 5 éléments (reference, description, prix, qte et total)
Si tu souhaites récupérer le nombre d'éléments stockés, il faut faire :
$result = sizeof($_SESSION["panier"]["reference"]);
Sinon, plutot que de stocker 5 tableaux contenant les informations pour chaque article, pourquoi ne fais-tu pas plutôt une liste des articles tout simplement (liste de tableau), représentée de la manière suivante :
$_SESSION["panier"] = { reference => article { reference, description, prix, qte et total }, reference => article { reference, description, prix, qte et total }, ... etc ... }
Un stockage de cette façon te permettra de compter le nombre d'élément stocké bien plus facilement, mais aussi de controle si un élément n'a pas déjà été ajouté au panier et de supprimer un élément en ayant sa référence.
Ton code pour ajouter un article à ton panier serait le suivant :
if ( !empty($_SESSION['panier']) ){ if( ! in_array($select["ref"], $_SESSION['panier'] ) ) $_SESSION['panier'][$select["ref"]] = $select; } else{ $_SESSION['panier'][$select["ref"]] = $select; }
Et le code pour supprimer un article via la référence :
if ( !empty($_SESSION['panier']) ){ unset($_SESSION['panier'][$select["ref"]]); // --- re-index session array array_values($_SESSION['panier']); }