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.phpQui 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 !
Pourquoi il me met un ID_session NULL ? à la fin ?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
}
C'est la variable $ref_article que je n'itialise pas bien ???
Merci pour votre aide les grands maitres du php !