IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

jQuery Discussion :

Incrémentation des quantités du panier


Sujet :

jQuery

  1. #1
    Membre confirmé
    Inscrit en
    Février 2010
    Messages
    103
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 103
    Par défaut Incrémentation des quantités du panier
    Bonsoir à tous !
    Je viens solliciter votre concours car je m'arrache actuellement les cheveux sur un panier.

    Je travaille sur un panier et essaie sans succès d'incrémenter un champ quantité "+" et "-" sans rechargement de la page.
    Le nombre Total d'articles (2) s'incrémente bien mais pas la quantité de CHAQUE article (1) .

    Nom : Sans titre.png
Affichages : 1845
Taille : 25,2 Ko

    Voici mon code "Quantité" de mon panier.php :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    	<span class="quantity">		
     
    	<!--<span id="countprod"><?= $panier->countprod(); ?></span>  -->
    	<!-- <span id="countprod"><?= print $_SESSION['panier'][$product->id]; ?></span> -->
     
     
    				<a class="subPanier" style="border: 1px solid #960018;margin: 5px;" href="panier/subpanier.php?id=<?= $product->id; ?>">-</a>
     
    <!-- Ligne qui pose problème  -->
     
    <input type="text" name="panier[quantity][<?= $product->id; ?>]" value="<?= $_SESSION['panier'][$product->id]; ?>">
     
    				<a class="addPanier" style="border: 1px solid #960018;margin: 5px;" href="panier/addpanier.php?id=<?= $product->id; ?>">+</a>
     
    				</span>
    Celui de mes panier-class.php :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    <?php
    class panier{
     
    	private $DB;
     
    	public function __construct($DB){
    		if(!isset($_SESSION)){
    			session_start();
    		}
    		if(!isset($_SESSION['panier'])){
    			$_SESSION['panier'] = array();
    		}
    		$this->DB = $DB;
     
    		if(isset($_GET['delPanier'])){
    			$this->del($_GET['delPanier']);
    		}
    		if(isset($_POST['panier']['quantity'])){
    			$this->recalc();
    		}
    	}
     
    	public function recalc(){
    		foreach($_SESSION['panier'] as $product_id => $quantity){
    			if(isset($_POST['panier']['quantity'][$product_id])){
    				$_SESSION['panier'][$product_id] = $_POST['panier']['quantity'][$product_id];
    			}
    		}
    	}
     
    	public function count(){
    		return array_sum($_SESSION['panier']);
    	}
     
    	public function countprod(){
    		return array_sum($_SESSION['panier'][$product->id]);
    	}
     
    	public function total(){
    		$total = 0;
    		$ids = array_keys($_SESSION['panier']);
    		if(empty($ids)){
    			$products = array();
    		}else{
    			$products = $this->DB->query('SELECT id, price FROM images WHERE id IN ('.implode(',',$ids).')');
    		}
    		foreach( $products as $product ) {
    			$total += $product->price * $_SESSION['panier'][$product->id];
    		}
    		return $total;
    	}
     
    	public function add($product_id){
    		if(isset($_SESSION['panier'][$product_id])){
    			$_SESSION['panier'][$product_id]++;
    		}else{
    			$_SESSION['panier'][$product_id] = 1;
    		}
    	}
     
    	public function sub($product_id){
    		if(isset($_SESSION['panier'][$product_id])){
    			$_SESSION['panier'][$product_id]--;
    		}else{
    			$_SESSION['panier'][$product_id] = 1;
    		}
    	}
     
    	public function del($product_id){
    		unset($_SESSION['panier'][$product_id]);
    	}
     
    }
    Et celui de mon addpanier.php:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    <?php
    require '_header.php';
    $json = array('error' => true);
    if(isset($_GET['id'])){
    	$product = $DB->query('SELECT id FROM images WHERE id=:id', array('id' => $_GET['id']));
    	if(empty($product)){
    		$json['message'] = "Ce produit n'existe pas";
    	}else{
    		$panier->add($product[0]->id);
    		$json['error']  = false;
    		$json['total']  = number_format($panier->total(),2,',',' ');
    		$json['count']  = $panier->count();
    		$json['countprod']  = $panier->countprod();
    		$json['message'] = 'Le produit a bien été ajouté à votre panier';/* */
    	}
    }else{
    	$json['message'] = "Vous n'avez pas sélectionné de produit à ajouter au panier";
    }
    echo json_encode($json);

    Une âme charitable saurait-elle m'aiguiller ?

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Où est le code qui met à jour la valeur du champs ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre confirmé
    Inscrit en
    Février 2010
    Messages
    103
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 103
    Par défaut
    Bonjour Sabotage !

    Tu veux cette fonction ?

    Code js : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
     
     
    (function($){
     
    	$('.addPanier').click(function(event){
    		event.preventDefault();
    		$.get($(this).attr('href'),{},function(data){
    			if(data.error){
    				alert(data.message);
    			}else{
    			/*	if(confirm(data.message + '. Voulez vous consulter votre panier ?')){
    					location.href = 'panier.php';
    				}else{
     
    			*/
    					$('#total').empty().append(data.total);
    					$('#count').empty().append(data.count);
    					$('#countprod').empty().append(data.countprod);
    			/*	}	*/
    			}
    		},'json');
    		return false;
    	});

  4. #4
    Membre confirmé
    Inscrit en
    Février 2010
    Messages
    103
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 103
    Par défaut
    Cela fait plusieurs année que je n'ai pas codé quoi que ce soit. Je suis un peu paumé dans mon code ...
    Que dois-je faire pour que le champs des quantités s'incrémente lors du clic sur le bouton + et ceux sans recharger la page ?

    j'ai testé ceci mais sans succés. De plus celà ne boucle que sur le premier élément :

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     <span id="countprod"><?= print $_SESSION['panier'][$product->id]; ?></span>

Discussions similaires

  1. incrémenter des lignes en fonction d'un champ "nombre"
    Par bookaro92 dans le forum Access
    Réponses: 2
    Dernier message: 01/12/2006, 15h05
  2. JSP incrémentation des jours d'une date
    Par taroudant dans le forum Servlets/JSP
    Réponses: 8
    Dernier message: 07/08/2006, 10h20
  3. [VBA-E] incrémenter des valeurs excel grâce à des boutons
    Par keiserjo dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 19/07/2006, 11h32
  4. incrémenter des chaines de caratères
    Par stan21 dans le forum Access
    Réponses: 6
    Dernier message: 22/02/2006, 14h19
  5. Incrémenter des caractères
    Par Isa31 dans le forum Langage
    Réponses: 8
    Dernier message: 14/02/2006, 17h56

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo