Page 1 sur 1

ajout par incrémentation (tableau)

Posté : 17 avr. 2008, 17:19
par x@v
j'essaie d'ajouter 1 unité à la valeur de mon tableau indexer $_SESSION['caddie']
Mais de cette façon il m'en ajoute par deux, alors que j'attend une incrémentation.
		$search_array =$_SESSION['caddie'];
		if (array_key_exists($_GET['ajouteMoi'], $search_array))
		{
			$supr=$_GET['ajouteMoi'];
		    $_SESSION['caddie'][$supr]++;
		    //header('Location:'.$_SERVER['PHP_SELF']);
		}
		echo '<a href="'.$_SERVER['PHP_SELF'].'?ajouteMoi='.$idSession.'">ajoute</a>';
Merci

Posté : 17 avr. 2008, 20:58
par zest
essaye:
 ++$_SESSION['caddie'][$supr]; 
ça doit marcher :)

Posté : 17 avr. 2008, 21:51
par x@v
sa m'en ajoute par 3 ?
j'utilisee une class que je développe...
<?php
#########################################################################################################
//////////////////////////////////				/************************************************/		#
//  	 #              #		//				/*     *****   class par Xavier Artot alias x@v */		#
//       #             ##		//				/*     *****   [email protected] ****************/		#
//       ###        #####		//				/*     *****   Ma première classe en php ********/		#
//       # ###    #######		//				/*     *****   cette classe permet d'avoir un ***/		#
//            ########  #		//				/*     *****   panier ou cadie pour un site *****/		#
//           #######			//				/*     *****   vous êtes conviés à laisser ******/		#
//       # #########			//				/*     *****   ce commentaire *******************/		#
//       ######     ### #		//				/*     *****   developpus.com *******************/		#
//       ###          ###		//				/*     *****   developpus.com *******************/		#
//       #              #		//				/*     *****   developpus.com *******************/		#
//          ###					//				/*     *****   developpus.com *******************/		#
//        #######    ##			//				/*     *****   developpus.com *******************/		#
//       #########  ####		//				/************************************************/		#
//       ##     ##   # ##		//																		#
//       #      ##      #		//																		#
//       ##     #      ##		//																		#
//       ###############		//																		#
//       ##############			//																		#
//       #						//																		#
//								//																		#
//                      #		//																		#
//                    ###		//																		#
//                #######		//																		#
//             ##########		//																		#
//        ##########			//																		#
//       ########				//																		#
//           ###				//																		#
//               ####   #		//																		#
//                   ####		//																		#
//                      #		//																		#
//////////////////////////////////																		#
#########################################################################################################

require_once('class.pdo.php');
class Panier
{
	private $caddie;
	private $connect;
	
	public function __construct()
	{
		session_start();
		// chargement du caddie
		if (isset($_SESSION['caddie']))
			$this->caddie = $_SESSION['caddie'];
		else 
			$this->caddie = array();
	}
	
	// ajoute un formulaire avec le nom et nombre d'article comme variable, grenade comme le fruit ;)
	public function setFormulaireAjout($nombreGrenade, $grenade)
	{
		if (isset($_GET[$grenade]))
		{
			if(isset($_GET[$nombreGrenade]))
			{
				$this->caddie[$grenade] =0;
				$this->caddie[$grenade] += $_GET[$nombreGrenade];
			}
			else
				$this->caddie[$grenade] += $_GET[$nombreGrenade];
		
			$_SESSION['caddie'] = $this->caddie;
			//header('Location: http://'.$_SERVER&#91;'HTTP_HOST'&#93;.$_SERVER['PHP_SELF'].'?cat='.$_GET['cat']);
		}
		?>
		<form action="<?php echo $_SERVER['PHP_SELF'];?>" method="GET">
			<?php // name="cat" envoie la variable $_GET['cat'] dans le header()?>
			<input type="hidden" name="cat" value="<?php echo $_SESSION['idCategorie'];?>" />
			<?php //echo 'Nombre de '.$grenade;?>
			<select name="<?php echo $nombreGrenade;?>">
				<?php for($i=1; $i<=20; $i++)
					echo '<option value="'.$i.'">'.$i.'</option>';?>
			</select>
			<input type="hidden" name="<?php echo $grenade;?>" value="<?php echo $grenade;?>" />
			<input type="submit" />
		</form><?php
	}
///////////////////////////////////
	public function setPlusIncremente($grenade)
	{
		if (isset($_GET['incremente']))
		{
			switch ($_GET['incremente'])
			{
				case $grenade : ++$this->caddie[$grenade];
				break;
			}
			$_SESSION['caddie'] = $this->caddie;
			header('Location: '.$_SERVER['PHP_SELF'].'?cat='.$_GET['cat']);
			exit();
		}
		?>
	<a href="<?php echo $_SERVER['PHP_SELF'];?>?cat=<?php echo $_SESSION['idCategorie'];?>&incremente=<?php echo $grenade;?>">
		<?php echo $nom;?> +
	</a><?php
	}

