Problème avec array_keys
Fermé
vinkey33
Messages postés
92
Date d'inscription
mercredi 9 décembre 2015
Statut
Membre
Dernière intervention
23 janvier 2021
-
Modifié le 23 sept. 2020 à 23:02
yg_be Messages postés 23342 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 21 novembre 2024 - 25 sept. 2020 à 12:03
yg_be Messages postés 23342 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 21 novembre 2024 - 25 sept. 2020 à 12:03
2 réponses
yg_be
Messages postés
23342
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
21 novembre 2024
Ambassadeur
1 550
24 sept. 2020 à 05:10
24 sept. 2020 à 05:10
bonjour, la première erreur, c'est, de ne pas tenir compte de notre demande relative à la spécification du langage PHP: https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
je suppose que l'erreur se produit sur l'instruction
est-ce exact? dans ce cas, je te suggère de nous montrer ce que contient
je suppose que l'erreur se produit sur l'instruction
$ids = array_keys($_SESSION['panier']);
est-ce exact? dans ce cas, je te suggère de nous montrer ce que contient
$_SESSION['panier'].
vinkey33
Messages postés
92
Date d'inscription
mercredi 9 décembre 2015
Statut
Membre
Dernière intervention
23 janvier 2021
Modifié le 24 sept. 2020 à 19:31
Modifié le 24 sept. 2020 à 19:31
oui mon erreur est sur array_keys qui fait tout buguer, j'ai fais un essaie avec
est me donne 0;b; a la place des articles mais il y a le même soucis sur array_keys dans le panier.class.php, il s'agit du total des article en nombre et somme, au lieu de m'afficher les totaux, il me signal les erreur suivante :
pour les totale des article
Warning: array_sum() expects parameter 1 to be array, string given in D:\Site\panierPHP\panier.class.php on line 32
pour la somme totale il me dit:
1 to be array, string given in D:\Site\panierPHP\panier.class.php on line 37
et voici panier.class.php
peut être que c'est liez!?
echo '<pre>'; print_r($_SESSION['panier']); echo '</pre>';
est me donne 0;b; a la place des articles mais il y a le même soucis sur array_keys dans le panier.class.php, il s'agit du total des article en nombre et somme, au lieu de m'afficher les totaux, il me signal les erreur suivante :
pour les totale des article
Warning: array_sum() expects parameter 1 to be array, string given in D:\Site\panierPHP\panier.class.php on line 32
pour la somme totale il me dit:
1 to be array, string given in D:\Site\panierPHP\panier.class.php on line 37
et voici panier.class.php
<?php class panier{ private $DB; public function __construct($DB){ if(!isset($_SESSION)){ session_start(); } if(!isset($_SESSION['panier'])){ $_SESSION['panier'] = array(); } $this->DB = $DB; if(isset($_GET['delPanier'])){ $this->del($_GET['delPanier']); } if(isset($_POST['panier']['quantity'])){ $this->recalc(); } } public function recalc(){ foreach($_SESSION['panier'] as $product_id => $quantity){ if(isset($_POST['panier']['quantity'][$product_id])){ $_SESSION['panier'][$product_id] = $_POST['panier']['quantity'][$product_id]; } } } public function count(){ return array_sum($_SESSION['panier']); } public function total(){ $total = 1; $ids = array_keys($_SESSION['panier']); if(empty($ids)){ $products = array(); }else{ $products = $this->DB->query('SELECT id, Prix_site FROM accesoires WHERE id IN ('.implode(',',$ids).')'); } foreach( $products as $product ) { $total += $product->Prix_site * $_SESSION['panier'][$product->id]; } return $total; } public function add($product_id){ if(isset($_SESSION['panier'][$product_id])){ $_SESSION['panier'][$product_id]++; }else{ $_SESSION['panier'][$product_id] = 1; } } public function del($product_id){ unset($_SESSION['panier'][$product_id]); } }
peut être que c'est liez!?
yg_be
Messages postés
23342
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
21 novembre 2024
1 550
25 sept. 2020 à 12:03
25 sept. 2020 à 12:03
pour t'aider à découvrir ce que fait ton code, je t'invite à faire un print_r chaque fois que tu touches à $_SESSION['panier'].