problème de session avec objet

Petit nouveau ! | 2 Messages

09 avr. 2012, 18:49

bonjour,

j'ai actuellement fini un site je suis sur un panier virtuel
tous fonctionne bien sauf que j'ai un petit problème que je n'arrive pas à résoudre

j'ai une photo portant le même nom mais avec deux formats différent qui devrait être envoyé dans une session

seul le dernier article est prit en compte dans la session pourtant le panier me dit qu'il y a deux articles mais seul le dernier article ajouté au panier s'affiche

page ajout
if (!Empty($numserie) && $qte > 0) {
	if ($prix > 0) {
		 $var->calculmontant = true;
		 $var->ajouterArticle($numserie, $qte, $prix, $propalarticle,$format_tof);
	 } else $var->ajouterArticle($numserie, $qte);

page include classPanier

// Ajoute un article dans le Panier 02
function ajouterArticle($numserie, $quantite, $montantHT = 0, $propalarticle, $format_tof) {
if (!empty($numserie)) {

if ($this->article[$numserie]){
$this->article[$numserie]['qte'] += $quantite;
$this->article[$numserie]['propalarticle'] = $propalarticle;
$this->article[$numserie]['format_tof'] = $format_tof;
$this->nbarticle++;
// RAJOUTER
$this->nbTotarticle = $this->nbTotarticle + $quantite;  ///////////////////////////////////////////////////////
}
else {
$this->article[$numserie]['qte'] += $quantite;
$this->article[$numserie]['propalarticle'] = $propalarticle;
$this->article[$numserie]['format_tof'] = $format_tof;
$this->nbarticle++;
// RAJOUTER
$this->nbTotarticle = $this->nbTotarticle + $quantite;  ///////////////////////////////////////////////////////
}

if (isset($this->calculmontant) && $this->calculmontant == true) {
$this->article[$numserie]['prix']      = $montantHT;
$this->CalculMontantArticle($numserie, $this->article[$numserie]['prix'], $quantite);
// $this->CalculTotal(($this->article[$numserie]['prix']*$quantite));
$this->CalculTotal($quantite * $montantHT); // RAJOUTER 3

}
}
page consultation
// affichage principal
function Affichages(&$page) {
	 if ($page->panier == "" || (is_object($page->panier) && $page->panier->getNombreArticle() <= 0)) return '<br /><center>Votre panier est vide<br /><img src="panier17.png" width="50" border="0"><a href="index.php">Liste Produits</a></center>';
			// <td align="right"><img src="../'.$_SESSION['imagelocation'].' " width="100"></td>
			// unset($_SESSION["panier"]);

			// <td align="center" class="titrecell">Rꦠ(ID)</td>
	$out = '
	<center><h1>Consultation panier</h1>
	<p>Voici la liste des articles sélectionné au panier. Vous pouvez modifier la quantité d\'un article ou le supprimé.</p></center>
	<br />
	<table align="center" border="0" cellspacing="0" cellpadding="0" width="80%">
		<tr>
			<td align="left" class="titrecell"></td>
			<td align="left" class="titrecell">Réf (Num Série)</td>
			<td align="left" class="titrecell">Réf (Propale)</td>
			<td align="left" class="titrecell">Format photos</td>
			<td align="right" class="titrecell">P.U. (HT)</td>
			<td align="right" class="titrecell">Quantité</td>
			<td align="right" class="titrecell">Total HT</td>
			<td align="right" class="titrecell">Total TTC</td>
			<td align="middle" class="titrecell">Supprimer</td>
			<td align="middle" class="titrecell">TOTAL NBR ARTICLE</td>
		</tr>';
	foreach ($page->panier->article as $numserie => $val) {
	
		$out .= '
		<tr>
			
			<td align="center"><img src="resolu.png" width="16" border="0"></td>
			<td>'.$numserie.'</td>
			<td align="right"><img src="../'.$page->panier->getNomArticle($numserie).' " width="100"></td>
			<td align="right">'.$page->panier->getFormatArticle($numserie).'></td>
			<td align="right">'.$page->panier->getPrixArticle($numserie).'&nbsp;&euro;</td>
			<td align="right">
				<table cellpadding="0" cellspacing="0" border="0">
					<tr valign="middle">
						<td><input type="text" name="qte_'.$numserie.'" value="'.$page->panier->getQteArticle($numserie).'" readonly size="4" /></td>
						<td><a href="#" onclick="document.form1.qte_'.$numserie.'.value++;return false"><img src="plus.gif" width="14" height="10" border="0" hspace="0" vspace="0" /></a><br /><a href="#" onclick="document.form1.qte_'.$numserie.'.value--;return false"><img src="moins.gif" width="14" height="10" border="0" hspace="0" vspace="0" /></a></td>
					</tr>
				</table>
			</td>
			<td align="right" class="intitule">'.$page->panier->getMontantArticle($numserie).'&nbsp;&euro;</td>
			<td align="right" class="intitule">'.$page->panier->getMontantTTCArticle($numserie).'&nbsp;&euro;</td>
			<td align="middle" class="intitule"><input type="checkbox" name="suppr_'.$numserie.'" /></td>
			<td align="right" class="intitule">'.$page->panier->getNombreTotArticle().'</td>
		</tr>
		<tr>
			<td><br/></td>
		</tr>
		';
}
}


ViPHP
xTG
ViPHP | 7331 Messages

09 avr. 2012, 20:01

Qu'appelles-tu par session ? Une session PHP ? Car tu ne présentes aucun code y faisant référence.
Tu as aussi des cas bizarre... Tu testes plusieurs fois $numserie pour vérifier qu'elle n'est pas vide mais tu fais la même chose dans les deux cas en utilisant la variable.
C'est pour différencier la valeur 0 des autres ? Pas de test d'existence de cette variable ?
Et donc pas extension, ton niveau d'erreur PHP est-il configuré pour les warnings ?

Petit nouveau ! | 2 Messages

11 avr. 2012, 00:36

salut xTG
merci pour ta réponse

je comprend se que tu dit mais je suis perdu

je suis désespéré car c'est la dernière page de site et j'ai plus de cerveaux

voici toute les pages du panier

1 page index

session_start();
ob_start();


/*************************************************************************************************
**                                        error_reporting                                            **
*************************************************************************************************/
// on vérifie si la fonction ini_set() a été désactivée...
$desactive = ini_get('disable_functions');
if (preg_match("/ini_set/i", "$desactive") == 0) {
// si elle n'est pas désactivée, on définit ini_set de manière à n'afficher que les erreurs...
ini_set("error_reporting" , "e_all & ~e_notice");
}

/*************************************************************************************************
**                                        includes                                              **
*************************************************************************************************/
include_once 'panier.class.php';

/*************************************************************************************************
**                                        connexions                                            **
*************************************************************************************************/
require_once("../mpConnect/connect.php");


/*************************************************************************************************
**                                        requète affichage photos                              **
*************************************************************************************************/
// THEME MARIAGES
$sql = mysql_connect(DB_HOST,DB_LOGIN,DB_PASS) or die (mysql_error("Érreur! Contacter l'administrateur"));
mysql_select_db(DB_BDDTest);

$galerie_privee_membre = "
SELECT a.IDportofolio, a.theme_portofolio, f. *
FROM portofolio_theme_vf AS a
INNER JOIN portofolio_img_vf AS f ON f.userid =1
WHERE a.IDportofolio = f.userid ORDER BY id DESC
LIMIT 8 ";

mysql_query('SET NAMES UTF8');

$resultat_galerie_privee_membre = mysql_query($galerie_privee_membre);

$resultats = array();

while($row1 = mysql_fetch_assoc($resultat_galerie_privee_membre)){
$resultats[] = $row1;
}
	$out = '
	<table align="left" border="0" cellspacing="0" cellpadding="0" width="20%" align="center">
		<tr>
			<td align="left"><b>Tarif format photos</b></td>
		</tr>
		<tr>
			<td align="left">
				9X13 = 1.00 &euro; HT<br/>
				10X15 = 2.00 &euro; HT<br/>
				15X21 = 4.50 &euro; HT<br/>
				30X30 = 7.50 &euro; HT<br/>
				30X40 = 14.50 &euro; HT<br/>
			</td>
		</tr>
	</table>
	
	<table border="0" cellspacing="0" cellpadding="0" width="70%" align="center">
	<tr>
		<td align="left"><b>n&deg;</b></td>
		<td align="left"><b>D&eacute;signation</b></td>
		<td align="left"><b>R&eacute;f&eacute;rence</b></td>
		<td align="center"><b>Fiche article</b></td>
	</tr>
	';
	if(count($resultats)>0){
foreach($resultats as $row2){

	$out .= "
	<tr>
		<td align=\"left\">".$row2['id']."</td>
		<td><img src=\"../".$row2['imagelocation']."\" width=\"100\"><br/><input type=\"hidden\" name=\"propalarticle\" value=\"".$row2['imagelocation']."\" /></td>
		<td align=\"left\">".$row2['images']."</td>
		<td align=\"middle\">
			&nbsp;<a href=\"liste_article.php?fiche=".$row2['id']."\" class=\"link\" >Voir fiche article</a>
		</td>
			

	</tr>
		<tr>
		<td><br/></td>
	</tr>

";
}
}	
	$out .= ' </table>';

	// printf($out);
	echo $out;


	if (isset($_SESSION['panier'])) {
		$page->panier = unserialize($_SESSION['panier']);

		if (is_object($page->panier) && $page->panier->getNombreArticle() > 0) {

			$out .= '
				<table border="0" cellspacing="0" cellpadding="0" width="100%" align="center">
					<tr>
						<td align="left">

			<center>vous avez &nbsp;<b>'.$page->panier->getNombreArticle().'</b>&nbsp; article(s) dans le panier.&nbsp;&nbsp;&nbsp;
			<a href="consultation_panier.php" onclick="window.open(this.href, "", // \'toolbar=no, location=no, directories=no, status=yes, scrollbars=yes, resizable=yes, copyhistory=no, width=600, height=350\'); return false;"><img src="voirPanier.png" width="50" border="0"></a><div id="articles_select"></div></center>
			</td></tr></table>';
		}
	}else
			$out .= '<center>Vous n\'avez pas d\'article dans le panier ! &nbsp;&nbsp;&nbsp;&nbsp;<b>0</b>&nbsp;&euro;<div id="articles_select"></div>
			<br/><a href="index.php" class="parent"><span><font color="red"><img src="Retour_precedent.png" width="100" alt="icon-compte.png" border="0"/></font></span></a>
			</center>';



 ob_end_flush();

2 page liste article
ob_start();

	if (isset($_GET['fiche']) || isset($_GET['numserie']))
	{


/*************************************************************************************************
**                                        démarage session                                               **
*************************************************************************************************/

session_start();

/*************************************************************************************************
**                                        error_reporting                                            **
*************************************************************************************************/
// on vérifie si la fonction ini_set() a été désactivée...
$desactive = ini_get('disable_functions');
if (preg_match("/ini_set/i", "$desactive") == 0) {
// si elle n'est pas désactivée, on définit ini_set de manière à n'afficher que les erreurs...
ini_set("error_reporting" , "e_all & ~e_notice");
}


/*************************************************************************************************
**                                        connexions                                            **
*************************************************************************************************/
require_once("../mpConnect/connect.php");


/*************************************************************************************************
**                                        includes                                              **
*************************************************************************************************/
include_once 'panier.class.php';


/*************************************************************************************************
**                               déclarations variables                                         **
*************************************************************************************************/
$contenu = "";
$page    = null;


/*************************************************************************************************
**                               affectations variables                                         **
*************************************************************************************************/
$page->base     = ((isset($_SERVER["HTTPS"]) && $_SERVER["HTTPS"] == "on") ? "https" : "http")."://".$_SERVER["HTTP_HOST"];
$page->dirname  = dirname($_SERVER["SCRIPT_NAME"]);
$page->basename = basename($_SERVER["SCRIPT_NAME"]);
$page->origine  = $page->base.$page->dirname."/".$page->basename.(isset($_SERVER["QUERY_STRING"]) ? "?".$_SERVER["QUERY_STRING"] : "");
$page->query    = isset($_SERVER["QUERY_STRING"]) ? "?".$_SERVER["QUERY_STRING"]."" : "";
$page->protocol = (isset($_SERVER["HTTPS"]) && $_SERVER["HTTPS"] == "on") ? "https" : "http";
$page->action   = $page->protocol."://".$_SERVER["HTTP_HOST"].$_SERVER["SCRIPT_NAME"].$page->query;


/*************************************************************************************************
**                                  programme principal                                         **
*************************************************************************************************/
print '
<html>
<head>
<title>Liste Article</title>

<!-- // articles_selectionner // -->
<script type="text/javascript" src="articles_selectionner.js"></script>

   <style type="text/css"><!--
 
a.link{
   /* block:display; */
   width:auto;
   height:auto;
}
a.link:hover img{
   width:auto;
   height:auto;
   background-image:url("ajout_panier3.png");
   background-repeat:no-repeat;
}
--></style>
</head>
<body>
<form name="form1" method="post" action="'.$page->action.'" enctype="application/x-www-form-urlencoded" >';

$contenu .= Affichages($page, $html);

print $contenu.'
</form>
</body>
</html>';
}

/*************************************************************************************************
**                                        fonctions                                             **
*************************************************************************************************/
// affichage principal
 // 'selected="selected"'
function Affichages(&$page, &$html) {

switch ($_POST['format'])
{
case "9X13":
  $format_tof = "9X13" ;
  $tarrif_HT = 1.00 ;
  $tarrif = 1.50 ;
  break;
case "10X15":
  $format_tof = "10X15" ;
  $tarrif_HT = 2.00 ;
  $tarrif = 2.50 ;
  break;
case "15X21":
  $format_tof = "15X21";
  $tarrif_HT = 5.00 ;
  $tarrif = 5.50 ;
  break;
case "30X30":
  $format_tof = "30X30";
  $tarrif_HT = 8.00 ;
  $tarrif = 8.50 ;
  break;
case "30X40":
  $format_tof = "30X40";
  $tarrif_HT = 15.00 ;
  $tarrif = 15.50 ;
  break;
default:
  $format_tof = "9X13" ;
  $tarrif_HT = 1.00 ;
  $tarrif = 1.50 ;
}
// THEME MARIAGES
$sql = mysql_connect(DB_HOST,DB_LOGIN,DB_PASS) or die (mysql_error("Érreur! Contacter l'administrateur"));
mysql_select_db(DB_BDDTest);

if($_GET['fiche']){
$galerie_privee_membre = "
SELECT a.IDportofolio, a.theme_portofolio, f. *
FROM portofolio_theme_vf AS a
INNER JOIN portofolio_img_vf AS f ON f.userid =1
WHERE f.id = ".$_GET['fiche']."  AND a.IDportofolio = f.userid";

}else{
	if($_GET['numserie']){ 
	$galerie_privee_membre = "
	SELECT a.IDportofolio, a.theme_portofolio, f. *
	FROM portofolio_theme_vf AS a
	INNER JOIN portofolio_img_vf AS f ON f.userid =1
	WHERE f.id = ".$_GET['numserie']."  AND a.IDportofolio = f.userid";
	}
	}
mysql_query('SET NAMES UTF8');

$resultat_galerie_privee_membre = mysql_query($galerie_privee_membre);

// var_dump ($galerie_privee_membre);
$resultats = array();

while($row1 = mysql_fetch_assoc($resultat_galerie_privee_membre)){
$resultats[] = $row1;
}
	$out = '
	<p align="center">Choisisser le format de la photo puis la quantit&eacute;. Par d&eacute;faut format photo <b>9X13</b></p>
	<table border="0" cellspacing="0" cellpadding="0" width="70%" align="center">
	<tr>	
		<td align="center" width="20"><b>n°</b></td>
		<td align="center" width="20"><b>Désignation</b></td>
		<td align="center"><b>Référence</b></td>
		<td align="center"><b>Format choisie</b></td>
		<td align="center"><b>P.U. (HT)</b></td>
		<td align="center"><b>P.U. (TTC)</b></td>
		<td align="center"><b>Formats photos</b></td>
		<td align="center"><b>Quantité</b></td>
		<td align="center"><b>Ajouter au panier</b></td>
	</tr>
	';
	if(count($resultats)>0){
foreach($resultats as $row2){OST\" action=\"{$_SERVER['PHP_SELF']}?format=".$format_tof."\">

	$out .= "
	<tr>
		<td align=\"center\">".$row2['id']."</td>
		<td align=\"center\"><img src=\"../".$row2['imagelocation']."\" width=\"100\"><br/><input type=\"hidden\" name=\"propalarticle\" value=\"".$row2['imagelocation']."\" /></td>
		<td align=\"center\">".$row2['images']."</td>
		<td align=\"center\"><b>Format</b> : ".$format_tof."</td>
		<td align=\"center\">".$tarrif_HT."&nbsp;&euro;</td>
		<td align=\"center\">".$tarrif."&nbsp;&euro;</td>
		<td align=\"center\">
			
<form name=\"form\"  method=\"POST\" action=\"{$_SERVER['PHP_SELF']}\">
<select name=\"format\" onChange=\"form.submit();\">
<option label=\"Format\">Format photos</option>
<option label=\"9X13\"  value=\"9X13\">9X13</option>
<option  label=\"10X15\" value=\"10X15\">10X15</option>
<option  label=\"15X21\"  value=\"15X21\">15X21</option>
<option label=\"30X30\"   value=\"30X30\">30X30</option>
<option label=\"30X40\"   value=\"30X40\">30X40</option>
</select>
</form>
		</td>
		<td align=\"center\">
			<input type=\"text\" name=\"qte_".$row2['id']."\" value=\"1\" size=\"4\" />
		</td>
		<td align=\"center\">
			&nbsp;<a href=\"javascript:articles_selectionner();\" class=\"link\" onclick=\"document.location.href='ajout_panier.php?numserie=".$row2['images']."&propalarticle=".$row2['imagelocation']."&qte='+document.form1.qte_".$row2['id'].".value+'&prix=".$tarrif."&format_tof=".$format_tof."&origine=liste_article.php?numserie=".$_GET['fiche']." ' \"><img src=\"ajout_panier3.png\" width=\"30\" border=\"0\"></a>
		</td>
			

	</tr>
	<tr>
		<td><br/></td>
	</tr>
";
}
}	
	$out .= ' </table>';

	if (isset($_SESSION['panier'])) {
		$page->panier = unserialize($_SESSION['panier']);

		if (is_object($page->panier) && $page->panier->getNombreArticle() > 0) {

			$out .= '
				<table border="0" cellspacing="0" cellpadding="0" width="100%" align="center">
					<tr>
						<td align="left">

			<center>vous avez &nbsp;<b>'.$page->panier->getNombreArticle().'</b>&nbsp; article(s) dans le panier.&nbsp;&nbsp;&nbsp;
			<a href="consultation_panier.php?dB" onclick="window.open(this.href, "", // \'toolbar=no, location=no, directories=no, status=yes, scrollbars=yes, resizable=yes, copyhistory=no, width=600, height=350\'); return false;"><img src="voirPanier.png" width="50" border="0"></a><div id="articles_select"></div></center>
			</td></tr>
					<tr>
						<td align="left">

					<br/><center><a href="index.php" class="parent"><span><font color="red"><img src="Retour_precedent.png" width="100" alt="icon-compte.png" border="0"/></font></span></a></center>
					</td></tr>
			
			</table>';
		}
	}else
			$out .= '<center>Vous n\'avez pas d\'article dans le panier ! &nbsp;&nbsp;&nbsp;&nbsp;<b>0</b>&nbsp;&euro;<div id="articles_select"></div>
			<br/><a href="index.php" class="parent"><span><font color="red"><img src="Retour_precedent.png" width="100" alt="icon-compte.png" border="0"/></font></span></a>
			</center>';

	return $out;
}
 ob_end_flush();
3 page ajouter

/*************************************************************************************************
**                                        session       session_register                                        **
*************************************************************************************************/
session_start();
ob_start();

/*************************************************************************************************
**                                        connexions                                            **
*************************************************************************************************/
require_once("../mpConnect/connect.php");


/*************************************************************************************************
**                                        includes              REQUEST                                **
*************************************************************************************************/
include_once 'panier.class.php';

if (!isset($_SESSION['panier'])) {
	session_register("panier");
	$var = new Panier();
} else {
if (isset($_SESSION['panier'])) {
	$var = unserialize($_SESSION['panier']);
	
	if ($var == "") $var = new Panier();
	}
}

/*************************************************************************************************
**                               affectations variables                                         **
*************************************************************************************************/

$numserie 		= isset($_GET["numserie"]) 			? $_GET["numserie"] 		: "";
$qte      		= isset($_GET["qte"])      			? $_GET["qte"]      		: 0;
$origine  		= isset($_GET["origine"])  			? $_GET["origine"]  		: "";
$prix     		= isset($_GET["prix"])				? $_GET["prix"]     		: 0;
$propalarticle	= isset($_GET["propalarticle"])		? $_GET["propalarticle"] 	: "";
$format_tof		= isset($_GET["format_tof"])		? $_GET["format_tof"] 		: "";

/*************************************************************************************************
**                                 requete SQL                                        **
*************************************************************************************************/
	$sql = mysql_connect(DB_HOST,DB_LOGIN,DB_PASS) or die (mysql_error("erreur! Contacter l'administrateur"));
	mysql_select_db(DB_BDDTest);
	$table_sql = "choix_tof_panier";
	$sql2 = "SELECT ref_article,format_tof FROM $table_sql WHERE ref_article='".$numserie."' AND  format_tof='".$format_tof."'  ";
	$req = mysql_query($sql2) or die(mysql_error());
	$data = mysql_fetch_assoc($req);


/*************************************************************************************************
**                                  programme principal                                         **
*************************************************************************************************/
if (!Empty($numserie) && $qte > 0) {
	if ($prix > 0) {
		$var->calculmontant = true;
		$var->ajouterArticle($numserie, $qte, $prix, $propalarticle,$format_tof);
	} else $var->ajouterArticle($numserie, $qte);

// frais de port RAJOUTER	
$type   = 'colie_poste';
$port = 12.45;

if (!Empty($port)) {
$var->ajoutPort($port,$type);
}
// end frais de port RAJOUTER	
	
	
	$_SESSION["panier"] = serialize($var);
}
if ($origine) {
	Header("Location: $origine");
	exit;
}
 ob_end_flush();

4 page consultation panier

<?php
/*************************************************************************************************
**  + Date de création : 16/11/2005         **  + Dernière modification :  --/--/----           **
**  + Auteur : S. Etcheto                   **  + Auteur :                                      **
**************************************************************************************************
**  + Fichier        : consultation_panier.php                                                  **
**  + Fonction       : formulaire de consultation du panier                                     **
**  + Accessible par : tous                                                                     **
*************************************************************************************************/
/*************************************************************************************************
**                                        session                                               **
*************************************************************************************************/

session_start();
/*************************************************************************************************
**                                        connexions                                            **
*************************************************************************************************/
require_once("../mpConnect/connect.php");


ob_start(); 


/*************************************************************************************************
**                                        includes                                              **
*************************************************************************************************/
include_once 'panier.class.php';


/*************************************************************************************************
**                                        error_reporting                                            **
*************************************************************************************************/
// on vérifie si la fonction ini_set() a été désactivée...
$desactive = ini_get('disable_functions');
if (preg_match("/ini_set/i", "$desactive") == 0) {
// si elle n'est pas désactivée, on définit ini_set de manière à n'afficher que les erreurs...
ini_set("error_reporting" , "e_all & ~e_notice");
}

/*************************************************************************************************
**                               déclarations variables                                         **
*************************************************************************************************/
$contenu = "";
$page    = null;


/*************************************************************************************************
**                               affectations variables                                         **
*************************************************************************************************/
$page->maj      = isset($_POST["maj_x"]) ? $_POST["maj_x"] : "";
$page->base     = ((isset($_SERVER["HTTPS"]) && $_SERVER["HTTPS"] == "on") ? "https" : "http")."://".$_SERVER["HTTP_HOST"];
$page->dirname  = dirname($_SERVER["SCRIPT_NAME"]);
$page->query    = isset($_SERVER["QUERY_STRING"]) ? "?".$_SERVER["QUERY_STRING"]."" : "";
$page->protocol = (isset($_SERVER["HTTPS"]) && $_SERVER["HTTPS"] == "on") ? "https" : "http";
$page->action   = $page->protocol."://".$_SERVER["HTTP_HOST"].$_SERVER["SCRIPT_NAME"].$page->query;
$page->panier   = isset($_SESSION['panier']) ? unserialize($_SESSION['panier']) : "";

/*************************************************************************************************
**                                  programme principal                                         **
*************************************************************************************************/
print '
<html>
<head>
<title>Consultation Panier</title>

</head>
<body>
<form name="form1" method="post" action="'.$page->action.'" enctype="application/x-www-form-urlencoded">';

if ($page->maj) maj($page);

$contenu .= Affichages($page);



print $contenu.'
</form>
</body>
</html>';

if(isset($_SESSION['panier'])) $_SESSION["panier"] = serialize($page->panier); //RAJOUTER

/*************************************************************************************************
**                                        fonctions                                getNombreArticle             **
*************************************************************************************************/
// affichage principal
function Affichages(&$page) {
	 if ($page->panier == "" || (is_object($page->panier) && $page->panier->getNombreArticle() <= 0)) return '<br /><center>Votre panier est vide<br /><img src="panier17.png" width="50" border="0"><a href="index.php">Liste Produits</a></center>';


	$out = '
	<center><h1>Consultation panier</h1>
	<p>Voici la liste des articles sélectionné au panier. Vous pouvez modifier la quantité d\'un article ou le supprimé.</p></center>
	<br />
	<table align="center" border="0" cellspacing="0" cellpadding="0" width="80%">
		<tr>
			<td align="left" class="titrecell"></td>
			<td align="left" class="titrecell">Réf (Num Série)</td>
			<td align="left" class="titrecell">Réf (Propale)</td>
			<td align="left" class="titrecell">Format photos</td>
			<td align="right" class="titrecell">P.U. (HT)</td>
			<td align="right" class="titrecell">Quantité</td>
			<td align="right" class="titrecell">Total HT</td>
			<td align="right" class="titrecell">Total TTC</td>
			<td align="middle" class="titrecell">Supprimer</td>
			<td align="middle" class="titrecell">TOTAL NBR ARTICLE</td>
		</tr>';

	foreach ($page->panier->article as $numserie => $val) {
	

		$out .= '
		<tr>
			
			<td align="center"><img src="resolu.png" width="16" border="0"></td>
			<td>'.$numserie.'</td>
			<td align="right"><img src="../'.$page->panier->getNomArticle($numserie).' " width="100"></td>
			<td align="right">'.$page->panier->getFormatArticle($numserie).'></td>
			<td align="right">'.$page->panier->getPrixArticle($numserie).'&nbsp;&euro;</td>
			<td align="right">
				<table cellpadding="0" cellspacing="0" border="0">
					<tr valign="middle">
						<td><input type="text" name="qte_'.$numserie.'" value="'.$page->panier->getQteArticle($numserie).'" readonly size="4" /></td>
						<td><a href="#" onclick="document.form1.qte_'.$numserie.'.value++;return false"><img src="plus.gif" width="14" height="10" border="0" hspace="0" vspace="0" /></a><br /><a href="#" onclick="document.form1.qte_'.$numserie.'.value--;return false"><img src="moins.gif" width="14" height="10" border="0" hspace="0" vspace="0" /></a></td>
					</tr>
				</table>
			</td>
			<td align="right" class="intitule">'.$page->panier->getMontantArticle($numserie).'&nbsp;&euro;</td>
			<td align="right" class="intitule">'.$page->panier->getMontantTTCArticle($numserie).'&nbsp;&euro;</td>
			<td align="middle" class="intitule"><input type="checkbox" name="suppr_'.$numserie.'" /></td>
			<td align="right" class="intitule">'.$page->panier->getNombreTotArticle().'</td>
		</tr>
		<tr>
			<td><br/></td>
		</tr>
		';
}
		date_default_timezone_set( 'Europe/Paris' );
		$date = date("d/m/Y");
		$time = date("H:i:s");
		
		$commande_numero = 1;
		$ref_article = $numserie;
		$ref_popale_article = $page->panier->getNomArticle($numserie);
		$prixProduit_HT = $page->panier->getPrixArticle($numserie);
		$quantite = $page->panier->getQteArticle($numserie);

		$Tarifs_quantite_HT = $page->panier->getMontantArticle($numserie);
		$Tarifs_quantite_TTC = $page->panier->getMontantTTCArticle($numserie);
		
		$Sous_Total_HT = $page->panier->getTotalHT();
		$Total_HT = $page->panier->getTotalFinalHT();
		$TVA = 19.60;
		$TVA_montant = $page->panier->getTotalFinalTVA();
		$FraisPort = $page->panier->getLivraison();
		$Total_TTC = $page->panier->getTotalFinalTTC();
		$quantite_article_panier = $page->panier->getNombreArticle();

		$date_commande = $date;
		$heure_commande = $time;
		$nom_membre = "ROBERT";
		$prenom_membre = "HENRY";
		$format_tof = $page->panier->getFormatArticle($numserie);
		$reglelent_recu = 0;

		
		//généred random number for activated
		$random = rand(23456789,98765432);

	$table_sql = "choix_tof_panier";
		// if(mysql_num_rows($req)> 0) {
		
	$sql = mysql_connect(DB_HOST,DB_LOGIN,DB_PASS) or die (mysql_error("erreur! Contacter l'administrateur"));
	mysql_select_db(DB_BDDTest);
	// $sql2 = "SELECT ref_article,format_tof FROM $table_sql WHERE ref_article='".$ref_article."' AND  format_tof='".$format_tof."'  ";
	$sql2 = "SELECT ref_article,format_tof,quantite FROM $table_sql WHERE  format_tof='".$format_tof."' AND ref_article='".$ref_article."'  AND quantite='".$quantite."'  ";
	// $sql2 = "SELECT ref_article,format_tof FROM $table_sql ";
	$req = mysql_query($sql2) or die(mysql_error());
	$data = mysql_fetch_assoc($req);

		if(isset($ref_article)) {
		$sql = mysql_connect(DB_HOST,DB_LOGIN,DB_PASS) or die (mysql_error("erreur! Contacter l'administrateur"));
		mysql_select_db(DB_BDDTest);
		$requete = "INSERT INTO $table_sql(commande_numero,ref_article,ref_popale_article,prixProduit_HT,quantite,Tarifs_quantite_HT,Tarifs_quantite_TTC,Sous_Total_HT,Total_HT,TVA,TVA_montant,FraisPort,Total_TTC,quantite_article_panier,date_commande,heure_commande,nom_membre,prenom_membre,format_tof,reglelent_recu) values('$random','$ref_article','$ref_popale_article','$prixProduit_HT','$quantite','$Tarifs_quantite_HT','$Tarifs_quantite_TTC','$Sous_Total_HT','$Total_HT','$TVA','$TVA_montant','$FraisPort','$Total_TTC','$quantite_article_panier','$date_commande','$heure_commande','$nom_membre','$prenom_membre','$format_tof','$reglelent_recu')";
		$insert1 = mysql_query($requete) or die( mysql_error());
		}
		elseif(isset($ref_article) && isset($data["format_tof"]) != $format_tof) {
		$sql = mysql_connect(DB_HOST,DB_LOGIN,DB_PASS) or die (mysql_error("erreur! Contacter l'administrateur"));
		mysql_select_db(DB_BDDTest);
		$requete = "INSERT INTO $table_sql(commande_numero,ref_article,ref_popale_article,prixProduit_HT,quantite,Tarifs_quantite_HT,Tarifs_quantite_TTC,Sous_Total_HT,Total_HT,TVA,TVA_montant,FraisPort,Total_TTC,quantite_article_panier,date_commande,heure_commande,nom_membre,prenom_membre,format_tof,reglelent_recu) values('$random','$ref_article','$ref_popale_article','$prixProduit_HT','$quantite','$Tarifs_quantite_HT','$Tarifs_quantite_TTC','$Sous_Total_HT','$Total_HT','$TVA','$TVA_montant','$FraisPort','$Total_TTC','$quantite_article_panier','$date_commande','$heure_commande','$nom_membre','$prenom_membre','$format_tof','$reglelent_recu')";
		$insert2 = mysql_query($requete) or die( mysql_error());
		}

$table_sql(commande_numero,ref_article,ref_popale_article,prixProduit_HT,quantite,Tarifs_quantite_HT,Tarifs_quantite_TTC,Sous_Total_HT,Total_HT,TVA,TVA_montant,FraisPort,Total_TTC,quantite_article_panier,date_commande,heure_commande,nom_membre,prenom_membre,format_tof,reglelent_recu) values('$random','$ref_article','$ref_popale_article','$prixProduit_HT','$quantite','$Tarifs_quantite_HT','$Tarifs_quantite_TTC','$Sous_Total_HT','$Total_HT','$TVA','$TVA_montant','$FraisPort','$Total_TTC','$quantite_article_panier','$date_commande','$heure_commande','$nom_membre','$prenom_membre','$format_tof','$reglelent_recu')";


$table_sql(commande_numero,ref_article,ref_popale_article,prixProduit_HT,quantite,Tarifs_quantite_HT,Tarifs_quantite_TTC,Sous_Total_HT,Total_HT,TVA,TVA_montant,FraisPort,Total_TTC,quantite_article_panier,date_commande,heure_commande,nom_membre,prenom_membre,format_tof,reglelent_recu) values('$random','$ref_article','$ref_popale_article','$prixProduit_HT','$quantite','$Tarifs_quantite_HT','$Tarifs_quantite_TTC','$Sous_Total_HT','$Total_HT','$TVA','$TVA_montant','$FraisPort','$Total_TTC','$quantite_article_panier','$date_commande','$heure_commande','$nom_membre','$prenom_membre','$format_tof','$reglelent_recu')";


$table_sql(commande_numero,ref_article,ref_popale_article,prixProduit_HT,quantite,Tarifs_quantite_HT,Tarifs_quantite_TTC,Sous_Total_HT,Total_HT,TVA,TVA_montant,FraisPort,Total_TTC,quantite_article_panier,date_commande,heure_commande,nom_membre,prenom_membre,format_tof,reglelent_recu) values('$random','$ref_article','$ref_popale_article','$prixProduit_HT','$quantite','$Tarifs_quantite_HT','$Tarifs_quantite_TTC','$Sous_Total_HT','$Total_HT','$TVA','$TVA_montant','$FraisPort','$Total_TTC','$quantite_article_panier','$date_commande','$heure_commande','$nom_membre','$prenom_membre','$format_tof','$reglelent_recu')";
}		
	envoyer<br/><a href="Deconnexion.php"><font color="green"><img src="Retour_precedent.png" width="130" border="0"></font></a><br/>donn&eacute;e ajout&eacute; dbb</p>';}
	if($insert1) {echo '<p align="center">donn&eacute;e ajout&eacute; dbb</p>';}
	if($insert2) {echo '<p align="center">meme tof mais format différent >> donn&eacute;e ajout&eacute; dbb</p>';}
	if($insert4) {echo $insert4;}

	$out .= '
		<tr>
			<td colspan="6" align="right" ><br/><hr width="50%" /><br/>
			vous avez &nbsp;<b>'.$page->panier->getNombreArticle().'</b>&nbsp; article(s) dans le panier.</td>
		</tr>
		<tr>
			<td colspan="5" align="right" class="titrecell">Sous-Total HT :</td>
			<td align="right" class="intitule">'.$page->panier->getTotalHT().'&nbsp;&euro;</td>
		</tr>
		<tr>
			<td colspan="5" align="right" class="titrecell">Frais de livraison :</td>
		<td align="right" class="intitule">'.$page->panier->getLivraison().'&nbsp;&euro;</td>
		</tr>
		<tr>
			<td colspan="5" align="right" class="titrecell">Total HT :</td>
			<td align="right" class="intitule">'.$page->panier->getTotalFinalHT().'&nbsp;&euro;</td>
		</tr>
		<tr>
			<td colspan="5" align="right" class="titrecell">TVA ('.$page->panier->getTVA().'&nbsp;%) :</td>
			<td align="right" class="intitule">'.$page->panier->getTotalFinalTVA().'&nbsp;&euro;</td>
		</tr>
		<tr>
			<td colspan="5" align="right" class="titrecell">Total TTC :</td>
			<td align="right" class="intitule">'.$page->panier->getTotalFinalTTC().'&nbsp;&euro;</td>
		</tr>
		<tr>
			<td colspan="6" align="right" ><hr width="50%" /></td>
		</tr>
		<tr>
			<td colspan="6" align="center" style="vertical-align:middle;">Valider les modifications du panier  <input type="image" name="maj" src="valider.gif" /></td>
		</tr>
		<tr>
			<td colspan="6" align="right" ><hr width="50%" /></td>
		</tr>
		
		<tr>
		<td align="center" style="vertical-align:middle;">
<div id="menu">
<ul class="menu">
<li class="current"><a href="Deconnexion.php" class="parent"><span><font color="red"><img src="panier20.png" alt="icon-compte.png" width="41" border="0"/>Vider le panier</font></span></a></li>
<li class="current"><a href="index.php" class="parent"><span><font color="red"><img src="Retour_precedent.png" width="100" alt="icon-compte.png" border="0"/></font></span></a></li>
<li class="current"><a href="consultation_panier.php?confirm_select" class="parent"><span><font color="green"><img src="OK.png" alt="OK.png" width="50" border="0"/>Vider le panier</font></span></a></li>
</ul>
</div></td>
		</tr>
	</table>
	';

	return $out;
}	

function maj(&$page) {
	foreach ($_POST as $cle => $valeur) {
		if (preg_match("/suppr_(.*)/", $cle, $res)) $page->panier->supprimerArticle($res[1]);
		if (preg_match("/qte_(.*)/", $cle, $res)) $page->panier->miseAJourQteArticle($res[1], $valeur);
	}
	if ($page->panier->getNombreArticle() <= 0) {
		$page->panier->destroy();
		$page->panier = null;
	}

}

 echo "<pre>";
// var_dump ($_SESSION['panier']);
print_r ($_SESSION['panier']);
echo "</pre>";


ob_end_flush();

?>

5 page panier.class

*************************************************************************************************/
class Panier {
	var $article;       // Tableau des article du Panier
	var $nbarticle;     // Nombre d'article dans le Panier
	var $propalarticle;     // rajouter
	var $format_tof;     // rajouter
	var $totalHT;       // Montant total HT du Panier
	var $totalTTC;      // Montant total TTC du Panier
	var $TVA;           // Montant TVA
	var $calculmontant; // Active le calcul du montant ou non
	var $port;          // Tarif livraison
	var $typeport;      // Type de livraison
	
	// mettre en relation base donnée pour tva 19.6 ou 5.5 (resto,livre)
	// Constructeur initialise le tableau d'article et le montant total du Panier
	function Panier($actif = false, $tva = 19.6) {
		$this->article       = array();
		$this->propalarticle = ""; // rajouter
		$this->format_tof    = ""; // rajouter
		$this->nbarticle     = 0;
		$this->totalHT       = 0;
		$this->totalTTC      = 0;
		$this->TVA           = $tva;
		$this->calculmontant = $actif;
		$this->port          = 0;
		$this->typeport      = 0;
		$this->portTVA       = 0;
	}

	function destroy() {
		unset ($this->article);
		unset ($this->propalarticle); // rajouter		getNombreArticle
		unset ($this->format_tof); // rajouter		getNombreArticle
		unset ($this->nbarticle);
		unset ($this->totalHT);
		unset ($this->totalTTC);
		unset ($this->TVA);
		unset ($this->calculmontant);
		unset ($this->port);
		unset ($this->typeport);
	}

	// Frais de port				ajouterArticle
	function getLivraison() {
		if (isset($this->calculmontant) && $this->calculmontant == true) return ($this->port);
		else return 0;
	}

	// Type livraison
	function getTypeLivraison() {
		if (isset($this->calculmontant) && $this->calculmontant == true) return ($this->typeport);
		else return 0;
	}

	// Frais de port
	function ajoutPort($port, $typeport) {
		if (isset($this->calculmontant) && $this->calculmontant == true) {
			$this->port     = $port;
			$this->typeport = $typeport;
			$this->portTVA  = $port * (1 + ($this->TVA / 100));
		}
	}

	// Renvoie le total final HT + frais de port		propalarticle
	function getTotalFinalHT() {
		if (isset($this->calculmontant) && $this->calculmontant == true) return (sprintf("%.2f", ($this->totalHT+$this->port)));
		else return 0;
	}

	// Renvoie le total final TVA + frais de port
	function getTotalFinalTVA() {
		if (isset($this->calculmontant) && $this->calculmontant == true) return (sprintf("%.2f", (($this->totalHT+$this->port) * ($this->TVA / 100))));
		else return 0;
	}

	// Renvoie le total final TTC + frais de port
	function getTotalFinalTTC() {
		if (isset($this->calculmontant) && $this->calculmontant == true) return (sprintf("%.2f", ($this->totalTTC+$this->portTVA)));
		else return 0;
	}

	// Renvoie la quantite de l'article $numserie
	function getQteArticle($numserie) {
		if (isset($this->article[$numserie]['qte'])) return ($this->article[$numserie]['qte']);
		else return 0;
	}

	// Renvoie le prix de l'article $numserie
	function getPrixArticle($numserie) {
		if (isset($this->calculmontant) && $this->calculmontant == true) return (sprintf("%.2f", $this->article[$numserie]['prix']));
		else return 0;
	}

	// Renvoie le montant HT de l'article $numserie
	function getMontantArticle($numserie) {
		if (isset($this->calculmontant) && $this->calculmontant == true) return (sprintf("%.2f", $this->article[$numserie]['montantHT']));
		else return 0;
	}

	// Renvoie le montant TTC de l'article $numserie
	function getMontantTTCArticle($numserie) {
		if (isset($this->calculmontant) && $this->calculmontant == true) return (sprintf("%.2f", $this->article[$numserie]['montantTTC']));
		else return 0;
	}

	// Renvoie le montant TVA de l'article $numserie
	function getMontantTVAArticle($numserie) {
		// if ($this->calculmontant) return (sprintf("%.2f", ($this->article[$numserie]['montantTTC'] - $this->article[$numserie]['montantHT'])));
		if (isset($this->calculmontant) && $this->calculmontant == true) return (sprintf("%.2f", ($this->article[$numserie]['montantHT'] * ($this->TVA / 100))));
		else return 0;
	}

	// Renvoie le nombre d'article contenus dans le Panier
	function getNombreArticle() {
		return ($this->nbarticle);
	}

	// Renvoie le montant total HT
	function getTotalHT() {
		if (isset($this->calculmontant) && $this->calculmontant == true) return (sprintf("%.2f", $this->totalHT));
		else return 0;
	}

	// Renvoie le montant total TTC
	function getTotalTTC() {
		if (isset($this->calculmontant) && $this->calculmontant == true) return (sprintf("%.2f", $this->totalTTC));
		else return 0;
	}

	// Renvoie le montant total de la TVA
	function getTotalTVA() {
		// if ($this->calculmontant) return (sprintf("%.2f", ($this->totalTTC - $this->totalHT)));
		if (isset($this->calculmontant) && $this->calculmontant == true) return (sprintf("%.2f", ($this->totalHT * ($this->TVA / 100))));
		else return 0;
	}

	// Renvoie le montant de la TVA
	function getTVA() {
		return (sprintf("%.2f", $this->TVA));
	}

// Ajoute un article dans le Panier 02
function ajouterArticle($numserie, $quantite, $montantHT = 0, $propalarticle, $format_tof) {
if (!empty($numserie)) {

if ($this->article[$numserie]){
$this->article[$numserie]['qte'] += $quantite;
$this->article[$numserie]['propalarticle'] = $propalarticle;
$this->article[$numserie]['format_tof'] = $format_tof;
$this->nbarticle++;
// RAJOUTER
$this->nbTotarticle = $this->nbTotarticle + $quantite;  ///////////////////////////////////////////////////////
}
else {
$this->article[$numserie]['qte'] += $quantite;
$this->article[$numserie]['propalarticle'] = $propalarticle;
$this->article[$numserie]['format_tof'] = $format_tof;
$this->nbarticle++;
// RAJOUTER
$this->nbTotarticle = $this->nbTotarticle + $quantite;  ///////////////////////////////////////////////////////
}

if (isset($this->calculmontant) && $this->calculmontant == true) {
$this->article[$numserie]['prix']      = $montantHT;
$this->CalculMontantArticle($numserie, $this->article[$numserie]['prix'], $quantite);
// $this->CalculTotal(($this->article[$numserie]['prix']*$quantite));
$this->CalculTotal($quantite * $montantHT); // RAJOUTER 3

}
}

		$this->article[$numserie]['propalarticleimg'] = $propalarticle; // CODE A RAJOUTER
		$this->article[$numserie]['format_tof'] = $format_tof; // CODE A RAJOUTER

	}
	
function getNomArticle($numserie) {
if (isset($this->article[$numserie]['propalarticleimg'])) return ($this->article[$numserie]['propalarticleimg']);
else return 'inconnu';
}

function getFormatArticle($numserie) {
if (isset($this->article[$numserie]['format_tof'])) return ($this->article[$numserie]['format_tof']);
else return 'inconnu';
}


	// Supprime un article du Panier
	function supprimerArticle($numserie) {
		if (!empty($numserie) && $this->article[$numserie]) {
			if (isset($this->calculmontant) && $this->calculmontant == true) $this->CalculTotal(- $this->article[$numserie]['montantHT']);

			unset($this->article[$numserie]);
			$this->nbarticle--;
		}
	}

	// Met à jour la quantite d'un article sélectionné dans le Panier
	function miseAJourQteArticle($numserie, $quantite) {
		if (!empty($numserie) && $this->article[$numserie]) {
			if (isset($this->calculmontant) && $this->calculmontant == true) {
				$diff = $quantite - $this->article[$numserie]['qte'];
				$this->CalculMontantArticle($numserie, $this->article[$numserie]['prix'], $diff);
				$diff *= $this->article[$numserie]['prix'];
				$this->CalculTotal($diff);
				// RAJOUTER
				$this->nbTotarticle = $this->nbTotarticle + $diff;  //////////////////////////////////////////////////////////////
			}

			$this->article[$numserie]['qte'] = $quantite;
		}
	}

	
	
	function getNombreTotArticle()
{
   return ($this->nbTotarticle);
}
	// Calcule le montant Total HT et TTC du panier 01
	function CalculTotal($prix) {
		$this->totalHT  += $prix;
		$this->totalTTC += $prix * (1 + ($this->TVA / 100));
	}

	// Calcule le montant Total HT et TTC par article
	function CalculMontantArticle($numserie, $prix, $qte) {
		$this->article[$numserie]['montantHT'] += $prix * $qte;
		$this->article[$numserie]['montantTTC'] += $prix * $qte * (1 + ($this->TVA / 100));
	}
}