ajout par incrémentation (tableau)

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : ajout par incrémentation (tableau)

par x@v » 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 !

par Sékiltoyai » 18 avr. 2008, 08:31

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

par Cyrano » 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

par x@v » 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.

par Sékiltoyai » 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.

par dunbar » 17 avr. 2008, 22:48

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

par x@v » 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
	}
}
?>

par zest » 17 avr. 2008, 20:58

essaye:
 ++$_SESSION['caddie'][$supr]; 
ça doit marcher :)

ajout par incrémentation (tableau)

par x@v » 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