Merci de votre aide pour commencer ! Eh bien comme je l'ai déjà dit ça a l'air de bien fonctionner !
Lorsque ma session est vide et que je n'ai rien ajouté à mon panier, $_GET contient un array() soit un tableau vide c'est ce que je cherche. Quand je rajoute un article, ça me fait bien ce qu'il faut également : Array ( [action] => ajout [qt] => 1 [id] => 25 ) mais dès que je quitte la page ça disparaît et revient à array()...
Quant au $_POST il est toujours vide, array() puisque je ne m'en sers pas.
Donc j'arrive à avoir dans $_GET mon action, l'ajout, sachant que l'id produit est 25 et sa quantité 1.
Ensuite dans mon fichier j'ai mis :
1 2 3
| If ($action == (ajout)) {
ajouter_article($id, $qt);
} |
Sachant que j'appelle la fonction suivante :
1 2 3 4 5 6
| function ajouter_article($id, $qt){ // Fonction d'ajout d'article
if(isset($_SESSION['panier'][$id]))
$_SESSION['panier']['id'] += qt;
else
$_SESSION['panier'][$id] = $qt; // On ajoute au panier dans la session le produit d'id $id et dont la quantité vaut 1 (l'id est la clé et la quantité la valeur)
} |
Et je récupère tous les produits de mon panier en faisant :
$liste = get_allproduits($bdd, $produits_panier);
Grâce à cette fonction :
1 2 3 4 5 6 7 8 9
| function get_allproduits($bdd, $produits_panier){ // Récupération des informations des produits dans la bdd
$liste = array();
foreach($_SESSION['panier'] as $id => $qt){
$produit = get_produit($id, $bdd);
$produit['qt'] = $qt;
$liste[] = $produit;
}
return $liste;
} |
Qui appelle elle-même celle-ci (get_produit) :
1 2 3 4 5
| function get_produit($id, $bdd){ // Récupération des informations d'un produit dans la bdd
$requete = $bdd->prepare('SELECT * FROM produits WHERE id=:id'); // PDO : On prépare la requête - récupération des informations du produit d'id $id (:id)
$requete->execute(array('id' => $id)) or exit(print_r($requete->errorInfo())); // PDO : On exécute la requête
return $requete->fetch(); // On retourne le résultat
} |
Jusqu'ici tout fonctionne parfaitement je pense puisque comme je l'ai déjà dit un var_dump de ma $liste me retourne bien toutes les informations de tous les produits ajoutés.
Je ne comprends donc pas, je dois avoir un problème dans mon affichage, mais où ? Le voici :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60
| <form method="post" action="panier.php" align="center">
<table border="1" bgcolor="cccccc"><tr>
<th>Serveur</th>
<th>Disponibilité</th>
<th>Quantité de kamas</th>
<th>Prix unitaire</th>
<th>Quantité</th>
<th>Supprimer</th>
</tr>
<?php
print_r($_POST);
try {
$bdd = new PDO('mysql:host=' . $sql_host . ';dbname=' . $sql_db, $sql_user, $sql_password);
}
catch (Exception $e) {
echo "Erreur lors de la connexion à la base de données !";
}
$id = $_GET['id'];
$qt = $_GET['qt'];
$action = $_GET['action'];
If ($action == (ajout)) {
ajouter_article($id, $qt);
}
Elseif ($action == (suppression)) {
supprimer_article($id);
}
Elseif ($action == ("")) {
echo "";
}
Else {
echo "Cette action est impossible.";
}
$liste = get_allproduits($bdd, $produits_panier);
?>
<tr>
<td><?php echo stripslashes($liste['nom']); ?></td>
<td>
<?php if ($liste['Disponibilité'] == 1)
{
echo "<center><img src=\"style/logos/yes.png\"></center>";
}
else
{
echo "<center><img src=\"style/logos/no.jpg\"></center>";
}
?>
</td>
<td><?php echo stripslashes($liste['Quantité']); ?>K</td>
<td><?php echo stripslashes($liste['prix']); ?></td>
<td><input type="text" size="4" name="q[]" value="<?php echo $qt ?>"></td>
<td><center><a href="panier.php?action=suppression&id=<?php echo $id ?>"><img src="style/logos/delete.png"></a></center></td>
</tr>
</table>
<p align="Right" ><input type="submit" value="Recalculer"/>
<input type="hidden" name="action" value="refresh"/></p>
</form> |
Partager