probleme de fonction

Invité
Invité n'ayant pas de compte PHPfrance

31 juil. 2005, 11:32

Bonjour

J'ai cette fonction - qui verifie la présence d'un article dans un panier
function verif_panier($ref_article)
{
    $present = false;
    if(array_search($ref_article,$_SESSION['liste']['reference']) != false)
    {
        $present = true;
    }
    return $present;
}
je veux ensuite lancer cette function, je recupere d'abord une variable qui contient la reference de l'article
$reference=$HTTP_GET_VARS['VARarticles'];
puis je veux appeler la function pour verifier que cet article n'est pas deja dans ma liste, j'entre le code qui suit, mais ça me renvois une erreur, (array_search(): Wrong datatype for second argument )ou est la mienne.. d'erreur ?
verif_panier($reference);
merci

ViPHP
ViPHP | 1380 Messages

31 juil. 2005, 11:40

Tu as oublié de passer ton tableau $_SESSION['liste']['reference'] en argument de ta fonction. Vérifie aussi si c'est effectivement bien un tableau.
ripat

Eléphant du PHP | 294 Messages

31 juil. 2005, 11:54

je comprend pas trés bien, oui c'est effectivement un tableau, par contre, ou devrais-je passer le tableau en argument?

merci

ViPHP
ViPHP | 1380 Messages

31 juil. 2005, 12:00

Bon, ça m'apprendra à répondre trop vite, le tableau $_SESSION est une superglobale donc visible de partout, y compris dans ta fonction. Reste à t'assurer qu'il s'agit bien d'un tableau.
ripat

Mammouth du PHP | 19672 Messages

31 juil. 2005, 12:03

Ce que Ripat veut dire c'est ceci:
function verif_panier($ref_article)
{
    $present = false;
    if(is_array($_SESSION['liste']['reference']))
    {
        if(array_search($ref_article,$_SESSION['liste']['reference']) != false)
        {
            $present = true;
        }
    }
    return $present;
}
Ensuite j'ajoute que tu utilises une formulation obsolète:
$reference=$HTTP_GET_VARS['VARarticles'];
devrait être:
$reference=$_GET['VARarticles'];
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 294 Messages

31 juil. 2005, 16:12

Bon j'arrive pas a faire marcher ma fonction meme si mon code ne genere plus d'erreur. J'en donne plus car je dois faire une erreur de tableau:

voila comment je créé le tableau :

$reference=$GET_VARS['VARarticles'];
$nb=1; //par défaut la quantité est = 1
$prixUnit=$HTTP_GET_VARS['prixUnit'];
$liste[]=array($reference,$nb,$prixUnit,$prix);
$HTTP_SESSION_VARS['liste']=$liste;

ensuite j'ai donc ça pour verifier que la reference n'a pas d'éja été mise dans le panier- (je pense que mon erreur est dans la façon donc je recupere les données du tableau) :


function verif_panier($ref_article)
{
$present = false;
if(is_array($_SESSION['liste'][1]))
{
if(array_search($ref_article,$_SESSION['liste'][1]) != false)
{
$present = true;
}
}
return $present;
}

verif_panier($reference);


ça marche pas donc, ou est l'erreur ?

Mammouth du PHP | 19672 Messages

31 juil. 2005, 16:14

Modération : Gico, voudrais-tu éditer ton message et le mettre en forme ? (règles du forum, article 3 première ligne !)

Marre de répéter sans arret la même chose :evil:
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 294 Messages

31 juil. 2005, 17:09

Désolé, j'espere que c'est mieux ainsi

j'arrive pas a faire marcher ma fonction meme si mon code ne genere plus d'erreur. J'en donne plus car je dois faire une erreur de tableau:

voila comment je créé le tableau :
$reference=$GET_VARS['VARarticles'];
$nb=1; //par défaut la quantité est = 1
$prixUnit=$HTTP_GET_VARS['prixUnit'];
$liste[]=array($reference,$nb,$prixUnit,$prix);
$HTTP_SESSION_VARS['liste']=$liste;
ensuite j'ai donc ça pour verifier que la reference n'a pas d'éja été mise dans le panier- (je pense que mon erreur est dans la façon donc je recupere les données du tableau) :
function verif_panier($ref_article)
{
$present = false;
if(is_array($_SESSION['liste'][1]))
{
if(array_search($ref_article,$_SESSION['liste'][1]) != false)
{
$present = true;
}
}
return $present;
}

verif_panier($reference);
ça marche pas donc, ou est l'erreur ?

Mammouth du PHP | 19672 Messages

31 juil. 2005, 18:48

En fait il y a une erreur et une méconnaissance.
La méconnaissance, c'est que tu utilises une formulation obsolète, on utilise plus $HTTP_SESSION_VAR, mais $_SESSION tout court.
Ce n'est pas non plus $GET_VAR mais $_GET.
Ensuite, si tu mets un tableau dans une variable, il faut la déclarer comme telle. Ce qui donne:
$reference=$_GET['VARarticles'];
$nb=1; //par défaut la quantité est = 1
$prixUnit=$_GET['prixUnit'];
$liste[]=array($reference,$nb,$prixUnit,$prix);
$_SESSION['liste'] = array();
$_SESSION['liste']=$liste;
Mais on peut simplifier :
$reference=$_GET['VARarticles'];
$nb=1; //par défaut la quantité est = 1
$prixUnit=$_GET['prixUnit'];
$_SESSION['liste'] = array($reference,$nb,$prixUnit,$prix);
Commence déjà avec ça et reviens s'il y a un problème avec la fonction.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 294 Messages

31 juil. 2005, 19:35

Merci, je vais mettre à jour ma façon de coder, cependant je n'arrive toujours pas a faire fonctionner ma fonction.

Mon premier bloc est celui-ci, il permet de verifier la présence d'un article dans le panier :
/**
* Vérifie la présence d'un article dans le panier
*/
$reference=$_GET['VARarticles'];
function verif_panier($ref_article)
{
    $present = false;
    if(is_array($_SESSION['liste'][1]))
    {
        if(array_search($ref_article,$_SESSION['liste'][1]) != false)
        {
            $present = true;
        }
    }
    return $present;
}

verif_panier($reference);
ensuite j'ai celui-ci, celui que tu m'a corrigé
// la variable ajoutPanier, est renvoyeée par le bouton commandée de chaque article
if ($ajoutPanier=="AJOUTER" && $present == false)
{ 
$reference=$_GET['VARarticles'];
$nb=1; 
$prixUnit=$_GET['prixUnit'];
$liste[]=array($reference,$nb,$prixUnit,$prix);
$_SESSION['liste'] = array();
$_SESSION['liste']=$liste;
}
et donc ça ne fonctionne pas , même si un article est dans le panier, je peut le rajouter a nouveau. je me demande si c'est pas la que ça blaisse
$_SESSION['liste'][1]

Merci

Mammouth du PHP | 19672 Messages

31 juil. 2005, 19:42

Fais afficher ta variable de session dans un var_dump et ta variable $_GET avec la même méthode : vérifie si tu utilises les bons index.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe: