header("Location: ".$_SERVER["PHP_SELF"]);
die();
non seulement die() n'est pas atteinte mais aussi tu réappelle la même page PHP_SELF sans paramètres ; conséquence : le script est réexécuté et tous les if sont sautés : seule la fin du script est exécutée.<?php
session_start();
//Emplacement modifié : effectivement il faut d'abord créer le caddie s'il n'existe pas
//ATTENTION: le code agit directement sur le caddie de la session, une variable $caddie n'est plus utile
if(!isset($_SESSION['caddie']))
{
$_SESSION['caddie'] = array(
"session"=> session_id(),
"aujourdhui" => date("Y-m-d"),
"produit" => array(
"reference" => array(),
"quantite" => array(),
"prixunitaire" => array(),
"prixactuel" => array(),
"totalproduit" => array(),
"acompteproduit" => array(),
"soldeproduit" => array(),
),
"facture"=> array (
"total" => array(
"total" => array(),
"acompte" => array(),
"solde" => array(),
),
"clients" => array(
"nom" => array(),
"prenom" => array(),
"adresse" => array(),
"codeGETal" => array(),
"batiment" => array(),
"etage" => array(),
"ville" => array(),
"pays" => array(),
"telephone" => array(),
"email" => array(),
)
)
);
}
//Ajout dans le caddie
if (isset($_GET["Commander"])) {
$qt = $_GET['quantite'];
//NB: cette partie du code utlise $refprod qui doit avoir une valeur auparavant
//Cette ligne est ajoutée pour des soucis de test
$refprod = $_GET['refprod'];
array_push($_SESSION ['caddie']['produit']['quantite'], $qt);
array_push($_SESSION ['caddie']['produit']['reference'], $refprod);
}
//Validation du caddie
else if (isset($_GET["Valider"])) {
$nom = $_GET['nom'];
$prenom = $_GET['prenom'];
$adresse = $_GET['adresse'];
$codeGETal = $_GET['codeGETal'];
$ville = $_GET['ville'];
$pays = $_GET['pays'];
$telephone = $_GET['telephone'];
$email = $_GET['email'];
$bat = $_GET['batiment'];
$etage = $_GET['etage'];
array_push($_SESSION['caddie']['facture']['client']['nom'],$nom);
array_push($_SESSION['caddie']['facture']['client']['prenom'],$prenom);
array_push($_SESSION['caddie']['facture']['client']['adresse'],$adresse);
array_push($_SESSION['caddie']['facture']['client']['codeGETal'],$codeGETal);
array_push($_SESSION['caddie']['facture']['client']['ville'],$ville);
array_push($_SESSION['caddie']['facture']['client']['pays'],$pays);
array_push($_SESSION['caddie']['facture']['client']['telephone'],$telephone);
array_push($_SESSION['caddie']['facture']['client']['email'],$email);
array_push($_SESSION['caddie']['facture']['client']['batiment'],$bat);
array_push($_SESSION['caddie']['facture']['client']['etage'],$etage);
}
//Test de déboggage
print_r($_SESSION['caddie']);
?> <?php
require_once ('deja.php');
require_once ('affichsubmit.php');
?>
- deja.php:<?php
function nombre_article($refprod)
{
/* On initialise la variable de retour */
$nombre = false;
/* Comptage du panier */
$nb_art = count($_SESSION['caddie']['produit']['reference']);
/* 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['caddie']['produit']['reference'][$i] == $refprod) {
$nombre = $_SESSION['caddie']['produit']['quantite'][$i];
}
}
return $nombre;
}
?>
- affichsubmit.php:<?php
$nombre = nombre_article($refprod);
if ($nombre = false) {
require_once ('boutonsubmit.html');
} else {
require_once ('presproduit.html');
echo $nombre;
}
?>
Apparemment la variable $nombre ne passe pas à ce dernier fichier, et ce que j'obtiens et toujours le résultat de else: donc je crois que je ne parviens pas à réaliser le test pertinent, càd sur la variable de session $qt qui correspond aux quantités du produit en question.Je n'en comprends pas la raison. Le tableau de session "panier" ne doit contenir QUE les articles sélectionnés par le client, donc je ne saisis pas vraiment pourquoi tu les y mettrais même s'il ne les sélectionne pas...la référence du produit est enregistrée ds le tableau de session même si le client ne clique pas dessus...
if (isset($_POST["Commander"])) {
$qt = $_POST["quantite"];
array_push($_SESSION ['caddie']['produit']['quantite'], $qt);
require_once('montantprod.php');
$total_prod = total_prod($qt, $pu, $pa);
array_push($_SESSION['caddie']['produit']['totalproduit'], $total_prod);
require_once('acompteprod.php');
$acompte_prod = acompte_prod($qt, $pu, $pa);
array_push($_SESSION['caddie']['produit']['acompteproduit'], $acompte_prod);
require_once('soldeprod.php');
$solde_prod = solde_prod($qt, $pu, $pa);
array_push($_SESSION['caddie']['produit']['soldeproduit'], $solde_prod);
}
???session_start();
if(!isset($_SESSION['caddie']))
{
$_SESSION['caddie'] = array(
"session"=> session_id(),
"aujourdhui" => date("d-m-Y"),
"produit" => array(
"reference" => array(),
"quantite" => array(),
"prixunitaire" => array(),
"prixactuel" => array(),
"totalproduit" => array(),
"acompteproduit" => array(),
"soldeproduit" => array(),
),
"facture"=> array (
"total" => array(
"total" => array(),
"acompte" => array(),
"solde" => array(),
),
"clients" => array(
"nom" => array(),
"prenom" => array(),
"adresse" => array(),
"codepostal" => array(),
"batiment" => array(),
"etage" => array(),
"ville" => array(),
"pays" => array(),
"telephone" => array(),
"email" => array(),
)
)
);
}
if (isset($_POST["Commander"])) {
$qt = $_POST["quantite"];
array_push($_SESSION ['caddie']['produit']['quantite'], $qt);
require_once('montantprod.php');
$total_prod = total_prod($qt, $pu, $pa);
array_push($_SESSION['caddie']['produit']['totalproduit'], $total_prod);
require_once('acompteprod.php');
$acompte_prod = acompte_prod($qt, $pu, $pa);
array_push($_SESSION['caddie']['produit']['acompteproduit'], $acompte_prod);
require_once('soldeprod.php');
$solde_prod = solde_prod($qt, $pu, $pa);
array_push($_SESSION['caddie']['produit']['soldeproduit'], $solde_prod);
}
elseif (isset($_POST["Valider"])) {
$nom = $_POST['nom'];
$prenom = $_POST['prenom'];
$adresse = $_POST['adresse'];
$codepostal = $_POST['codepostal'];
$ville = $_POST['ville'];
$pays = $_POST['pays'];
$telephone = $_POST['telephone'];
$email = $_POST['email'];
$bat = $_POST['batiment'];
$etage = $_POST['etage'];
array_push($_SESSION['caddie']['facture']['client']['nom'],$nom);
array_push($_SESSION['caddie']['facture']['client']['prenom'],$prenom);
array_push($_SESSION['caddie']['facture']['client']['adresse'],$adresse);
array_push($_SESSION['caddie']['facture']['client']['codepostal'],$codepostal);
array_push($_SESSION['caddie']['facture']['client']['ville'],$ville);
array_push($_SESSION['caddie']['facture']['client']['pays'],$pays);
array_push($_SESSION['caddie']['facture']['client']['telephone'],$telephone);
array_push($_SESSION['caddie']['facture']['client']['email'],$email);
array_push($_SESSION['caddie']['facture']['client']['batiment'],$bat);
array_push($_SESSION['caddie']['facture']['client']['etage'],$etage);
}
?>
Tu dois écrire :affichsubmit.php:
PHP:
<?php
$nombre = nombre_article($refprod);
if ($nombre = false) {
require_once ('boutonsubmit.html');
} else {
require_once ('presproduit.html');
echo $nombre;
}
?>
if ($nombre == false)
En effet, si tu mets un signe d'affectation "= false" le "if" passe toujours au "else" puisque tu affectes false (faux) dans la variable $nombre et la condition devient alors fausse.