liste déroulante + calcul

augustin

augustin Le 6 septembre 2016 à 19:36 (Édité le 25 janvier 2019 à 17:52)

Bonjour,

Etant débutant en PHP j'essaye d'apprendre chaque semaine un petit truc.

Ici j'aimerais avoir 2 listes déroulantes:

la première liste déroulante s'appelle domicile
il y a 3 villes (melin, wavre, namur)

dans la second liste déroulante qui se nomme gare
il y a aussi 3 villes (bruxelles, liège, charleroi)

ensuite il y a un bouton calculer et résultat.

Je voudrais que lorsqu'un utilisateur par exemple sélectionne melin (domicile) et bruxelles (gare)
dans résultat il y a la somme de 20 € qui s'affiche

lorsque l'utilisateur sélectionne wavre (domicile) et bruxelles (gare) il y a la somme de 40 €

pour namur (domicile) et bruxelles (gare) la somme doit être de 10 €

Avez-vous une idée ???


augustin

augustin Le 6 septembre 2016 à 19:37 (Édité le 6 septembre 2016 à 19:38)

Voici mon code, est-ce que quelqu'un peut juste m'expliquer comment je pourrais faire le calcul entre melin --> bruxelles , on va dire que ça fait 20 euros...

Merci
<form method="post" action="">
    <fieldset>
        <legend>Formulaire</legend>
        <label for="domicile">Domicile: </label>
        <select id="domicile" name="domicile">
            <option value="1">1342-Melin</option>
            <option value="2">1300-Wavre</option>
            <option value="3">7777-Namur</option>
        </select>
        <br />
        <label for="gare">Gare: </label>
        <select id="gare" name="gare">
            <option value="0" selected="selected">Bruxelles</option>
            <option value="1">Liege</option>
            <option value="10">Charleroi</option>
        </select>
        <br />
        <input type="submit" value="Calculer" />
    </fieldset>
</form>

<div>
    <label for="resultat">Résultat : </label>
    <input id="resultat" type="text" readonly="readonly" />
</div>

<?php

