calcul transport

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 : calcul transport

Re: calcul transport

par Ryle » 01 août 2014, 12:22

Modération :
Le multipostage est interdit sur le forum.

Des réponses peuvent être apportées à cette adresse :
php-debutant/calcul-prix-colis-t271720.html

Merci de prendre le temps de lire les règlements.

Re: calcul transport

par ericko » 01 août 2014, 11:50

bonjour,j'ai le même sujet dans mon stage developper un site web d'envoi de colis,mais comment faire si on une formule qui calculent des prix selon les mesures du colis et selon la zone géographique.
Où je peux mettre cette formule? quelqu'un peut m'aider! Merci! Ex: pr un colis de 3kg ,L=20 l=15 h=20 pour le japon(L*l*h)/5000 et compare par le poids reel et on prend le plus grand.et pui si c'est pour aller ds zone 1 c'est 50€ si zone 2 c'est 55€ ainsi de suite. et ca varie selon le les mesures du colis.
Les idées svp,j'avais calculer le prix mais sans tenir compte sur la destination! avec destination j y arrive pas!

par finipe » 13 sept. 2006, 00:39

Ah ben ça fait plaisir ^^

par Chile » 12 sept. 2006, 23:39

:D ca y'est !! tout fonctionne au poil !!
je suis super content ! merci mille fois Finipe :wink:

par finipe » 12 sept. 2006, 23:11

Héhé oui, ce n'est pas surprenant : si ta liste est "blanche", c'est que c'est le nom du pays qui n'est pas correctement affiché. Il faut donc voir dans ton code à quel moment ce nom est censé être affiché, et c'est précisément ici :
echo ">".$LISTE_PAYS['nom']."</option>";
Or il se trouve que tu as oublié quelque chose : ce n'est pas $LISTE_PAYS['nom'] qu'il faut indiquer, mais $LISTE_PAYS[$i]['nom']

Tu as oublié l'index de ton tableau :wink:

par Chile » 12 sept. 2006, 22:20

salut,
ben le seul probleme c'est que la liste deroulante n'affiche rien de visible...
lorsque je "la deroule", c'est blanc ! mais elle tient compte de la valeur du blanc que je vais selectionner :lol: car j'ai fait une variable et je l'affiche pour tester et ca m'affiche bien le nom.
voici mon tableau

Code : Tout sélectionner

$LISTE_PAYS = array( array('nom' => 'Allemagne' , 'valeur' => 'DE'), array('nom' => 'Angleterre' , 'valeur' => 'UK'), array('nom' => 'Belgique' , 'valeur' => 'BE'), array('nom' => 'Etats-Unis' , 'valeur' => 'EU'), array('nom' => 'France' , 'valeur' => 'FR'),
et ma liste deroulante integrée a un formulaire
<form action="panier.php" method="post" name="transport" id="transport">
                              <div align="center">
                                <table width="100%"  border="0" align="center" cellspacing="0">
                                  <tr>
                                    <td width="25%"><div align="center">
									<?php /* Dans cet exemple, je suppose que la liste des pays est stockée 
                                     dans une variable de type tableau à 2 dimensions du nom de 
                                     $LISTE_PAYS, mais tu peux très bien avoir choisi une autre solution... */ 

                            echo "<select name='pays'>"; 
                            for($i=0 ; $i<sizeof($LISTE_PAYS) ; $i++) 
                                { 
                            echo "<option value='".$LISTE_PAYS[$i]['valeur']."'"; 
                            if($_SESSION['pays'] == $LISTE_PAYS[$i]['valeur']) echo "selected"; 
                            echo ">".$LISTE_PAYS['nom']."</option>"; 
                                } 
                            echo "</select>";?>

                             <?php
					  $pais = $_POST['pays'];
					  $zone = $ZONE_PAYS[$pais];
					  $total2=$TARIF_COLIS[$zone][$tranchepoids]*0.8;
 		              $total3=($TARIF_COLIS[$zone][$tranchepoids]*0.8) + $total;
                      
					  $_SESSION['pays']=$pais;//mAj du pays de livraison
					  $_SESSION['zone']=$zone;//mAj de la zone de livraison
                      $_SESSION['total2']=$total2;//mAj du total2 dans la session
					  $_SESSION['total3']=$total3;//mAj du total3 dans la session
                   ?>           
                                    </div></td>
                                    <td width="25%"><div align="center">
                                        <input name="zonepays" type="submit" id="zonepays" value="CALCULER">
merci :?

par finipe » 12 sept. 2006, 18:59

Je comprends pas trop ton problème... Peux-tu mettre les morceaux de code en question ?

par Chile » 12 sept. 2006, 11:20

salut,
désolé, j'ai toujours un ti probleme...
les données dans ma liste de selection ne sont pas visibles !!
par contre elles existent car j'ai fait des test d'affichages de variables en fonction du choix de la selection dans la liste et ca marche. ca me donne par exemple mon cout de transport...
le probleme donc cest que ma liste de selection affiche des données invisibles... :cry:
merci

par finipe » 12 sept. 2006, 00:38

Code : Tout sélectionner

$LISTE_PAYS = array( array('nom' => 'Allemagne' , 'valeur' => 'DE'); array('nom' => 'Angleterre' , 'valeur' => 'UK'); array('nom' => 'Belgique' , 'valeur' => 'BE'); array('nom' => 'Etats-Unis' , 'valeur' => 'US'); array('nom' => 'France' , 'valeur' => 'FR'); etc... array('nom' => 'Zimbabwé' , 'valeur' => 'ZW'); );
Avec ça, ça devrait aller normalement.

Ainsi, si on décompose ta variable $LISTE_PAYS, on trouve :

$LISTE_PAYS[0] --> correspond à : array('nom' => 'Allemagne' , 'valeur' => 'DE')
>> $LISTE_PAYS[0]['nom'] --> correspond à : 'Allemagne'
>> $LISTE_PAYS[0][valeur] --> correspond à : 'DE'

$LISTE_PAYS[1] --> correspond à : array('nom' => 'Angleterre' , 'valeur' => 'UK')
>> $LISTE_PAYS[1]['nom'] --> correspond à : 'Angleterre'
>> $LISTE_PAYS[1][valeur] --> correspond à : 'UK'

...et ainsi de suite, jusqu'à l'index $i :

$LISTE_PAYS[$i] --> correspond à : array('nom' => 'Zimbabwé' , 'valeur' => 'ZW')
>> $LISTE_PAYS[$i]['nom'] --> correspond à : 'Zimbabwé'
>> $LISTE_PAYS[$i][valeur] --> correspond à : 'ZW'

C'est là que la boucle for se révèle très pratique pour construire ta liste déroulante, car tu peux facilement énumérer l'index de ton tableau. Et pour récupérer le nombre d'éléments de ton tableau, il suffit donc d'utiliser sizeof($LISTE_PAYS).

Voilà : )

