Qui peut m'expliquer les fonctions et leur utilisation?

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Qui peut m'expliquer les fonctions et leur utilisation?

par coxine » 26 juin 2006, 13:58

bon !
J'ai des progrès à faire, je vois que j'arrive à utiliser les tblx multidimensionnels, les sessions etc...comme là il s'agissait d'essayer de comprendre les fonctions et l'appel aux fonctions, j'ai vu.
De là à mettre en application c'est moins évident.
Alors je pense que je vais essayer de construire mes propres fonctions.
Je vais étudier le pattern PRG, je trouve ça extra !
Le header m'a enlevé une épine du pied !!!
:lol:
Chuis contente !
Bye bye !!! j'arrete là ça chauffe trop et merciiiiiii de votre aide les gars! :love4:

par coxine » 26 juin 2006, 12:28

grrr j'ai été déconnectée ...
Combien de temps dure la session ici ? :?:
Arf arf ! :lol: 8)

par Invité » 26 juin 2006, 12:27

C'est bien ce qu'il me semblait !
Après avoir scanné chaque ligne de son code !
J'ai donc rajouté un champ quantité, à droite duquel je vais appeler la fonction modif_quantite.
Thank's
Je file déjeuner je reviendrais plus tard !
J'ai faiiiiim

par Ryle » 26 juin 2006, 11:48

Attention toi, un coup de défense ça peut faire très mal ;p

En fait y a une chtite subtilité dans le panier de cyrano quant à la quantité : il ne met pas un nouvel article à chaque fois que tu en ajoutes un, mais va modifier l'article existant pour lui dire combien tu en veux. Donc c'est pas physiquement ton panier de course quand tu vas au supermarché du coin où quand tu veux deux articles t'en colles deux dans ton panier, mais plus ton panier catalogue la redoute livré en 48h chrono, que quand tu en veux deux, t'efface le 1 dans la grille et tu mets un 2 à la place :)

En gros, la quantité que tu dois indiquer n'est pas ce que tu ajoutes à celle déjà présente, mais la quantité finale. (L'idée étant d'avoir un champ dans lequel l'utilisateur saisi combien il en veut, et que tu colleras dans $select)

Bon bien sur tu peux le bricoler pour que ca augmente d'un la quantité à chaque fois que tu cliques sur le lien, mais ca complique quand au contraire tu veux en retirer un.. :)

par Invité » 26 juin 2006, 11:15

Hello M.. (oups) Ryle :lol: :wink:
hihi
Alors merci de ta réponse ! Ca m'aide bcp car effectivement je me suis bien dit que la quantité était toujours de un.
Mais alors, comment la paramétrer, puisque je ne vais pas la mettre dans le lien, je ne pose pas la variable comme je l'avais fait.
Et je pose donc la condition que tu me suggère.
Ce que je ne comprends pas, c'est que le calcul 1+1 si même $select['id'] ne se fait pas.
Ca veut dire que ma vérif ne se fait pas non plus ?
Pour l'affichage, je dois l'inclure dans une boucle...j'imagine
for ($i=0;$i<count($select['id']);$i++) non ?
Je refais des essais, mais je vois bien que mon truc n'est pas encore au point...il me faut encore bcp apprendre :wink: :-k

par Ryle » 26 juin 2006, 10:05

Dans ton code, c'est le contenu du tableau $select qui est important, c'est lui que tu vas mettres dans ton panier. Dans la mesure où dans tous les cas tu l'as définie à 1, il va difficilement pouvoir l'augmenter ;)