if(isset($_POST['domicile']) AND isset($_POST['choix']) AND isset($_POST['gare']))
{
    
$domicile = ($_POST['domicile']);
$gare = ($_POST['gare']);




?>
augustin

augustin Le 7 septembre 2016 à 12:59 (Édité le 7 septembre 2016 à 16:48)

J'y suis arrivé... Mais pas tout seul mais j'y suis arrivé... 😊

<form method="post" action="">
    <fieldset>
        <legend>Formulaire</legend>
        <label for="domicile">Domicile: </label>
        <select id="domicile" name="domicile">
            <option value="1">1342-Melin</option>
            <option value="2">1300-Wavre</option>
            <option value="3">7777-Namur</option>
        </select>
        <br />
        <label for="gare">Gare: </label>
        <select id="gare" name="gare">
            <option value="1" selected="selected">Bruxelles</option>
            <option value="2">Liege</option>
            <option value="3">Charleroi</option>
        </select>
        <br />
        <input type="submit" value="Calculer" />
    </fieldset>


 
 </form>
<?php
 
 
if(isset($_POST['domicile']) && isset($_POST['gare']))
{
 
    $arTarifs = array(
        1 => array( //melin
            
            1=>20,
            2=>75,
            3=>40,
        ),
        
        2 => array( //wavre
            1=>4,
            2=>12,
            3=>67
        ),
        3  => array(
            0=>10,
            1=>54,
            10=>89
        )
    );
 
    if (isset($arTarifs[$_POST['domicile']][$_POST['gare']])) {
        echo $arTarifs[$_POST['domicile']][$_POST['gare']] . '€'; 
     }
    
    else {
       echo 'aucun tarif pour ce trajet';
    }
 
    }
 
 
?>
TheOldNoob

TheOldNoob Le 7 septembre 2016 à 15:25

Salut l'ami,
Je viens seulment de voir ton message.
Cool que tu y soit arrivé. C'est le meilleur des apprentissage 😉
augustin

augustin Le 7 septembre 2016 à 16:52

Bonjour TheHoldNoob,

Par contre, j'ai une petite question...
J'ai donc deux listes déroulantes avec mes villes...
domicile (1er liste déroulante), gare (2ème liste déroulante)

Quand je sélectionne Melin --> Bruxelles il m'affiche bien la somme de 20 euros
Quand je sélectionne Melin -->Liège, il m'affiche bien la somme de 75 euros
cependant ma liste déroulante ne reste pas sur Melin --> Liège mais repasse sur  Melin-Bruxelles, ça m'embête un peu... 
est-ce que je dois créer une session ???
TheOldNoob

TheOldNoob Le 7 septembre 2016 à 19:07

C'est normal, il reprend automatiquement les premières valeur.

Par contre, ton php doit être avant ton html, comme ça :

<?php
if(isset($_POST['domicile']) && isset($_POST['gare']))
{
     $arTarifs = array(
        1 => array( //melin
            
            1=>20,
            2=>75,
            3=>40,
        ),
        
        2 => array( //wavre
            1=>4,
            2=>12,
            3=>67
        ),

        3  => array(
            0=>10,
            1=>54,
            10=>89
        )
    );
}
 
?>
<form method="post" action="">
    <fieldset>
        <legend>Formulaire</legend>
        <label for="domicile">Domicile: </label>
        <select id="domicile" name="domicile">
            <option value="1">1342-Melin</option>
            <option value="2">1300-Wavre</option>
            <option value="3">7777-Namur</option>
        </select>
        <br />
        <label for="gare">Gare: </label>
        <select id="gare" name="gare">
            <option value="1" >Bruxelles</option>
            <option value="2">Liege</option>
            <option value="3">Charleroi</option>
        </select>
        <br />
        <input type="submit" value="Calculer" />
    </fieldset> 
 </form>

 <div style="font-size: 38rem; color: red;">
   <?php 
     if (isset($arTarifs[$_POST['domicile']][$_POST['gare']])) {
        echo $arTarifs[$_POST['domicile']][$_POST['gare']] . '€'; 
     }
    
    else {
       echo 'aucun tarif pour ce trajet';
    }
    ?>
 </div>
augustin

augustin Le 7 septembre 2016 à 22:46

Bonsoir,

On ne sait pas faire quelques choses pour qu'ils ne reprennent pas automatiquement les premières valeurs ??

ps: merci pour tes modifs 😜
augustin

augustin Le 8 septembre 2016 à 21:41

Bonsoir,

J'y suis arrivé, ça doit pas être beau à voir pour vos yeux... 😄

<?php
if(isset($_POST['domicile']) && isset($_POST['gare']))
{
     $arTarifs = array(
        1 => array( //melin
            
            1=>20,
            2=>75,
            3=>40,
        ),
        
        2 => array( //wavre
            1=>40,
            2=>12,
            3=>67
        ),

        3  => array(
            1=>54,
            2=>12,
            3=>89
        ),
        
        
        4  => array(
            1=>12,
            2=>24,
            3=>29
        )
    );
}
 
?>
<form method="post" action="">
    <fieldset>
        <legend>Formulaire</legend>
        <label for="domicile">Domicile: </label>
        <select id="domicile" name="domicile">
        
            <option value="1"<?php if(!empty($_POST['domicile']) && $_POST['domicile'] == 1) echo ' selected="selected"'?>>1342-Melin</option>
               <option value="2"<?php if(!empty($_POST['domicile']) && $_POST['domicile'] == 2 ) echo ' selected="selected"'?>>Wavre</option>
            <option value="3"<?php if(!empty($_POST['domicile']) && $_POST['domicile'] == 3) echo ' selected="selected"'?>>Namur</option>
        </select>
        <br />
        <label for="gare">Gare: </label>
        <select id="gare" name="gare">
             <option value="1"<?php if(!empty($_POST['gare']) && $_POST['gare'] == 1) echo ' selected="selected"'?>>Bruxelles</option>
             <option value="2"<?php if(!empty($_POST['gare']) && $_POST['gare'] == 2) echo ' selected="selected"'?>>Liege</option>
              <option value="3"<?php if(!empty($_POST['gare']) && $_POST['gare'] == 3) echo ' selected="selected"'?>>Namur</option>
        </select>
        <br />
        <input type="submit" value="Calculer" />
    </fieldset> 
 </form>

 <div style="font-size: 38rem; color: red;">
   <?php 
     if (isset($arTarifs[$_POST['domicile']][$_POST['gare']])) {
        echo $arTarifs[$_POST['domicile']][$_POST['gare']] . '€'; 
     }
    
    else {
       echo 'aucun tarif pour ce trajet';
    }
    ?>
 </div>
Vous devez être connecté pour poster une réponse. Se connecter ou Créer un compte