	public function setPlusDecremente($grenade)
	{
		if (isset($_GET['achat']))
		{
			switch ($_GET['achat'])
			{
				case $grenade : --$this->caddie[$grenade];
				break;
			}
			$_SESSION['caddie'] = $this->caddie;
			header('Location: http://'.$_SERVER&#91;'HTTP_HOST'&#93;.$_SERVER['PHP_SELF']);
			exit();
		}
		?>
		<a href="<?php echo $_SERVER['PHP_SELF'];?>?cat='.$_SESSION['idCategorie']&retire=<?php echo $grenade;?>">
			<?php echo $grenade;?> -
		</a><?php
	}

	public function detruitPanier()
	{
		if ($_SESSION['caddie'] != '')
		{
			if (isset($_GET['action']) && !empty($_GET['action']))
			{
				session_destroy();
				header('Location: http://'.$_SERVER&#91;'HTTP_HOST'&#93;.$_SERVER['PHP_SELF'].'?cat='.$_SESSION['idCategorie']);
				exit();
			}
			echo 'Vous avez '.count($_SESSION['caddie']).' articles<br />';
			echo '<a href="'.$_SERVER['PHP_SELF'].'?cat='.$_SESSION['idCategorie'].'&action=detruit">vider le panier</a>';
		}
		else 
			print ('Votre caddie est déserpérément vide !!!!');
	}
	
	public function visionnePanier()
	{
		if ($_SESSION['caddie'] != '')
		{
			foreach ($_SESSION['caddie'] as $key => $val)
			{
				echo '<p>'.$key.' '.$val.'</p>';
			}
		}
		else
		{
			exit('Votre caddie est déserpérément vide !!!!');
		}
	}
	
	public function suprimeEntreeDansPanier($idSession)
	{
		$search_array =$_SESSION['caddie'];
		if (array_key_exists($_GET['suprimer'], $search_array))
		{
			$supr=$_GET['suprimer'];
		    unset($_SESSION['caddie'][$supr]);
			header('Location: ./redirectionPanier.php');
		}
		echo '<a href="'.$_SERVER['PHP_SELF'].'?suprimer='.$idSession.'">Suprimmer</a>';
	}
	
	public function getCategorie(Connection $connect)
	{?>
		<?php
		echo '<ul id="categorie">';
		$this->connect=$connect;
		$sql= "SELECT * FROM categorie";
		$result = $this->connect->select($sql);
		foreach ($result as $row)
		{
			$categorie=$row['nom'];
			$id=$row['id'];
			$description=$row['description'];
			echo '<li><a href="produit.php?cat='.$id.'" title="'.$description.'">'.$categorie.'</a></li>';
		}?>
	</ul><?php
	}
}
?>

Posté : 17 avr. 2008, 22:48
par dunbar
:oops: et comme ceci ?
$_SESSION['caddie'][$supr]+1;

Posté : 17 avr. 2008, 22:54
par Sékiltoyai
Le problème ne vient pas de là.
Vérifie que ta page n'est pas rechargée plusieurs fois.

Posté : 17 avr. 2008, 23:32
par x@v
et bien justement !
	
	public function setPlusIncremente($grenade)
	{
		if (isset($_GET['incremente']))
		{
			switch ($_GET['incremente'])
			{
				case $grenade : ++$this->caddie[$grenade];
				break;
			}
			$_SESSION['caddie'] = $this->caddie;
			header('Location: '.$_SERVER['PHP_SELF'].'?cat='.$_GET['cat']);
			exit();
		}
		?>
	<a href="<?php echo $_SERVER['PHP_SELF'];?>?cat=<?php echo $_SESSION['idCategorie'];?>&incremente=<?php echo $grenade;?>">
		<?php echo $nom;?> +
	</a><?php
	}
je test bien la variable ?
je peux faire autrement en faisant le traitement ailleurs, mais sa ne sera pas objet.
J'aimrai la mettre sur phpclasses.com.

Posté : 18 avr. 2008, 06:25
par Cyrano
Juste en passant, tu devrais faire un tour ici, il y aura sûrement une idée ou deux à glaner pour avancer dans ton propre développement :-k

Posté : 18 avr. 2008, 08:31
par Sékiltoyai
Quel est l'intérêt du switch ici ? …

Posté : 18 avr. 2008, 14:47
par x@v
j'avais démarré sur un switch, je vais mettre un if, effectivement.
Excellent Cyranno ton tuto, je vais pouvoir enfin faire ce que je veux.

Même si après chaque changement de variable il me faut rechargé la page, à moins d'insérer une couche ajax ?
J'aime pas trop le javascript trop permissif.
Je peux encore redirigé sur une page qui va faire le traitement, mais là encore je n'utilise pas ma class.
ex:
page panier
echo '<a href="./panierSuprime.php?suprimer='.$idSession.'">Suprimmer</a>';
page panierSupprime.php qui redirige et réctualise le panier
<?php
session_start();
$search_array =$_SESSION['caddie'];
if (array_key_exists($_GET['suprimer'], $search_array))
{
	$supr=$_GET['suprimer'];
    unset($_SESSION['caddie'][$supr]);
	header('Location: ./panier.php');
}
?>
J'ai pas trouvé d'autre solution ?
Et ma classe n'est plus complète !