En fait, ta fonction ajout contrôle la présence de l'élément $select['id'] (donc de ton $_GET['ID_session']) dans le panier :
if (!verif_panier($select['id'])
S'il ne le trouve pas, il insère le produit (avec toutes les infos qui vont bien) dans le panier. S'il le trouve, il se contente juste de mettre à jour la quantité :
else
  $ajout = modif_qte($select['id'],$select['qte']); 
Tout ce dont tu dois t'assurer, c'est que le tableau $select est bien renseigné avec l'id de ton article et la bonne quantité.

Au lieu de :
$select['qte'] = 1; 
...
$qte = $_GET['qte']; // (ceci ne sert donc à rien, c'est dans $select qu'il faut définir la quantité. C'est $select que tu passes comme argument à ta fonction :)


Il te faudrait quelque chose du genre :
 // si une quantité est définie, on l'utilise, sinon on la définie à 1 par défaut
$select['qte'] = (isSet($_GET['qte'])) ? $_GET['qte'] : 1 ; 


Ainsi, si dans ton lien, tu ne met pas qte=xx, alors ta quantité sera égale à 1, et si dans ton lien tu mets 0 ou 5, et que le produit existe déjà dans le panier, sa quantité sera automatiquement mise à jour lors de l'appel à la fonction ajout : elle va faire appel à ta fonction modif_qte() qui supprime très certainement l'article si la quantité est égale à 0, ou met à jour la ligne correspondante sinon ;)


Et puis pour afficher le tableau autrement que par un var_dump, il te faut en fait afficher chaque élément du panier dans l'ordre :
- la première qte ['qte'][0] correspond au premier article ['ID_session'][0] et au premier intitulé ['intitule'][0] , ...
- la deuxième qte ['qte'][1] correspond au deuxième article ['ID_session'][1], ...

par coxine » 26 juin 2006, 08:57

re !
Alors j 'ai un peu avancé, je n'ai plus les messages d'erreurs, mais je crois que c'est la quantité que je gère mal...
Car le panier ne s'enrichit pas de toute la sélection d'articles, mais de la dernière à chaque fois :roll:
Voici comment je récupère les variables
/* Article exemple */ 
$select = array(); 
$select['id'] = $_GET['ID_session']; 
$select['qte'] = 1; 
$select['ID_cours'] = $_GET['ID_cours']; 
$select['date_debut'] = $_GET['date_debut']; 
$select['horaires'] = $_GET['horaires']; 
$select['intitule'] = $_GET['intitule']; 
$select['prix'] = $_GET['prix']; 
$ref_article = $_GET['ID_session'];
$qte = $_GET['qte'];
et voici ce que j'en fais....dans les fonctions panier
function ajout($select) 
{ 
    $ajout = false; 
    if(!isset($_SESSION['panier']['verrouille']) || $_SESSION['panier']['verrouille'] == false) 
    { 
        if(!verif_panier($select['id'])) 
        { 
					
            array_push($_SESSION['panier']['ID_session'],$select['id']); 
            array_push($_SESSION['panier']['qte'],$select['qte']); 
            array_push($_SESSION['panier']['ID_cours'],$select['ID_cours']); 
            array_push($_SESSION['panier']['date_debut'],$select['date_debut']); 
            array_push($_SESSION['panier']['horaires'],$select['horaires']); 
            array_push($_SESSION['panier']['intitule'],$select['intitule']); 
            array_push($_SESSION['panier']['prix'],$select['prix']);   
            $ajout = true; 
        } 
        else 
        { 
            $ajout = modif_qte($select['id'],$select['qte']); 
        } 
    } 
    return $ajout; 
} 
Est-ce que je dois définir la quantité comme je le fais en posant "1" ?
Ou bien l'associer à la référence ?
:?:

par coxine » 25 juin 2006, 15:05

coucou me revoilou...bon j'arrive pas à afficher autrement que par un var_dump() le panier...mais j'avance !
Alors, je récupère bien des élements, mais la quantité ne se modifie pas, il ajoute systématiquement le même cours..
Voilà où j'en suis :
<?php 
/* Démarrage ou prolongation de la session */ 
session_start(); 
require_once('fonctions_panier.php'); 
require_once('Connections/connexion.php'); 
/* Article exemple */ 
$select = array(); 
$select['id'] = $_GET['ID_session']; 
$select['qte'] = 1; 
$select['ID_cours'] = $_GET['ID_cours']; 
$select['date_debut'] = $_GET['date_debut']; 
$select['horaires'] = $_GET['horaires']; 
$select['intitule'] = $_GET['intitule']; 
$select['prix'] = $_GET['prix']; 
$ref_article = $select['id'];
$qte = 1;
/* On vérifie l'existence du panier, sinon, on le crée */ 
if(!isset($_SESSION['panier'])) 
{ 
    /* Initialisation du panier */ 
    $_SESSION['panier'] = array(); 
    /* Subdivision du panier */ 
    $_SESSION['panier']['qte'] = array(); 
    $_SESSION['panier']['ID_cours'] = array(); 
    $_SESSION['panier']['date_debut'] = array(); 
    $_SESSION['panier']['horaires'] = array(); 
    $_SESSION['panier']['intitule'] = array(); 
    $_SESSION['panier']['prix'] = array(); 
} 

