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

PHP & Base de données Discussion :

panier php frais de port calcule


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Inscrit en
    Janvier 2008
    Messages
    1 159
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 1 159
    Par défaut panier php frais de port calcule
    Bonjour,

    je souhaite calculer mes frais de port avec deux differents produits table et transat.

    tout fonctionne a part si dans le panier le client mais plus de deux table de categories différentes restant des tables je veux additioner la quantite pour calculer le frais de port sur la totalite des tables meme differentes voici mon code qui se met pas dans le if mais dans else.

    Je pense que c'est parce que je n'arrive pas recuperer les nom des codes de table pour voir si ce sont que des tables.

    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
    $total = 0; //set initial total value
    		$b = 0; //var for zebra stripe table 
    		foreach ($_SESSION["cart_products"] as $cart_itm)
            {
    			//set variables to use in content below
    			$product_name = $cart_itm["product_name"];
    			$product_qty = $cart_itm["product_qty"];
    			$product_price = $cart_itm["product_price"];
    			$product_code = $cart_itm["product_code"];
    			$product_finition = $cart_itm["product_finition"];
    			$product_color = $cart_itm["product_color"];
    			$subtotal = ($product_price * $product_qty); //calculate Price x Qty
    			$qtetotal += $cart_itm["product_qty"];
     
    		   	$bg_color = ($b++%2==1) ? 'odd' : 'even'; //class for zebra stripe 
    		    echo '<tr class="'.$bg_color.'">';
    			echo '<td><input type="text" size="2" maxlength="2" name="product_qty['.$product_code.']" value="'.$product_qty.'" /></td>';
    			echo '<td>'.$product_name.'</td>';
    			echo '<td>'.$product_price.$currency.'</td>';
    			echo '<td>'.$subtotal.$currency.'</td>';
    			echo '<td>'.$product_finition.'  '.$product_color.'</td>';
    			echo '<td><input type="checkbox" name="remove_code[]" value="'.$product_code.'" /></td>';
                echo '</tr>';
    			$total = ($total + $subtotal); //add subtotal to total var
     
            }
     
    	print_r($product_code);
    		/*si table orphe et table orphe avec plexi on additione les quantites*/
     
    	if($product_code == "table-orphe")
    		{
     
    			if($qtetotal  >= 1 && $qtetotal  <= 2)
    			{
    				$shipping_cost_table=20;
    			}
     
    			if($qtetotal  >= 3 && $qtetotal  <= 4)
    			{
    				$shipping_cost_table=30;
    			}
     
    			if($qtetotal >= 5 && $qtetotal  <= 10)
    			{
    				$shipping_cost_table=60;
    			}				
     
    			if($qtetotal  >10)
    			{
    				$shipping_cost_table=0;
    			}			
     
    		}
    		else
    		{
    			echo'2';
    		/*si table orphe ou table orphe avec plexi mais pas les deux en même temps*/
    			if($product_qty  >= 1 && $product_qty  <= 2)
    			{
    				$shipping_cost_table=20;
    			}
     
    			if($product_qty  >= 3 && $product_qty  <= 4)
    			{
    				$shipping_cost_table=30;
    			}
     
    			if($product_qty  >= 5 && $product_qty  <= 10)
    			{
    				$shipping_cost_table=60;
    			}				
     
    			if($product_qty  >10)
    			{
    				$shipping_cost_table=0;
    			}			
    		}
    voici ce que retourne le print_r($_SESSION["cart_products"]); en dehors du foreach

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Array ( [table-orphe] => Array ( [product_finition] => Miroir [product_qty] => 3 [product_code] => table-orphe [product_name] => Table basse Orphée sans plexi [product_price] => 590.00 ) [table-orphe-avec-plexi] => Array ( [product_finition] => Miroir [product_color] => Noir [product_qty] => 8 [product_code] => table-orphe-avec-plexi [product_name] => Table basse Orphée avec plexi [product_price] => 809.00 ) )
    et le print_r($product_code); en dehors du forreach

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    table-orphe-avec-plexi2
    je n'ai qu'un code alors qu'il devrait en avoir 2 je sais que c'est parce qu'il doit etre recuperer dans le foreach mais meme en le mettant dans une session des que je sort du foreach ca marche plus soucis la quantite totale $qtetotal += $cart_itm["product_qty"]; ne donne que le bonne valeur hors foreach.

    merci pour votre aide.

  2. #2
    Expert confirmé
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Billets dans le blog
    12
    Par défaut
    Salut,

    je pense que tu t'es compliqué la vie pour rien :
    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
    $total_price = 0; //set initial total value
    $total_qty   = 0;
    $b           = -1; //var for zebra stripe table 
    foreach ($_SESSION["cart_products"] as $cart_itm)
    {
        //set variables to use in content below
        $product_name     = $cart_itm["product_name"];
        $product_qty      = $cart_itm["product_qty"];
        $product_price    = $cart_itm["product_price"];
        $product_code     = $cart_itm["product_code"];
        $product_finition = $cart_itm["product_finition"];
        $product_color    = $cart_itm["product_color"];
        $price            = $product_price * $product_qty;
        $total_qty       += $product_qty;
     
        $bg_color = ((++$b % 2) === 1) ? 'odd' : 'even'; //class for zebra stripe 
        echo '<tr class="'.$bg_color.'">';
        echo '<td><input type="text" size="2" maxlength="2" name="product_qty['.$product_code.']" value="'.$product_qty.'" /></td>';
        echo '<td>'.$product_name.'</td>';
        echo '<td>'.$product_price.$currency.'</td>';
        echo '<td>'.$price.$currency.'</td>';
        echo '<td>'.$product_finition.'  '.$product_color.'</td>';
        echo '<td><input type="checkbox" name="remove_code[]" value="'.$product_code.'" /></td>';
        echo '</tr>';
        $total_price += $price;
    }
     
    $shipping_cost_table = 0;
     
    if ($total_qty <= 2) {
        $shipping_cost_table = 20;
    } elseif ($total_qty <= 4) {
        $shipping_cost_table = 30;
    } elseif ($total_qty <= 10) {
        $shipping_cost_table = 60;
    }

  3. #3
    Membre éprouvé
    Inscrit en
    Janvier 2008
    Messages
    1 159
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 1 159
    Par défaut
    Bonjour,

    merci pour le code le soucis est que j'ai après de teste j'ai des choses quI complique le tout dans le panier :

    - si je met deux transat différents dans le panier les quantités doivent s’additionner pour avoir les frais de ports sur la quantité totale des transats.
    - si je met deux table différents dans le panier les quantités doivent s’additionner pour avoir les frais de ports sur la quantité totale des tables.
    - si je met 1 transat et 1 table dans le panier les quantités doivent ne pas s’additionner pour avoir les frais de ports sur la quantité de transats et de tables.

    Il faut arriver a differencer les quantites pour transat et tables dans le panier j'ai ajouter un tableau pour les code produit qui m'aide a savoir ce qui est dans le panier mais comment associer la quantite de ce produit demandé ?

    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
    $total = 0; //set initial total value
    		$b = 0; //var for zebra stripe table 
    		  // Déclaration d'un tableau vide
    		$tab_product_code = array();
    		$tab_product_qte = array();
    		foreach ($_SESSION["cart_products"] as $cart_itm)
            {
    			//set variables to use in content below
    			$product_name = $cart_itm["product_name"];
    			$product_qty = $cart_itm["product_qty"];
    			$product_price = $cart_itm["product_price"];
    			$product_code = $cart_itm["product_code"];
    			$product_finition = $cart_itm["product_finition"];
    			$product_color = $cart_itm["product_color"];
    			$subtotal = ($product_price * $product_qty); //calculate Price x Qty
    			$qtetotal += $cart_itm["product_qty"];
    			$tab_product_code[] = $cart_itm["product_code"];
    			$tab_product_qte[] = $cart_itm["product_qty"];
    		//	print_r($qtetotal);
     
    		   	$bg_color = ($b++%2==1) ? 'odd' : 'even'; //class for zebra stripe 
    		    echo '<tr class="'.$bg_color.'">';
    			echo '<td><input type="text" size="2" maxlength="2" name="product_qty['.$product_code.']" value="'.$product_qty.'" /></td>';
    			echo '<td>'.$product_name.'</td>';
    			echo '<td>'.$product_price.$currency.'</td>';
    			echo '<td>'.$subtotal.$currency.'</td>';
    			echo '<td>'.$product_finition.'  '.$product_color.'</td>';
    			echo '<td><input type="checkbox" name="remove_code[]" value="'.$product_code.'" /></td>';
                echo '</tr>';
    			$total = ($total + $subtotal); //add subtotal to total var
     
     
    		}
     
    	/*si table orphe et table orphe avec plexi on additione les quantites*/
    		if(in_array("table-orphe",$tab_product_code) and in_array("table-orphe-avec-plexi",$tab_product_code))
    		{
    			if($qtetotal  >= 1 && $qtetotal  <= 2)
    			{
    				$shipping_cost_table=20;
    			}
     
    			if($qtetotal  >= 3 && $qtetotal  <= 4)
    			{
    				$shipping_cost_table=30;
    			}
     
    			if($qtetotal >= 5 && $qtetotal  <= 10)
    			{
    				$shipping_cost_table=60;
    			}				
     
    			if($qtetotal  >10)
    			{
    				$shipping_cost_table=0;
    			}			
     
    		}
    		elseif(in_array("table-orphe",$tab_product_code) or in_array("table-orphe-avec-plexi",$tab_product_code))
    		{
     
    		/*si table orphe ou table orphe avec plexi mais pas les deux en même temps*/
    			if($product_qty  >= 1 && $product_qty  <= 2)
    			{
    				echo'a';
    				$shipping_cost_table=20;
    			}
     
    			if($product_qty  >= 3 && $product_qty  <= 4)
    			{
    				$shipping_cost_table=30;
    			}
     
    			if($product_qty  >= 5 && $product_qty  <= 10)
    			{
    				$shipping_cost_table=60;
    			}				
     
    			if($product_qty  >10)
    			{
    				$shipping_cost_table=0;
    			}			
    		}
     
    	if(in_array("transat-vague",$tab_product_code) and in_array("transat-dune",$tab_product_code) and in_array("transat-ile",$tab_product_code))
    		{
    			//echo'1';
    			if($qtetotal  >= 1 && $qtetotal  <= 2)
    			{
    				$shipping_cost_transat=49;
    			}
     
    			if($qtetotal  >= 3 && $qtetotal  <= 4)
    			{
    				$shipping_cost_transat=79;
    			}
     
     
    			if($qtetotal  >4)
    			{
    				$shipping_cost_transat=0;
    			}			
     
    		}
    		else
    		{
    			//echo'2';
    		/*si transat vague ou transat dune ou transat ile amais pas les 3 en même temps*/
    			if($product_qty  >=1 && $product_qty  <= 2)
    			{
     
    				$shipping_cost_transat=49;
    			}
     
    			if($product_qty  >= 3 && $product_qty  <= 4)
    			{
    				$shipping_cost_transat=79;
     
    			}	
     
    			if($product_qty  >4)
    			{
    				$shipping_cost_transat=0;
    			}			
    		}
     
     
     
    		$shipping_cost = $shipping_cost_table + $shipping_cost_transat;
    si quelqu'un peut m'aider svp .

    pour recuperer la totalite de la quantite quand que des transats ou que des tables voici $qtetotal += $cart_itm["product_qty"]; et cela fonctionne mais c'est quand un transat et une table ca marche pas. Car la quantite recuperer n''est pas bonne car je ne vois pas comment recuperer la quantite au produits dans la ligne du panier.

  4. #4
    Expert confirmé
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Billets dans le blog
    12
    Par défaut
    Ok, c'est plus clair
    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
    $total_price = 0; //set initial total value
    $total_qty   = [];
    $b           = -1; //var for zebra stripe table 
    foreach ($_SESSION["cart_products"] as $cart_itm)
    {
        //set variables to use in content below
        $product_name     = $cart_itm["product_name"];
        $product_qty      = $cart_itm["product_qty"];
        $product_price    = $cart_itm["product_price"];
        $product_code     = $cart_itm["product_code"];
        $product_finition = $cart_itm["product_finition"];
        $product_color    = $cart_itm["product_color"];
        $price            = $product_price * $product_qty;
        if ( ! isset($total_qty[$product_code])) {
            $total_qty[$product_code] = 0;        
        } 
        $total_qty[$product_code] += $product_qty;
     
        $bg_color = ((++$b % 2) === 1) ? 'odd' : 'even'; //class for zebra stripe 
        echo '<tr class="'.$bg_color.'">';
        echo '<td><input type="text" size="2" maxlength="2" name="product_qty['.$product_code.']" value="'.$product_qty.'" /></td>';
        echo '<td>'.$product_name.'</td>';
        echo '<td>'.$product_price.$currency.'</td>';
        echo '<td>'.$price.$currency.'</td>';
        echo '<td>'.$product_finition.'  '.$product_color.'</td>';
        echo '<td><input type="checkbox" name="remove_code[]" value="'.$product_code.'" /></td>';
        echo '</tr>';
        $total_price += $price;
    }
     
    $shipping_cost_table = 0;
    foreach ($total_qty as $product_code => $qty) {
        if (in_array($product_code, ['table_orphe', 'table-orphe-avec-plexi'], true)) {
            if ($qty <= 2) {
                $shipping_cost_table += 20;
            } elseif ($qty <= 4) {
                $shipping_cost_table += 30;
            } elseif ($qty <= 10) {
                $shipping_cost_table += 60;
            }    
        } elseif (in_array($product_code, ['transat-vague', 'transat-dune', 'transat-ile'], true)) {
            if ($qty <= 2) {
                $shipping_cost_table += 49;
            } elseif ($qty <= 4) {
                $shipping_cost_table += 79;
            }
        }        
    }
    Ce genre d'approche est une usine à gaz à maintenir, crois-moi...

  5. #5
    Membre éprouvé
    Inscrit en
    Janvier 2008
    Messages
    1 159
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 1 159
    Par défaut
    j'ai mis ton cote merci encore pour ton aide ca fonctionne mais pas completement

    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
        {
     
     
    		$total_price = 0; //set initial total value
    $total_qty   = [];
    $b           = -1; //var for zebra stripe table 
    foreach ($_SESSION["cart_products"] as $cart_itm)
    {
        //set variables to use in content below
        $product_name     = $cart_itm["product_name"];
        $product_qty      = $cart_itm["product_qty"];
        $product_price    = $cart_itm["product_price"];
        $product_code     = $cart_itm["product_code"];
        $product_finition = $cart_itm["product_finition"];
        $product_color    = $cart_itm["product_color"];
        $price            = $product_price * $product_qty;
        if ( ! isset($total_qty[$product_code])) {
            $total_qty[$product_code] = 0;        
        } 
        $total_qty[$product_code] += $product_qty;
     
        $bg_color = ((++$b % 2) === 1) ? 'odd' : 'even'; //class for zebra stripe 
        echo '<tr class="'.$bg_color.'">';
        echo '<td><input type="text" size="2" maxlength="2" name="product_qty['.$product_code.']" value="'.$product_qty.'" /></td>';
        echo '<td>'.$product_name.'</td>';
        echo '<td>'.$product_price.$currency.'</td>';
        echo '<td>'.$price.$currency.'</td>';
        echo '<td>'.$product_finition.'  '.$product_color.'</td>';
        echo '<td><input type="checkbox" name="remove_code[]" value="'.$product_code.'" /></td>';
        echo '</tr>';
        $total_price += $price;
    }
     
    $shipping_cost_table = 0;
    foreach ($total_qty as $product_code => $qty) {
        if (in_array($product_code, ['table_orphe', 'table-orphe-avec-plexi'], true)) {
            if ($qty <= 2) {
                $shipping_cost_table += 20;
            } elseif ($qty <= 4) {
                $shipping_cost_table += 30;
            } elseif ($qty <= 10) {
                $shipping_cost_table += 60;
            }    
        } elseif (in_array($product_code, ['transat-vague', 'transat-dune', 'transat-ile'], true)) {
            if ($qty <= 2) {
                $shipping_cost_table += 49;
            } elseif ($qty <= 4) {
                $shipping_cost_table += 79;
            }
        }        
    }
    je te donne l'adresse si tu peux m'aider :
    http://piscine-gdinox.com/Checkout-master/view_cart.php

    vois tu quand je met 2 table et 3 transat il affiche 79€ quand j'ai descendu la quantité table il reste à 0€ pour table.

    merci de ton aide.

  6. #6
    Membre éprouvé
    Inscrit en
    Janvier 2008
    Messages
    1 159
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 1 159
    Par défaut
    c'est Table basse Orphée sans plexi qui reste a 0€.

    trouve if (in_array($product_code, ['table-orphe', 'table-orphe-avec-plexi'], true)) {
    corriger le nom est c'est bon je verifie le reste merci

Discussions similaires

  1. [CS3] Comment réaliser calculer le frais de port
    Par hoangeric dans le forum Dreamweaver
    Réponses: 8
    Dernier message: 04/06/2009, 17h05
  2. Comment réaliser calculer le frais de port
    Par hoangeric dans le forum Langage
    Réponses: 2
    Dernier message: 04/06/2009, 13h50
  3. Calcul d'un panier + frais de port différents
    Par vitosss dans le forum Général JavaScript
    Réponses: 0
    Dernier message: 08/05/2009, 16h25
  4. [MySQL] Calcul des frais de port poids/prix d'un caddie
    Par spawns dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 13/01/2009, 15h58
  5. inclure les frais de port dans le panier
    Par osmanSG dans le forum E-Commerce
    Réponses: 0
    Dernier message: 25/08/2008, 19h44

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