Edition après relecture : j'ai vu qu'avant je t'avais suggéré de faire une variable $ZONE_PAYS donnant la zone géographique tarifaire d'un pays selon son code... Il serait judicieux d'inclure cette information dans ta variable $LISTE PAYS... Ça rajouterait simplement, pour chaque pays, une 3ème valeur en plus de 'nom' et 'valeur', qui se nommerait 'zone' par exemple.

Code : Tout sélectionner

$LISTE_PAYS = array( array('nom' => 'Allemagne' , 'valeur' => 'DE' , 'zone' => 1); array('nom' => 'Angleterre' , 'valeur' => 'UK' , 'zone' => 1); array('nom' => 'Belgique' , 'valeur' => 'BE' , 'zone' => 1); array('nom' => 'Etats-Unis' , 'valeur' => 'US' , 'zone' => 2); array('nom' => 'France' , 'valeur' => 'FR' , 'zone' => 1); etc... array('nom' => 'Zimbabwé' , 'valeur' => 'ZW' , 'zone' => 3); );
(encore une fois, les zones indiquées sont fantaisistes)

par Chile » 11 sept. 2006, 22:57

salut Finipe,
encore merci :wink:
voila, j'ai un peu de mal avec le tableau 2 dimensions,
alors j'ai fouiné sur le forum, j'ai essayé pas mal de truc mais ca marche pas... :cry:
voici mon tableau

Code : Tout sélectionner

$LISTE_PAYS = array ( array ("nom"=>"", "valeur"=>"") ); //c'est un array de array (tableau dans un autre) ou tableau à deux dimensions //remplir la première ligne $LISTE_PAYS[0]["nom"] = "Angleterre"; $LISTE_PAYS[0]["valeur"] = "Angleterre"; //remplir la deuxième ligne $LISTE_PAYS[1]["nom"] = "Argentine"; $LISTE_PAYS[1]["valeur"] = "Argentine";
est-ce que ca vient de la ?
en fait ma liste deroulante reconnait bien qu'il y a deux etages, mais n'affiche rien d'autre...
merci

par finipe » 10 sept. 2006, 21:44

Si tu veux garder la valeur de ta variable sur plus d'une page, il faut que tu stockes l'information dans une variable de session.

Donc quand tu postes ton formulaire, lors du traitement, tu mets un truc du genre :

Code : Tout sélectionner

$_POST['pays'] = $_SESSION['pays'];
Puis, quand dans 1, 2 ou 10 pages plus loin tu dois ressortir ta liste déroulante avec le pays choisi déjà sélectionné, alors tu "construis" ton select comme ceci :
/* Dans cet exemple, je suppose que la liste des pays est stockée
dans une variable de type tableau à 2 dimensions du nom de
$LISTE_PAYS, mais tu peux très bien avoir choisi une autre solution... */