$ok = ajout($select);
et la page fonctions_panier.php
Qui est une reprise du tuto
<?php 
/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */ 
/*                Fonctions de base de gestion du panier                   */ 
/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */ 

/** 
 * Ajoute un article dans le panier après vérification que nous ne somme pas en phase de paiement 
 * 
 * @param array  $select variable tableau associatif contenant les valeurs de l'article 
 * @return Mixed Retourne VRAI si l'ajout est effectué, FAUX sinon voire une autre valeur si l'ajout 
 *               est renvoyé vers la modification de quantité. 
 * @see {@link modif_qte()} 
 */ 
function ajout($select) 
{ 
    $ajout = false; 
    if(!isset($_SESSION['panier']['verrouille']) || $_SESSION['panier']['verrouille'] == false) 
    { 
        if(!verif_panier($select['id'])) 
        { 	
			array_push($_SESSION['panier']['qte'],$select['qte']); 
            array_push($_SESSION['panier']['ID_cours'],$select['ID_cours']); 
            array_push($_SESSION['panier']['date_debut'],$select['date_debut']); 
            array_push($_SESSION['panier']['horaires'],$select['horaires']); 
            array_push($_SESSION['panier']['intitule'],$select['intitule']); 
            array_push($_SESSION['panier']['prix'],$select['prix']);   
            $ajout = true; 
        } 
        else 
        { 
            $ajout = modif_qte($select['id'],$select['qte']); 
        } 
    } 
    return $ajout; 
} 
/** 
 * Modifie la quantité d'un article dans le panier après vérification que nous ne somme pas en phase de paiement 
 * 
 * @param String $ref_article    Identifiant de l'article à modifier 
 * @param Int $qte               Nouvelle quantité à enregistrer 
 * @return Mixed                 Retourne VRAI si la modification a bien eu lieu, 
 *                               FAUX sinon, 
 *                               "absent" si l'article est absent du panier, 
 *                               "qte_ok" si la quantité n'est pas modifiée car déjà correctement enregistrée. 
 */ 
function modif_qte($ref_article, $qte) 
{ 
    /* On initialise la variable de retour */ 
    $modifie = false; 
    if(!isset($_SESSION['panier']['verrouille']) || $_SESSION['panier']['verrouille'] == false) 
    { 
        if(nombre_article($ref_article) != false && $qte != nombre_article($ref_article)) 
        { 
            /* On compte le nombre d'articles différents dans le panier */ 
            $nb_articles = count($_SESSION['panier']['ID_session']); 
            /* On parcoure le tableau de session pour modifier l'article précis. */ 
            for($i = 0; $i < $nb_articles; $i++) 
            { 
                if($ref_article == $_SESSION['panier']['ID_session'][$i]) 
                { 
                    $_SESSION['panier']['ID_session'][$i] = $qte; 
                    $modifie = true; 
                } 
            } 
        } 
        else 
        { 
            /* L'article est absent du panier, donc on ne peut pas modifier la quantité ou bien 
            * le nombre est exactement le même et il est inutile de le modifier 
            * Si l'article est absent, comme on a ni la taille  ni le prix, on ne peut pas l'ajouter 
            * Si le nombre est le même, on ne fait pas de changement. On peut donc retourner un autre 
            * type de valeur pour indiquer une erreur qu'il faudra traiter à part lors du retour d'appel 
            */ 
            if(nombre_article($ref_article) != false) 
            { 
                $modifie = "absent"; 
            } 
            if($qte != nombre_article($ref_article)) 
            { 
                $modifie = "qte_ok"; 
            } 
        } 
    } 
    return $modifie; 
} 

/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */ 
/*                 Fonctions annexes de gestion du panier                  */ 
/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */ 

