fonction de verification qui ne fonctionne pas...

Eléphant du PHP | 119 Messages

16 juin 2006, 10:06

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

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

16 juin 2006, 10:15

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...

Eléphant du PHP | 119 Messages

16 juin 2006, 10:23

1 point for ryle c'est le in_array qu'il fallait !

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

Eléphant du PHP | 119 Messages

16 juin 2006, 10:31

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:

Eléphant du PHP | 112 Messages

16 juin 2006, 10:32

Sans rafraichissement de page?
Image

Eléphant du PHP | 119 Messages

16 juin 2006, 10:33

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

Eléphant du PHP | 112 Messages

16 juin 2006, 10:39

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
Image

Eléphant du PHP | 119 Messages

16 juin 2006, 10:40

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 ;)

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

16 juin 2006, 11:12

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 :)