Bonjours,
J'ai un petit soucis sur les sources du tuto.
Lorsque je clique sur le panier il m'affiche ceci :

Merci d'avance de votre réponse.

21 réponses


LesTutossUE4
Auteur
Réponse acceptée

Pour ceux qui aurais un problème avec le script :

Requis : Version PHP >= 5.3

salut,
visiblement, ce n'est pas un tableau qui est envoyé a la fonction array_keys; peux tu poster ton code?

eric

Pas besoin de le poster -_- C'est celui des sources .

Quoiqu'il en soit, le message d'erreur est explicite : le premier paramètre de la fonction array_keys doit être un array, et ce n'est pas un array que tu lui as transmis... Tu peux ajouter une condition if( is_array( $aMonArray ) ), histoire de...

quel est ta version de PHP ?

Ma configuration:
PHP 5.2
Mysql 5.0

Leny > Peut être mais pourquoi suis-je, apparemment, le seul qui a ce problème alors que je n'ai pas toucher au code des sources ?

Je n'est pas accès au source, et je n'ai pas envie de regarder tout le tutoriel pour savoir d’où cela peut venir, alors ça serait bien de nous remettre la partie du code d’où proviens l'erreur.

Et si tu es apparemment le seul à avoir ce problème, soit c'est parce tu es le premier à avoir tester les sources, soit parce que ta version de PHP est peut être trop vielle, et pour confirmer ton problème il nous faudrait le code source ;)

Et pour finir, peux tu nous faire un print_r() de ton tableau $_SESSION ?
Pour voir à quoi il ressemble.

Ok, merci, je m'attendais juste au morceau de code correspondant aux erreur indiquées ^^

Alors d'après ta session, tu n'a aucun produit dans ton panier et surtout, alors que t'as session et censé être un tableau, c'est un objet de ton panier, ce qui n'est pas normal. Je n'es pas encore tout lu, je te redis si je trouve d’où cela peut venir ;)

J'ai bien regarder, et finalement je ne vois pas le problème, ta Session n'est pas censé être comme cela, ta session contient carrément ta class panier, et non pas le panier du client.

Y à t'il un moment sur une autre page ou tu affectes ta class Panier à ta session ? Avec un bout de code de ce genre :

$panier = new Panier($BD);
et
$_SESSION'panier'] = $panier;

???

Pour info voilà à quoi devrait ressembler ta $_SESSION,

Sans aucun produit:

Array (
    'panier'] => Array ()
)

Avec des produit:

Array (
    'panier'] => Array (
        'idProduit'] => 'Quantité',
        'idProduit'] => 'Quantité'
    )
)

Si ta session était de cette forme là, alors les fonctions array_keys() et array_sum() marcherais bien, alors que là ta session à l'index 'panier' contient un objet de la class Panier et non un tableau de produit ;)

L'érreur ne provient-elle pas de là ? :

$DB = new DB();
$panier = new panier($DB);

J'ai changer les

<?=

en

<?php echo

mais ça ne change rien.. :(

Y à t-il d'autre page que tu ne nous montre pas du site, qui peuvent avoir une influence sur ta $_SESSION ou ton panier ?

Je regarde sa et je te redis si je trouve d'où ça peut venir ;)

Au passage, rajoute sa

if(isset($_SESSION'panier'])){
    unset($_SESSION'panier']);
    $_SESSION'panier'] = array();
}

dans ta fonction :
public function __construct($DB){}

Sans retirer le reste, tu rajoute sa entre les 2 premiers bloques if.

Le problème viens peut être d'une session récurente qui ne veux pas s’effacer.

Je pense avoir trouvé d'où viens le problème, ça doit bien venir d'une session récurrent, en gros elle était là avant que tu ne commence à mettre en place le code, et maintenant qu'elle est là elle plante tout le reste.

Dans ton fichier panier.class.php
remplace ta méthode __consctruct() par celle ci

public function __construct($DB){
        if(!isset($_SESSION)){
            session_start();
        }
        session_destroy();
}

En gros ça va te détruire ta session actuel, une fois le problème régler remets la vielle méthode et le problème devrait être régler ;)

Cela ne fonctionne pas non plus :s. Regarde par toi même : [url=http://themes.darksolution.fr/panier/]\*\*Mon site**[/url]

Bon et bien, malgré que les sources soit uniquement pour les comptes premium, j'ai récupérer les différents fichier, je me suis fait une base de données et j'ai repris le CSS depuis ton site ^^

J'ai décidé de reprendre un peut le code, et donc de voir ce qui pouvait allé ou pas, et à priori sa marche plutôt bien, sans problème.

Je t’envoie le .zip de ce que j'ai fais, tu me dira si sa marche bien chez toi ;)
E-Commerce.zip

Je t'explique un peut ce que tu dois faire dans mon dossier.

Dans le fichier Config.class.php, tu dois configurer ta base de données, pour pouvoir te connecter.
Puis dans Database.class.php tu dois choisir sur quel base de données (Que tu aura définis dans le fichier Config.class.php) tu veux te connecter.
Ensuite tu peux tester si sa marche, enfin si tout marche bien dans le fichier Panier.class.php, j'ai indiqué une partie à supprimer une fois le problème résolus.

Voilà, j'espère que sa marchera cette fois ;)
PS: J'ai un peut changer le fichier app.js, quand on ajoute un produit, il ne nous demande plus si on veut voir notre panier ou non, mais tu peux remettre comme auparavant ;)

Toujours le même problème, cependant les boutons d'ajout fonctionnent et le panier se rempli mais lors de l'affichage :/ [url=http://themes.darksolution.fr/]\*\*Mon Site**[/url]

Effectivement lors de la visite de la page du panier, tout bloque =S

J'ai remarqué en bas de page cette erreur, Fatal error: Exception thrown without a stack frame in Unknown on line 0 , je ne connais pas celle là, le problème viens peut être de là =S

J'ai aussi remarqué que quand on supprimais les cookies quand on est sur la page du panier, et qu'on réactualise, alors il marche.
Bug bien mystérieux, je préviens si je trouve quelque chose ;)
(Mais à mon avis, à ce niveau là, sa doit venir de la config PHP)

Fatal error: Exception thrown without a stack frame in Unknown on line 0
Je l'avais même pas vu x)
J'ai chercher, je comprend pas de où ça vient ..

C'est effectivement la version php qui ne fonctionné pas. J'ai tester sur Wamp avec PHP 5.3 et cela fonctionne.