echo "<select name='pays'>";
for($i=0 ; $i<sizeof($LISTE_PAYS) ; $i++)
{
    echo "<option value='".$LISTE_PAYS[$i]['valeur']."'";
    if($_SESSION['pays'] == $LISTE_PAYS[$i]['nom']) echo " selected";
    echo ">".$LISTE_PAYS['nom']."</option>";
}
echo "</select>";
En gros tu lances une boucle qui construit toutes les options de ton champ select, et à chaque itération, tu demandes "Si la variable de session est égale à la valeur de l'option pour cette itération, alors j'ajoute 'selected' dans cette option."

Voilà !

par Chile » 10 sept. 2006, 16:50

merci...
j'y suis presque ! dernier petit probleme,
conserver la liste de menu deroulant sur le pays choisi lorsque le visiteur
navigue sur le site et revient sur la page.
Vu que je mémorise le choix dans la variable $pays, j'ai essayé sur deux pays de mon menu comme ceci :

Code : Tout sélectionner

<select name="zone" id="zone"> <option value="Argentine"<?php if ($pays=Argentine) echo "SELECTED"; ?>>Argentine</option> <option value="Canada"<?php if ($pays=Canada) echo "SELECTED"; ?>>Canada</option> <option value="Chine">Chine</option> <option value="Europe">Espagne</option> <option value="Etats Unis">Etats Unis</option> <option value="France">France</option> <option value="Italie">Italie</option> <option selected>Choisissez</option> </select>
mais ca ne le garde pas en position !!!

par finipe » 10 sept. 2006, 11:34

Tu peux réutiliser le principe du tableau. Moi j'ai opté pour une table sql, mais le tableau pourrait tout autant faire l'affaire. Ça donnerait qqchose dans ce goût-là :

Code : Tout sélectionner

$ZONE_PAYS = array( 'FR' => 1, 'US' => 2, 'BE' => 1, 'DE' => 1, 'UK' => 1, 'CA' => 2 );
(les zones indiquées dans l'exemple sont sans doute fausses, je ne suis pas chez moi 8))

Etc... il faudrait assigner à chaque pays, selon son code ISO3166, la zone tarifaire correspondant : ce sera sans doute un peu fastidieux, mais une fois que c'est fait, ça n'a pas de raison de changer par la suite.

Enfin, pour récupérer la valeur des Etats-Unis par exemple, tu passes par $ZONE_PAYS['US']. Et donc dans un traitement automatisé, si tu as affiché le pays dans un champ de type <select>, tu retrouveras ta valeur en utilisant quelque chose du genre :
$zone = $ZONE_PAYS['".$_POST['zone']."']
...ceci dans le cas où ton formulaire a été posté bien sûr.

Voilà voilà ! : )

par Chile » 09 sept. 2006, 23:51

:) eh bien après une qlqs heures de recherche, j'ai réussi à écrire un code qui me sort une variable avec la tranche de poids ou je me trouve !!

En ce qui concerne la zone géographique suivant le pays...je coince !!

J'ai rangé tout ça dans un menu deroulant qui se trouve dans un champ formulaire :

Code : Tout sélectionner

<form action="panier.php" method="get" name="transport" id="transport"> <div align="center"> <table width="100%" border="0" align="center" cellspacing="0"> <tr> <td width="25%"><div align="center"> <select name="zone" id="zone"> <option value="AMS">Argentine</option> <option value="AMN">Canada</option> <option value="ASI">Chine</option> <option value="EUR">Espagne</option> <option value="AMN">Etats Unis</option> <option value="EUR" selected>France</option> <option value="EUR">Italie</option> <option>Choisissez</option> </select> </div></td> <td width="25%"><div align="center"> <input name="zonepays" type="submit" id="zonepays" value="CALCULER">
et je voudrais apres selection d'un pays memoriser dans une variable la valeur en fonction du pays (EUR ou AMN...) et conserver aussi ce choix visible dans ce menu deroulant...

voila, si une bonne ame veut bien me filer un coup de main...merci :)

par Chile » 09 sept. 2006, 15:57

salut Finipe,
merci ! c'est exactement ce que je cherche.
J'ai intégré ton tableau à ma page avec les tarfis de mon transporteur.
Par contre vu que je ne manipule pas le php suffisament, j'ai un peu de mal pour ecrire les lignes de code.
En ce qui concerne les pays je compte utliser un menu deroulant en attribuant un code dans valeur en fonction de leurs zones.
Et j'imagine que pour le poids il faut que j'ecrive des lignes code pour faire une comparaison entre le poids déterminé de mon colis et determiner dans tranche il se trouve !?
Voila si tu peux encore m'aider sur ça...
merci