/** 
 * Vérifie la quantité enregistrée d'un article dans le panier 
 * 
 * @param String $ref_article référence de l'article à vérifier 
 * @return Mixed Renvoie le nombre d'article s'il y en a, ou Faux si cet article est absent du panier 
 */ 
function nombre_article($ref_article) 
{ 
    /* On initialise la variable de retour */ 
    $nombre = false; 
    /* Comptage du panier */ 
    $nb_art = count($_SESSION['panier']['ID_session']); 
    /* On parcoure le panier à la recherche de l'article pour vérifier le cas échéant combien sont enregistrés */ 
    for($i = 0; $i < $nb_art; $i++) 
    { 
        if($_SESSION['panier']['ID_session'][$i] == $ref_article) 
        $nombre = $_SESSION['panier']['qte'][$i]; 
    } 
    return $nombre; 
} 

/** 
 * Calcule le montant total du panier 
 * 
 * @return Double 
 */ 
function montant_panier() 
{ 
    /* On initialise le montant */ 
    $montant = 0; 
    /* Comptage des articles du panier */ 
    $nb_articles = count($_SESSION['panier']['ID_session']); 
    /* On va calculer le total par article */ 
    for($i = 0; $i < $nb_articles; $i++) 
    { 
        $montant += $_SESSION['panier']['qte'][$i] * $_SESSION['panier']['prix'][$i]; 
    } 
    /* On retourne le résultat */ 
    return $montant; 
} 

/** 
 * Vérifie la présence d'un article dans le panier 
 * 
 * @param String $ref_article référence de l'article à vérifier 
 * @return Boolean Renvoie Vrai si l'article est trouvé dans le panier, Faux sinon 
 */ 
function verif_panier($ref_article) 
{ 
    /* On initialise la variable de retour */ 
    $present = false; 
    /* On vérifie les numéros de références des articles et on compare avec l'article à vérifier */ 
    if(array_search($ref_article,$_SESSION['panier']['ID_session']) != false) 
    { 
        $present = true; 
    } 
    return $present; 
} 


?> 
J'ai du m'enmeler les doigts sur le clavier avec les récups de variables et données !!!
grumph !
:roll: ](*,)
array(7) {
["qte"]=>
array(2) {
[0]=>
int(1)
[1]=>
int(1)
}
["ID_cours"]=>
array(2) {
[0]=>
string(1) "3"
[1]=>
string(1) "3"
}
["date_debut"]=>
array(2) {
[0]=>
string(10) "2006-07-01"
[1]=>
string(10) "2006-07-01"
}
["horaires"]=>
array(2) {
[0]=>
string(13) "10h30 à 13h30"
[1]=>
string(13) "10h30 à 13h30"
}
["intitule"]=>
array(2) {
[0]=>
string(7) "cours 1"
[1]=>
string(7) "cours 1"
}
["prix"]=>
array(2) {
[0]=>
string(6) "100.00"
[1]=>
string(6) "100.00"
}
["ID_session"]=>
NULL
}
Pourquoi il me met un ID_session NULL ? à la fin ?
:?:
C'est la variable $ref_article que je n'itialise pas bien ???
Merci pour votre aide les grands maitres du php ! :agenouille:

par coxine » 25 juin 2006, 13:07

Ben pourquoi je ne reçois pas les notifications de messages ?
Bref !
Merci de vos réponses !

Alors oui effectivement je pense (et mercià vous deux) que je ferais un header pour éviter l'incrémentation....

Mais avant cela, il faudrait que j'arrive à le faire fonctionner ce panier et c'est la cata :lol:

1. Je crois que j'ajoute tjs la même référence....
2. l'affichage dans la boucle ne doit pas être correct
3. j'ai ce type de messages d'erreurs
Notice: Undefined index: panier in d:\programmes\easyphp1-8\www\test\fonctions_panier.php on line 264

Warning: array_search(): Wrong datatype for second argument in d:\programmes\easyphp1-8\www\test\fonctions_panier.php on line 264

Warning: array_push(): First argument should be an array in d:\programmes\easyphp1-8\www\test\fonctions_panier.php on line 21

Warning: array_push(): First argument should be an array in d:\programmes\easyphp1-8\www\test\fonctions_panier.php on line 22

Warning: array_push(): First argument should be an array in d:\programmes\easyphp1-8\www\test\fonctions_panier.php on line 23

