par
Bioas » 10 mai 2006, 23:27
Je n'ai aucune idée de ce qui peut ce produire dans ton code moi aussi. Je n'ai aps vraiment le temps d'étudié le cas non plus mais tu pourais essaillé de testé ton code sur une autre machine avec des configuration semblable. Test en fonction du temps mais aussi si cela ce reproduit plusieur fois. Tu pourra alors savoir si l'erreur se reproduit a chaque fois et si c'est le serveur qui est en cause. Après tout sa si le problème persiste, je te conseille de faire une classe ou de fonction pour gèré tout tes item plus facilement. Je te donne un petit apercu.
Tu pourais passé la liste des item par un paramètre "GET", il se retrouve à la fin de l'adresse, par un cookie ou encore les session si elles ne cause pas de problèmes. Tes item doivent être dans une bdd alors ils ont des identifiant. Que se soit un nom un numéro ou nimporte quoi d'autre tu pourais te servir ce celui-ci. Regarde bien :
Code : Tout sélectionner
// La variable session contien le panier depuis que l'utilisateur navigue...
$_SESSION['BASKET']=$_SESSION['BASKET']; // Sa valeur bien sur....
// Mais elle pourais ici être ...
$_SESSION['BASKET']="%A2BC3:2%AC456:1%B37DA:0";
// Donc tu as ici l'item A2BC3 deux fois, AC456 une fois et B37DA aucune fois.
Ensuite il te reste a gèré sa. La sa devient plus compliqué.. et je n'ai aps beaucoup de temps, alors je t'explique rapidement. Surement que quelqu'un pourais te donné de l'aide ici.
Tu déclare une ou des variables globale, généralement des tableau. Disont un tableau. Pour chaque case dans celui ci tu retrouve un autre tabvleau avec les information du panier pour les traité dans ta page. Tu remplis ce tableau avec la variable de session a l'aide d'une fonction qui sais le faire.
Tu doit utilisé la commande Explode() pour séparé la chaine en plusieur partie avec les symbole que tu veut. Donc la fonction traite la variable session et affecte ceci au tableau. voila un petit début :
Code : Tout sélectionner
Globa $Basket;
Function fillBasket($String) {
// Le code ici...
Return $Resulta;
}
$Basket=fillBasket($_SESSION['BASKET']);
Après tu parcour ton tableau pour affiché tes item un a la fois avec les information dans la bdd comme leur nom. Pour en ajouté tu fait une ou plusieur fonction qui font le travail en parcourant ton tableau.
Tout ce que tu as a faire pour que tout fonctionne est de définir ta variable de session avec une autre fonction qui converti ton tableau en chaine de caractère avec la commande Implode(). Cette commande fait l'inverse d'explode.
Code : Tout sélectionner
Function setSession($Tableau) {
// le code et finalement
$_SESSION['BASKET']=$String;
}
// Mais moi j'aime mieux comme sa :
Function setSession($Tableau) {
//Le code qui se charge de convertir le tableau en chaine...
Return $Resultat; // Ou string...
}
$_SESSION['BASKET']=setSession($Basket);
Et la classe est la meilleur option car elle contien toutes ces méthode et tu peut l'utilisé comme ceci :
Code : Tout sélectionner
$BasketClass=new Basket;
$BasketClass->Fill($_SESSION['BASKET']);
// Ta page... Tes fonction.. requète....
// Petit exemple
$Basket->increaseItem("A2BC3");
// Et à la fin :
$BasketClass->setSession("$_SESSION['BASKET']");
// Regarde bien la fin de ce setSession :
Function setSession($VarSession) {
Eval($VarSession."=".$String.";"); // Ici on prend ta variable de session et on met la chainne qui contien tout le panier pour la prochaine page..
}
Les classe sont parfois compliqué car il y as énormément de façon de les créer pour arrivé a faire ce que l'ont veut. Alors si tu ne veut pas les apprendre et expérimenté contente toi de Fonction simple que tu fait dans un fichier a inclure dans ta page ou ton script....
J'espère avoir pu t'aidé
Je n'ai aucune idée de ce qui peut ce produire dans ton code moi aussi. Je n'ai aps vraiment le temps d'étudié le cas non plus mais tu pourais essaillé de testé ton code sur une autre machine avec des configuration semblable. Test en fonction du temps mais aussi si cela ce reproduit plusieur fois. Tu pourra alors savoir si l'erreur se reproduit a chaque fois et si c'est le serveur qui est en cause. Après tout sa si le problème persiste, je te conseille de faire une classe ou de fonction pour gèré tout tes item plus facilement. Je te donne un petit apercu.
Tu pourais passé la liste des item par un paramètre "GET", il se retrouve à la fin de l'adresse, par un cookie ou encore les session si elles ne cause pas de problèmes. Tes item doivent être dans une bdd alors ils ont des identifiant. Que se soit un nom un numéro ou nimporte quoi d'autre tu pourais te servir ce celui-ci. Regarde bien :
[code]
// La variable session contien le panier depuis que l'utilisateur navigue...
$_SESSION['BASKET']=$_SESSION['BASKET']; // Sa valeur bien sur....
// Mais elle pourais ici être ...
$_SESSION['BASKET']="%A2BC3:2%AC456:1%B37DA:0";
// Donc tu as ici l'item A2BC3 deux fois, AC456 une fois et B37DA aucune fois.
[/code]
Ensuite il te reste a gèré sa. La sa devient plus compliqué.. et je n'ai aps beaucoup de temps, alors je t'explique rapidement. Surement que quelqu'un pourais te donné de l'aide ici.
Tu déclare une ou des variables globale, généralement des tableau. Disont un tableau. Pour chaque case dans celui ci tu retrouve un autre tabvleau avec les information du panier pour les traité dans ta page. Tu remplis ce tableau avec la variable de session a l'aide d'une fonction qui sais le faire.
Tu doit utilisé la commande Explode() pour séparé la chaine en plusieur partie avec les symbole que tu veut. Donc la fonction traite la variable session et affecte ceci au tableau. voila un petit début :
[code]
Globa $Basket;
Function fillBasket($String) {
// Le code ici...
Return $Resulta;
}
$Basket=fillBasket($_SESSION['BASKET']);
[/code]
Après tu parcour ton tableau pour affiché tes item un a la fois avec les information dans la bdd comme leur nom. Pour en ajouté tu fait une ou plusieur fonction qui font le travail en parcourant ton tableau.
Tout ce que tu as a faire pour que tout fonctionne est de définir ta variable de session avec une autre fonction qui converti ton tableau en chaine de caractère avec la commande Implode(). Cette commande fait l'inverse d'explode.
[code]
Function setSession($Tableau) {
// le code et finalement
$_SESSION['BASKET']=$String;
}
// Mais moi j'aime mieux comme sa :
Function setSession($Tableau) {
//Le code qui se charge de convertir le tableau en chaine...
Return $Resultat; // Ou string...
}
$_SESSION['BASKET']=setSession($Basket);
[/code]
Et la classe est la meilleur option car elle contien toutes ces méthode et tu peut l'utilisé comme ceci :
[code]
$BasketClass=new Basket;
$BasketClass->Fill($_SESSION['BASKET']);
// Ta page... Tes fonction.. requète....
// Petit exemple
$Basket->increaseItem("A2BC3");
// Et à la fin :
$BasketClass->setSession("$_SESSION['BASKET']");
// Regarde bien la fin de ce setSession :
Function setSession($VarSession) {
Eval($VarSession."=".$String.";"); // Ici on prend ta variable de session et on met la chainne qui contien tout le panier pour la prochaine page..
}
[/code]
Les classe sont parfois compliqué car il y as énormément de façon de les créer pour arrivé a faire ce que l'ont veut. Alors si tu ne veut pas les apprendre et expérimenté contente toi de Fonction simple que tu fait dans un fichier a inclure dans ta page ou ton script....
J'espère avoir pu t'aidé