Page 1 sur 1

fonction de verification qui ne fonctionne pas...

Posté : 16 juin 2006, 10:06
par azerty53
Bonjour a toute la communauté.

j'ai un catalogue.php panier.php et fonctionpanier.php

dans mon catalogue j'ai un lien qui me fait passer dans l'url l'id du produit que je veux ajouter au panier.


je recupere l'id dans ma page panier.php et je l'ajoute a ma variable de session et je fais un echo dans mon tableau.

j'ai aussi une fonction qui doit verifier que le produit n'est pas deja dans le panier
// En parametre on passe la reference de l'article et on retourne un booleen
function verif_panier($ref_produit)
{
	// Initialisation de la variable a false
	$present = false;
	if ($nb_prod = count($_SESSION['panier']['id_produit']) != 0)
	{
		// On teste la presence ou non de la ref dans le array
		if (array_search($ref_produit,$_SESSION['panier']['id_produit']) == true)
		{
			$present = true;
		}
	}
	return $present;
}
et dans mon panier je verifie comme ca
$present = verif_panier($id_produit);
if ($present == true)
{
	echo 'produit existant';
}
else
{
ajout($select);
}
mais il me rajoute quand meme le produit meme si il est deja dans le panier.

:: Si je fais un echo du $id_produit j'ai bien l'id du produit à ajouter.

mais je comprend pas pourquoi il ne veut pas faire la verification.

si quelqu'un pouvait me donner un petit coup de main

merci beaucoup

Posté : 16 juin 2006, 10:15
par Ryle
Met des echo dans ta fonction pour savoir dans quels if() il rentre, cela t'aidera à voir à quel endroit il y a un problème.

Affiche nottament les valeurs que tu tests, ca te permettra :

- echo $ref_produit;
- print_r($_SESSION['panier']['id_produit']);
- echo array_search($ref_produit,$_SESSION['panier']['id_produit']);

array_search() retourne la clé associée à l'élément que tu recherche s'il le trouve... je ne sais pas s'il est très judicieux de le comparer à un boolean
in_array() me semble plus adapté dans ce cas...

Posté : 16 juin 2006, 10:23
par azerty53
1 point for ryle c'est le in_array qu'il fallait !

MERCHI BEAUCOUP A TOI :wink: :wink: :wink: et bonne journée à vous

Posté : 16 juin 2006, 10:31
par azerty53
juste encore une petite question.

j'ai une fonction vider le panier qui vide la variable de session.

est ce que je peux faire un lien hypertexte qui fait appel a une fonction php ??

mais qui ne s'execute que si on clique sur le lien
:roll: :roll: :roll:

Posté : 16 juin 2006, 10:32
par Mouet
Sans rafraichissement de page?

Posté : 16 juin 2006, 10:33
par azerty53
si il raffraichit la page et me vide le panier mais je ne veux pas qu'il le vide a chaque fois que je raffraichis la page (genre quand j'appuye sur f5) mais vraiment que si je clique sur le lien

Posté : 16 juin 2006, 10:39
par Mouet
Bhen tu fais un bouton qui rafraichi la page avec un element en _GET ou _POST qui dit que c'est pour vider le pannier.

Ensuite, pour pas le vider plusieurs fois, tu vérifie simplement avec count() sur ton array :D Si c'est = 0, il n'y a plus rien donc, rien à faire

Posté : 16 juin 2006, 10:40
par azerty53
j'ai teste cela mais ca fonctionne pas il me vide toujours le panier
<a href="#" onclick="<?php vider_panier()?>">vider le panier</a>
:cry: :cry:

EDIT: Je vais tester ta solution mouet ;)

Posté : 16 juin 2006, 11:12
par Ryle
Petit rappel : PHP s'exécute sur le serveur (donc en tout premier), c'est lui qui génère le html qui sera envoyé au client. Tu ne peux donc pas exécuter du php depuis ta page html, tu es obligé de recharger la page (où tout du moins de faire appel au serveur)

Tel que tu as écrit ton code, il va donc faire appel à ta fonction vider_panier() lorsqu'il exécutera php et générer le code html ensuite. D'où la perte de tes données à chaque fois :)