Warning: array_push(): First argument should be an array in d:\programmes\easyphp1-8\www\test\fonctions_panier.php on line 24

Warning: array_push(): First argument should be an array in d:\programmes\easyphp1-8\www\test\fonctions_panier.php on line 25

Warning: array_push(): First argument should be an array in d:\programmes\easyphp1-8\www\test\fonctions_panier.php on line 26

Warning: array_push(): First argument should be an array in d:\programmes\easyphp1-8\www\test\fonctions_panier.php on line 27
:( J'ai initalisé la page panier comme ça :
//* Article exemple */ 
$select = array(); 
$select['id'] = $_GET['ID_session']; 
$select['qte'] = $_GET['qte']; 
$select['ID_cours'] = $_GET['ID_cours'];
$select['date_debut'] = $_GET['date_debut'];
$select['horaires'] = $_GET['horaires'];
$select['intitule'] = $_GET['intitule'];
$select['prix'] = $_GET['prix']; 
$ok = ajout($select);
$ref_article = $select['id'];
/* On vérifie l'existence du panier, sinon, on le crée */ 
if(!isset($_SESSION['panier'])) 
{ 
    /* Initialisation du panier */ 
    $_SESSION['panier'] = array(); 
    /* Subdivision du panier */ 
    $_SESSION['panier']['id_article'] = array(); 
    $_SESSION['panier']['qte'] = array(); 
	$_SESSION['panier']['ID_cours'] = array();
	$_SESSION['panier']['date_debut'] = array();
	$_SESSION['panier']['horaires'] = array();
	$_SESSION['panier']['intitule'] = array();
	$_SESSION['panier']['prix'] = array();
}  
et la fonction ajout comme ça :
function ajout($select) 
{ 
    $ajout = false; 
    if(!isset($_SESSION['panier']['verrouille']) || $_SESSION['panier']['verrouille'] == false) 
    { 
        if(!verif_panier($select['id'])) 
        { 
            array_push($_SESSION['panier']['id_article'],$select['id']); 
			array_push($_SESSION['panier']['qte'],$select['qte']); 
			array_push($_SESSION['panier']['ID_cours'],$select['ID_cours']); 
			array_push($_SESSION['panier']['date_debut'],$select['date_debut']);
			array_push($_SESSION['panier']['horaires'],$select['horaires']);
			array_push($_SESSION['panier']['intitule'],$select['intitule']);
			array_push($_SESSION['panier']['prix'],$select['prix']);  
            $ajout = true; 
        } 
        else 
        { 
            $ajout = modif_qte($select['id'],$select['qte']); 
        } 
    } 
    return $ajout; 
} 
Je récupère comme je le disais hier (pour le moment en méthode GET) les valeurs

Code : Tout sélectionner

<a href="panier2.php?ID_session=<?php echo $row_session['ID_session'];?> &date_debut=<?php echo $row_session['date_debut'];?> &horaires=<?php echo $row_session['horaires'];?>&prix=<?php echo $row_session['prix'];?> &intitule=<?php echo $row_session['intitule'];?> &ID_cours=<?php echo $row_session['ID_cours'];?> &ajoutPanier=AJOUTER"><strong> R&eacute;server</strong></a>
Est-ce que je dois mettre plutôt : &ajout($select)=ok ??

par Ryle » 25 juin 2006, 10:52

Vi en effet Blast a raison, avec un header() pour rediriger vers une autre page (voire la même) après ton traitement, il n'y aurait plus de risque de reposter en actualisant puisque les paramèters auront été réinitialisés :)

(Et du coup tu n'aurais même pas besoin de passer en post, tu pourrais tout laisser dans le lien).

par Blast » 24 juin 2006, 22:11

Pour la double saisie sur le F5, effectivement, en post tu auras un message d'avertissement comme quoi tu es sur le point de reposter les données, ce qui est peut être plus propre que de le faire sans qu'il ne s'en rende compte...
Et si tu veux vraiment bien faire les choses, tu fais un "redirect" apres ton POST pour éviter l'ajout une seconde fois de l'article si l'utilisateur clique sur "précédent" ou appuie sur F5. (pattern PRG)

Avec cette méthode, le clic sur précédent ne repost pas les données une nouvelle fois et tu n'aura pas le message d'alerte cité ci dessus et ce grace à la spec du protocole http !

Voila, si tu veux bien faire les choses, c'est comme ca qu'il faut faire :
PRG : post/redirect/get

par Ryle » 24 juin 2006, 18:14

Toutafé :)

tu peux aussi directement exploiter le résultat de la fonction :
<?php echo montant_panier();?>
Le "$ok = ajout($select)" te permet de mettre à jour le pannier en session, tu peux donc enlever les lignes que je t'ai indiqué et faire l'appel à cette fonction à la place. Quant au $ok, il te permet de savoir si la maj en session s'est bien passée mais tu n'es pas obligée de t'en soucier (ca marchera bien dans 99.9% des fois, et pour le 0.1 qui reste, l'utilisateur verra bien que ca n'a pas été ajouté à son panier)


Pour la double saisie sur le F5, effectivement, en post tu auras un message d'avertissement comme quoi tu es sur le point de reposter les données, ce qui est peut être plus propre que de le faire sans qu'il ne s'en rende compte... Mais du coup il faut que tu remplaces ton lien par un formulaire avec des champs cachés puor passer les valeurs :)

par coxine » 24 juin 2006, 15:24

merci !
ca y est je pense enfinnnn comprendre l'utilisation de ces fonction, en fait, comme les utiliser dans les variables.
Par exemple pour le $total
/** 
 * Calcule le montant total du panier 
 * 
 * @return Double 
 */ 
function montant_panier() 
{ 
    /* On initialise le montant */ 
    $montant = 0; 
    /* Comptage des articles du panier */ 
    $nb_articles = count($_SESSION['panier']['ID_session']); 
    /* On va calculer le total par article */ 
    for($i = 0; $i < $nb_articles; $i++) 
    { 
        $montant += $_SESSION['panier']['qte'][$i] * $_SESSION['panier']['prix'][$i]; 
    } 
    /* On retourne le résultat */ 
    return $montant; 
} 
Je définie la variable $total comme ça :
<?php $total = montant_panier();?><?php echo $total;?> &euro;
C'est ça prof ?
:lol:
Pfiou, une semaine pour comprendre ! :wink:
Heuuuuu mais j'en fais quoi du $ok = ajout($select) ????? :lol: :?:
D'autre part, si je veux eviter un ajout d'article au panier par F5, j'ai tout intéret à appliquer une méthode post pour récupérer mes variables, n'est-ce pas ?

par Ryle » 24 juin 2006, 15:15

Pour l'instant tu as quasiment tout bon :)

L'intérêt de la fonction ajout() c'est d'enlever ces lignes de ton premier extrait de code :
/* Ici, on sait que le panier existe, donc on ajoute l'article dedans. */ 
array_push($_SESSION['panier']['ID_session'],$select['id']); 
array_push($_SESSION['panier']['qte'],$select['qte']); 
array_push($_SESSION['panier']['ID_cours'],$select['ID_cours']); 
array_push($_SESSION['panier']['date_debut'],$select['date_debut']); 
array_push($_SESSION['panier']['horaires'],$select['horaires']); 
array_push($_SESSION['panier']['intitule'],$select['intitule']); 
array_push($_SESSION['panier']['prix'],$select['prix']); 
Tout ceci peut etre remplacé par l'appel à ajout() qui va également gérer si le produit est déjà dans le panier et dans ce cas uniquement modifier sa quantité :)
include ("fonctions_panier.php ");
$ok = ajout($select);
On est d'accord j'ai pas de quantité là ?
Euh ben non, tu as une quantité de 1, que tu as définies directement en php dans $select['qte'] :
/* Article exemple */ 
$select = array(); 
$select['id'] = $_GET['ID_session']; 
$select['qte'] = 1; 
...
d'où dans ton var_dump le

Code : Tout sélectionner

["qte"]=> array(1) { [0]=> int(1) }
:)

