ajout par incrémentation (tableau)

x@v
Mammouth du PHP | 570 Messages

17 avr. 2008, 17:19

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

Eléphanteau du PHP | 35 Messages

17 avr. 2008, 20:58

essaye:
 ++$_SESSION['caddie'][$supr]; 
ça doit marcher :)
Peu de gens sont dignes de ne croire à rien.

x@v
Mammouth du PHP | 570 Messages

17 avr. 2008, 21:51

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
	}
}
?>

ViPHP
ViPHP | 2291 Messages

17 avr. 2008, 22:48

:oops: et comme ceci ?
$_SESSION['caddie'][$supr]+1;

ViPHP
ViPHP | 5924 Messages

17 avr. 2008, 22:54

Le problème ne vient pas de là.
Vérifie que ta page n'est pas rechargée plusieurs fois.

x@v
Mammouth du PHP | 570 Messages

17 avr. 2008, 23:32

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.

Mammouth du PHP | 19672 Messages

18 avr. 2008, 06:25

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
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

ViPHP
ViPHP | 5924 Messages

18 avr. 2008, 08:31

Quel est l'intérêt du switch ici ? …

x@v
Mammouth du PHP | 570 Messages

18 avr. 2008, 14:47

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 !