Un (petit) calculateur en php

Eléphanteau du PHP | 16 Messages

21 sept. 2008, 15:01

Bonjour,
Je dois créer un petit calculateur en php et je ne sais pas trop par quel bout le prendre pour que ce soit le plus simple possible.
L'idée est la suivante : calculer le cout d'un trajet entre 2 villes.
Par une liste déroulante, on choisit une ville de départ, par exemple Lille, et sur une autre liste on choisit l'arrivée (exemple Paris), en cliquant sur "Calculer", on obtient le tarif.
Les villes seraient classées en 4 zones, ce qui fait qu'il n'y aurait que 4 prix possibles.
QQun a-t-il déjà réfléchi à ce genre de script ?

Merci

Stan

Eléphant du PHP | 169 Messages

21 sept. 2008, 18:23

Salut,



Tu bloques à quel niveau ?

Eléphanteau du PHP | 16 Messages

21 sept. 2008, 19:45

Bonsoir,

J'ai avancé un peu depuis tt à l'heure, voici un bout du script non terminé, il me reste des conditions à écrire :

Code : Tout sélectionner

<form action="#" method="post"> <p> <select name="$depart"> <option value="zone1"> Lille</option> <option value="zone2"> Paris</option> <option value="zone3"> Marseille</option> <option value="zone4"> Bordeaux</option> </select> <select name="$arrive"> <option value="zone1"> Lille</option> <option value="zone2"> Paris</option> <option value="zone3"> Marseille</option> <option value="zone4"> Bordeaux</option> </select> <input value="Valider" type="submit" /> </p> </form> <br /> <?php $depart = $_POST['$depart']; $arrive = $_POST['$arrive']; if($depart == "zone1" and $arrive == "zone1") { echo 'De zone 1 à zone 1 c pas cher.'; } if($depart == "zone1" and $arrive == "zone2") { echo 'De zone 1 à zone 2 : 50 euros'; } if($depart == "zone1" and $arrive == "zone3") { echo 'De zone 1 à zone 3 : 75 euros'; } if($depart == "zone1" and $arrive == "zone4") { echo 'De zone 1 à zone 4 : 100 euros'; } elseif($resultat !='' ) { echo 'Inconnu'; } ?>

Donc tout va bien car je n'ai que 4 zones, soit 16 possibilités... Et je me disais : et comment je fais si je dois travailler avec 500 villes ?

2 problèmes où je bloque :

- La ville sélectionnée ne reste pas dans les déroulants (mais je suppose que la page se recharge pour donner le résultat).
- Je souhaiterais ré-afficher les choix effectués, exemple, le visiteur selectionne Lille et Marseille, il faudrait que les noms des villes réapparaissent dans la réponse, mais comme j'ai déjà donné la valeur "zone" dont je me sers pour le calcul, je ne peux plus le faire...

Merci par avance d'éclairer ma pauvre lanterne

Stan

Mammouth du PHP | 881 Messages

23 sept. 2008, 07:05

Pour ma part, j'opterais pour des valeurs numériques:

Code : Tout sélectionner

<select name="ZoneDepart"> <option value="1"> Lille</option> <option value="2"> Paris</option> <option value="3"> Marseille</option> <option value="4"> Bordeaux</option> </select> <select name="ZoneArrivee"> <option value="1"> Lille</option> <option value="2"> Paris</option> <option value="3"> Marseille</option> <option value="4"> Bordeaux</option> </select>
Ainsi, tu pourrais traiter facilement les coûts en évaluant le nombre de zones traversées:
$Distance = abs($_POST["ZoneArrivve"] - $_POST["ZoneDepart"]);
C'est une piste qui pourrait te permettre de te hasarder dans ton hypothétique système à 50 zones si la tarification fonctionne de cette manière.

Le choix d'abréger la valeur transmise vient du fait que "zone" était répété à chaque fois et perdait, du coup, toute valeur significative.
Soyez artisans de paix

Mammouth du PHP | 881 Messages

23 sept. 2008, 07:07

Pour ma part, j'opterais pour des valeurs numériques:

Code : Tout sélectionner

<select name="ZoneDepart"> <option value="1"> Lille</option> <option value="2"> Paris</option> <option value="3"> Marseille</option> <option value="4"> Bordeaux</option> </select> <select name="ZoneArrivee"> <option value="1"> Lille</option> <option value="2"> Paris</option> <option value="3"> Marseille</option> <option value="4"> Bordeaux</option> </select>
Ainsi, tu pourrais traiter facilement les coûts en évaluant le nombre de zones traversées:
$Distance = abs($_POST["ZoneArrivve"] - $_POST["ZoneDepart"]);
C'est une piste qui pourrait te permettre de te hasarder dans ton hypothétique système à 50 zones si la tarification fonctionne de cette manière.

Le choix d'abréger la valeur transmise vient du fait que "zone" était répété à chaque fois et perdait, du coup, toute valeur significative (quand toutes les fleurs sont belles, c'est la fanée qui attire l'attention; quand elles sont toutes fanées, c'est le bouton qui attire l'oeil).
Soyez artisans de paix