par coxine » 24 juin 2006, 13:52

whaouw ça y est miss cox comment à piger !
Alors mon panier je l'ai construit sur la base du tuto de cyrano

Donc dans la page panier, j'ai initialisé la construction de ce dernier.
<?php 
/* Démarrage ou prolongation de la session */ 
session_start(); 
require_once('fonctions_panier.php');
require_once('Connections/connexion.php');
/* Article exemple */ 
$select = array(); 
$select['id'] = $_GET['ID_session']; 
$select['qte'] = 1; 
$select['ID_cours'] = $_GET['ID_cours'];
$select['date_debut'] = $_GET['date_debut'];
$select['horaires'] = $_GET['horaires'];
$select['intitule'] = $_GET['intitule'];
$select['prix'] = $_GET['prix']; 

/* On vérifie l'existence du panier, sinon, on le crée */ 
if(!isset($_SESSION['panier'])) 
{ 
    /* Initialisation du panier */ 
    $_SESSION['panier'] = array(); 
    /* Subdivision du panier */ 
    $_SESSION['panier']['ID_session'] = array(); 
    $_SESSION['panier']['qte'] = array(); 
	$_SESSION['panier']['ID_cours'] = array();
	$_SESSION['panier']['date_debut'] = array();
	$_SESSION['panier']['horaires'] = array();
	$_SESSION['panier']['intitule'] = array();
	$_SESSION['panier']['prix'] = array();
} 

