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

Langage PHP Discussion :

[PHP-JS] Panier et incrémentation quantité


Sujet :

Langage PHP

  1. #1
    Membre très actif Avatar de Aizen64
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    563
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 563
    Par défaut [PHP-JS] Panier et incrémentation quantité
    Salut!

    Je suis en train de faire un panier (tout simple) en PHP et je suis en train de galérer sur un problème tout con :

    Si la référence du produit passée dans le formulaire correspond à une référence déjà rentrée dans le array je dois incrémenter la quantité au même indice.

    Ça n'a rien de compliqué en soit mais moi et le PHP... c'est un peu comme le C...

  2. #2
    Membre éclairé Avatar de Linio
    Inscrit en
    Octobre 2005
    Messages
    431
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 431
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $monarray[$_GET['mareference']]++
    Ou l'incrément que tu veux.

    J'ai pas du comprendre la question, parce que c'est un peu simple.

  3. #3
    Membre chevronné Avatar de binouzzz19
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    385
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2007
    Messages : 385
    Par défaut
    Tu peux nous mettre ton code ?

    Tu veux modifier une table ou juste l'affichage en php ?

    Si, c'est juste en php :

    dans ton while($rows = mysql_fetch_array($select)){ ... }
    mets un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    if(isset($_GET['mareference'])) 
         if($_GET['mareference'] = $rows['refArticle'])
             $qte = $rows['qte'] + 1;
    enfin, je pense

  4. #4
    Membre très actif Avatar de Aizen64
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    563
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 563
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    foreach $_SESSION['RefProduit'] as $i
    				{
    				if ($_SESSION['RefProduit'][$i]==$ReqRefProd)
    					{
    					$_SESSION['QteCommande'][$i]=$_SESSION['QteCommande'][$i]+$_SESSION['QteCommande']; 
    					}
    				}
    Sinon j'ajoute la référence du produit en fin de tableau puis la quantité au même indice.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 69
    Par défaut
    Bonjour,

    ALors voila, bon je sais pas comment tu as commencé ton panier mais moi je ferais ca comme ca (un panier complet au niveau de l'ajout et de la modification des articles) :



    action sur panier panierlib
    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
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    252
    253
    254
    255
    256
    257
    258
    259
    260
    261
    262
    263
    264
    265
    266
    267
    268
    269
    270
    271
    272
    273
    274
    275
    276
    277
    278
    279
    280
    281
    282
    283
    284
    285
    286
    287
    288
    289
    290
    291
    292
    293
     
    <?
    /*
     * -- DEFINITION DE LA SESSION CADDIE --
     * $_SESSION['caddie'][][0] => Identifiant de l'article
     * $_SESSION['caddie'][][1] => Quantité de l'article
     * $_SESSION['caddie'][][2] => Reférence de l'article
     * $_SESSION['caddie'][][3] => Nom de l'article
     * $_SESSION['caddie'][][4] => Prix HT de l'article
     * $_SESSION['caddie'][][5] => Valeur Taxe de l'article
     * $_SESSION['caddie'][][6] => Poids de l'article
     * $_SESSION['caddie'][][7] => Option de l'article
     * $_SESSION['caddie'][][7] => PrixTTC de la promo
     */
     
    function verifPanier() {
     
    	/* 
    	 * VERIFIE LE PANIER
    	 */	
     
    	// Initialise la session nbArticleCaddie si elle n'existe pas
    	if(!isset($_SESSION['nbArticleCaddie'])) $_SESSION['nbArticleCaddie']=0;
     
    	// Verifie si tous les articles dans le panier existe encore
    	for($i=0;$i<$_SESSION['nbArticleCaddie'];$i++) {
    		if(!existArticle($_SESSION['caddie'][$i][0])) unsetArticlePanier($i,$_SESSION['caddie'][$i][0],$_SESSION['caddie'][$i][7]);
    	}
     
    }
     
    function addArticlePanier($idArticle,$qtArticle,$optArticle) {
     
    	/* 
    	 * AJOUT D'UN ARTICLE DANS LE PANIER
    	 * Entrées : Id de l'article, Quantité de l'article
    	 */	
     
    	verifPanier();
     
    	if($qtArticle>0) {
     
    		// Verifie si l'article est déjà present dans le panier pour ne pas ajouter 2x le meme article
    		$ArticleExist = false;
    		for($i=0;$i<$_SESSION['nbArticleCaddie'];$i++) {
    			if($_SESSION['caddie'][$i][0]==$idArticle && $_SESSION['caddie'][$i][7]==$optArticle) {
    				$ArticleExist=true;
    				break;
    			}
    		}
     
    		// Si l'article existe on change sa quantité
    		if($ArticleExist==true) {
    			chaArticlePanier($i,$idArticle,$_SESSION['caddie'][$i][1]+1);
    		}
    		// Sinon on l'ajoute
    		else {
    			// Récuperation du détail de l'article
    			if($arrArticle=detailsArticle($idArticle,"")) {
     
    				// Ajout de l'identifiant
    				$_SESSION['caddie'][$_SESSION['nbArticleCaddie']][0]=$idArticle;
    				// Ajout de la quantité
    				if($qtArticle<=$GLOBALS['qtMaxArticle'])
    					$_SESSION['caddie'][$_SESSION['nbArticleCaddie']][1]=$qtArticle;
    				else
    					$_SESSION['caddie'][$_SESSION['nbArticleCaddie']][1]=$GLOBALS['qtMaxArticle'];
    				// Ajout de la ref
    				$_SESSION['caddie'][$_SESSION['nbArticleCaddie']][2]=$arrArticle['ref_article'];
    				// Ajout du nom
    				if($optArticle>0)
    					$_SESSION['caddie'][$_SESSION['nbArticleCaddie']][3]=$arrArticle['nom_article']." (".nomOption($optArticle).")";
    				else
    					$_SESSION['caddie'][$_SESSION['nbArticleCaddie']][3]=$arrArticle['nom_article'];
    				// Ajout du prix HT
    				if($arrArticle['PROMO_ARTICLE'] == 1){
    					$sqltemp='SELECT * FROM mbm_promo WHERE Produit_id='.$arrArticle["id_article"].'';
    					$reptemp=mysql_query($sqltemp) or die("Erreur sql, requete : $sql<br/>Erreur: ". mysql_error());
    					$newtemp=mysql_fetch_array($reptemp,MYSQL_ASSOC);
    					$_SESSION['caddie'][$_SESSION['nbArticleCaddie']][4]=($newtemp['prix_promo']/(1+$arrArticle['valeur_taxe']));
    					}
    				else{
    				    $_SESSION['caddie'][$_SESSION['nbArticleCaddie']][4]=$arrArticle['prix_vente_ht'];
    				}
    				// Ajout de la valeur de la taxe
    				$_SESSION['caddie'][$_SESSION['nbArticleCaddie']][5]=$arrArticle['valeur_taxe'];
    				// Ajout du poids en prenant compte du port offert
    				if($arrArticle['port_offert']==1)
    					$_SESSION['caddie'][$_SESSION['nbArticleCaddie']][6]=0;
    				else
    					$_SESSION['caddie'][$_SESSION['nbArticleCaddie']][6]=$arrArticle['poids_article'];
    					//$_SESSION['caddie'][$_SESSION['nbArticleCaddie']][6]=0;
    				// Incrementation du nb d'article
    				// Ajout du prix HT
    				$_SESSION['caddie'][$_SESSION['nbArticleCaddie']][7]=$optArticle;
     
    				$_SESSION['nbArticleCaddie']++;
    			}
    		}
    	}
    }
     
    function chaArticlePanier($posArticle,$idArticle,$qtArticle) {
     
     
    	/* 
    	 * CHANGEMENT DES QUANTITES DES ARTICLES DU PANIER
    	 * Entrées : La position de l'article, L'identidiant de l'article, la quantite de l'article
    	 */
     
    	verifPanier();
    	// Verifie si cette article correspond bien
    	if($_SESSION['caddie'][$posArticle][0]==$idArticle) {
    		// si la quantité est superieur la quantité maximal
    		if($qtArticle>$GLOBALS['qtMaxArticle'])
    			$_SESSION['caddie'][$posArticle][1]=$GLOBALS['qtMaxArticle'];
    		// si la quantité est égal ou inferieur a 0
    		elseif($qtArticle<=0)
    			unsetArticlePanier($posArticle,$idArticle);
    		// changement de la quantité
    		else
    			$_SESSION['caddie'][$posArticle][1]=$qtArticle;
    	}
    }
     
     
    function unsetArticlePanier($posArticle,$idArticle) {
     
    	/* 
    	 * SUPPRESSION D'UN ARTICLE DU PANIER
    	 * Entrées : Postion de l'article dans le panier, Identifiant de l'article
    	 */
     
    	verifPanier();
    	// Verifie si cette article correspond bien
    	if($_SESSION['caddie'][$posArticle][0]==$idArticle) {
    		for($i=$posArticle;$i<$_SESSION['nbArticleCaddie']-1;$i++) {
    			$_SESSION['caddie'][$i]=$_SESSION['caddie'][$i+1];
    		}
    		unset($_SESSION['caddie'][$_SESSION['nbArticleCaddie']-1]);
    		$_SESSION['nbArticleCaddie']--;
    	}
    }
     
    function prixTTCArticlePanier($posArticle) {
     
    	/* 
    	 * RENVOIE LE PRIX TTC D'UN ARTICLE DU PANIER
    	 * Entrées : position de l'article dans le panier
    	 * Sorties : Prix TTC
    	 */
    		return ROUND($_SESSION['caddie'][$posArticle][4] * (1 + $_SESSION['caddie'][$posArticle][5]), 2);
    }
     
    function prixTTCQtArticlePanier($posArticle) {
     
    	/* 
    	 * RENVOIE LE PRIX TTC D'UN ARTICLE DU PANIER EN TENANT COMPTE DES QUANTITES
    	 * Entrées : position de l'article dans le panier
    	 * Sorties : Prix TTC * Quantité
    	 */
     
    	return prixTTCArticlePanier($posArticle) * $_SESSION['caddie'][$posArticle][1];
    }
     
    function prixTotalTTCArticlePanier() {
     
    	/* 
    	 * RENVOIE LE PRIX TOTAL TTC D'UN PANIER
    	 * Sorties : Prix Total TTC
    	 */
     
    	$prixTotalTTC = 0;
    	for($i=0;$i<$_SESSION['nbArticleCaddie'];$i++) {
    		$prixTotalTTC+=prixTTCQtArticlePanier($i);
    	}
    	return $prixTotalTTC;
    }
     
    function prixTotalTTCArticleFraisPortPanier() {
     
    	/* 
    	 * RENVOIE LE PRIX TOTAL TTC D'UN PANIER
    	 * Sorties : Prix Total TTC
    	 */
     
    	$prixTotalTTC = 0;
    	for($i=0;$i<$_SESSION['nbArticleCaddie'];$i++) {
    		$prixTotalTTC+=prixTTCQtArticlePanier($i);
    	}
    	return $prixTotalTTC + prixFraisPortTTC();
    }
     
     
    function listQtArticlePanier($posArticle,$idArticle,$qtArticle) {
     
    	/*
    	 * AFFICHE LA LISTE DES QUANTITES POUR UN ARTICLE DU PANIER
    	 * Entrées : Position de l'article dans le panier, Identifiant de l'article, Quantité de l'article
    	 * Sorties : Select
    	 */
     
    	echo "<select name=\"quantite\" class=\"qtt_panier\" onchange=\"document.location.href='modif_panier.php?action=cha&pos=".$posArticle."&article=".$idArticle."&quantite='+this.value\">";
    	for($i=1;$i<=$GLOBALS['qtMaxArticle'];$i++) {
    		if($i==$qtArticle)
    			echo "<option value=\"".$i."\" selected>".$i."</option>";
    		else
    			echo "<option value=\"".$i."\">".$i."</option>";
    	}
      echo "</select>";
     
    }
     
     
    function poidsPanier() {
     
     
     
    	/*
    	 * CALCUL DU POIDS TOTAL DU PANIER
    	 * Sorties : renvoie le poids total
    	 */
     
    	if(prixTotalTTCArticlePanier()>70) return 0;
     
    	$poids=0;
    	for($i=0;$i<$_SESSION['nbArticleCaddie'];$i++) {
    		$poids+=($_SESSION['caddie'][$i][1] * $_SESSION['caddie'][$i][6]);
    	}
    	return $poids;
     
    }
     
    function qtTotalArticle() {
     
    	/* 
    	 * RENVOIE LA QUANTITE DU PANIER
    	 * Sorties : Nombre total d'articles
    	 */
     
    	$qt = 0;
    	for($i=0;$i<$_SESSION['nbArticleCaddie'];$i++) {
    		$qt+=$_SESSION['caddie'][$i][1];
    	}
    	return $qt;
    }
     
    ?>
     
    function detailsArticle($idArticle,$nomChamp) {
     
    	/* 
    	 * RENVOIE LES DETAILS D'UN ARTICLE
    	 * Entrées : Identifiant de l'article
    	 * Sorties : Si Nom du champ est vide renvoie un tableau contenant tous les champs de la table Article associé à sa taxe, sa gamme et sa catégorie,
    	 * sinon renvoie la valeur du champ
    	 */	
     
    	$sql="SELECT id_article, ta.id_taxe, ref_article, nom_article, description_article, prix_achat_article, bienfaits_article, conseils_article, ROUND(prix_vente_article,2) AS prix_vente_ht, afficher_article, gerer_stock_article, stock_max_article, stock_min_article, quantite_article, unite_gestion_article, conditionnement_article, conditionnement_vente_article, composition_article, poids_article, image1_article, image2_article, doc_article, date_ajout_article, date_modif_article, date_valid_article, statut_article, zoom_article, ta.id_gamme, ta.id_categorie, hit_article, port_offert, ta.titre_page_article, ta.meta_keywords_article, ta.meta_description_article,PROMO_ARTICLE";
    	$sql.=", ROUND(ta.prix_vente_article * (1 + tt.valeur_taxe),2) AS prix_vente_ttc";
    	$sql.=", tt.valeur_taxe";
    	$sql.=", tg.nom_gamme";
    	$sql.=", tc.nom_categorie";
    	$sql.=", tfp.nom_famille, tf.nom_famille AS nom_sfamille";
    //	$sql.=" FROM ".TABLE_ARTICLE."  ta, ".TABLE_CATEGORIE." tc, ".TABLE_GAMME." tg, ".TABLE_TAXE." tt, FAMILLE tf , FAMILLE tfp";
    	$sql.=" FROM ".TABLE_ARTICLE."  ta, ".TABLE_CATEGORIE." tc, ".TABLE_GAMME." tg, ".TABLE_TAXE." tt, FAMILLE tf";
    	$sql.=" LEFT JOIN FAMILLE tfp ON (tfp.id_famille = tf.parent_id_famille)";
    	$sql.=" WHERE tg.id_gamme = ta.id_gamme";
    	$sql.=" AND tc.id_categorie = ta.id_categorie";
    	$sql.=" AND tt.id_taxe = ta.id_taxe";
    	$sql.=" AND ta.id_famille = tf.id_famille";
    	$sql.=" AND ta.id_article = '".$idArticle."'";
    	// Verification que l'article est bien valide
    	$sql.=" AND ta.afficher_article = 1";
    	$sql.=" AND (ta.date_valid_article='0000-00-00 00:00:00' OR ta.date_valid_article > NOW())";
    	$sql.=" LIMIT 1";
     
    	//echo $sql;
     
    	$req=mysql_query($sql) or exit($sql."<br>".mysql_error());
     
    	if(mysql_num_rows($req)==1) {
    		if(empty($nomChamp)) {
    			return mysql_fetch_array($req);
    		}
    		else {
    			$arrArticle = mysql_fetch_array($req);
    			return $arrArticle[$nomChamp];
    		}
    	}
     
    	return false;
    }


    et pour ton panier ensuite a l'affichage :

    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
     
    <table><?
          /* AFFICHE LA LISTE DES PRODUITS DANS LE PANIER */
          for($i=0;$i<$_SESSION['nbArticleCaddie'];$i++) {
          ?>
    			<tr class="c2"> 
    				<td><a href="/produit_amincissement/details.php?id=<?= $_SESSION['caddie'][$i][0]?>"><?= $_SESSION['caddie'][$i][3]?></a></td>
    				<td align="center">
    				<?listQtArticlePanier($i,$_SESSION['caddie'][$i][0],$_SESSION['caddie'][$i][1]);?>
            </select>
            </td>
            <td align="center"><?= prixTTCQtArticlePanier($i)?> &euro; </td>
            <td align="center"><a href="modif_panier.php?pos=<?= $i?>&article=<?= $_SESSION['caddie'][$i][0]?>&action=rm"><img src="/charte/boutique/poubelle.gif" width="16" height="17" border="0"></a></td>
    			</tr>
         	<?
         	}?> 
     
    </table>

    et pour la partie modification de panier :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    // Liste des actions possible sur le panier
    if(isset($_GET['action'])) {
    	if(!isset($_GET['option'])) $_GET['option']=0;
    	// Ajout d'un produit
    	if($_GET['action']=="add") addArticlePanier($_GET['article'],$_GET['quantite'],$_GET['option']);
    	// Modification d'un produit
    	elseif($_GET['action']=="cha") chaArticlePanier($_GET['pos'],$_GET['article'],$_GET['quantite']);
    	// Suppression d'un produit
    	elseif($_GET['action']=="rm") unsetArticlePanier($_GET['pos'],$_GET['article']);
    }
     
    // Redirection
    header("Location: panier.php");
    exit;

    Enfin voila pour moi ca fait un panier correct comme ca avec gestion des quantité, vérification du panier, et ajout de produits

    Apres faut que tu l'adapte à ta base de donnée et que tu geres en fonction de ce que tu a fait ^^

    En espérant que ca va t'aider.

    bonne continuation.

Discussions similaires

  1. Php panier virtuel avec stockage de la quantité dans une table temporaire
    Par otmaneha dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 19/08/2011, 11h06
  2. modifier quantité panier php
    Par mouna87 dans le forum Langage
    Réponses: 3
    Dernier message: 04/06/2010, 09h44
  3. Panier PHP et quantités
    Par Armagnak dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 2
    Dernier message: 19/08/2008, 15h59
  4. [PHP-JS] Peut on incrémenter dans un echo ? Merci
    Par guillaumeIOB dans le forum Langage
    Réponses: 6
    Dernier message: 08/03/2007, 13h49
  5. [PHP-JS] modif quantite article dans panier
    Par oceane751 dans le forum Langage
    Réponses: 8
    Dernier message: 16/09/2006, 00h34

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