/* Ici, on sait que le panier existe, donc on ajoute l'article dedans. */ 
array_push($_SESSION['panier']['ID_session'],$select['id']); 
array_push($_SESSION['panier']['qte'],$select['qte']); 
array_push($_SESSION['panier']['ID_cours'],$select['ID_cours']); 
array_push($_SESSION['panier']['date_debut'],$select['date_debut']);
array_push($_SESSION['panier']['horaires'],$select['horaires']);
array_push($_SESSION['panier']['intitule'],$select['intitule']);
array_push($_SESSION['panier']['prix'],$select['prix']); 
Dans la page fonctions_panier.php
C'est là que je retrouve:
function ajout($select) 
{ 
    $ajout = false; 
    if(!isset($_SESSION['panier']['verrouille']) || $_SESSION['panier']['verrouille'] == false) 
    { 
        if(!verif_panier($select['id'])) 
        { 
            array_push($_SESSION['panier']['ID_session'],$select['id']); 
			array_push($_SESSION['panier']['qte'],$select['qte']); 
			array_push($_SESSION['panier']['ID_cours'],$select['ID_cours']); 
			array_push($_SESSION['panier']['date_debut'],$select['date_debut']);
			array_push($_SESSION['panier']['horaires'],$select['horaires']);
			array_push($_SESSION['panier']['intitule'],$select['intitule']);
			array_push($_SESSION['panier']['prix'],$select['prix']);  
            $ajout = true; 
        } 
        else 
        { 
            $ajout = modif_qte($select['id'],$select['qte']); 
        } 
    } 
    return $ajout; 
} 
J'ai récupéré les variable de cette manière comme je le disais plus haut :

Code : Tout sélectionner

<a href="panier2.php?ID_session=<?php echo $row_session['ID_session'];?> &date_debut=<?php echo $row_session['date_debut'];?> &horaires=<?php echo $row_session['horaires'];?>&prix=<?php echo $row_session['prix'];?> &intitule=<?php echo $row_session['intitule'];?> &ID_cours=<?php echo $row_session['ID_cours'];?> &ajoutPanier=AJOUTER"><strong> R&eacute;server</strong></a>
Est-ce que c'est un bon début ?
Pour afficher le panier (pour le moment j'ai fait un var_dump()) et j'obtiens ce résultat :
:

Code : Tout sélectionner

array(7) { ["ID_session"]=> array(1) { [0]=> string(2) "28" } ["qte"]=> array(1) { [0]=> int(1) } ["ID_cours"]=> array(1) { [0]=> string(1) "3" } ["date_debut"]=> array(1) { [0]=> string(10) "2006-07-01" } ["horaires"]=> array(1) { [0]=> string(13) "10h30 à 13h30" } ["intitule"]=> array(1) { [0]=> string(6) "coucou" } ["prix"]=> array(1) { [0]=> string(6) "100.00" } }
On est d'accord j'ai pas de quantité là ? :-k

(je suis pdr avec tes commentaires !! tu devrais éditer un bouquin :wink