Affiche la distance entres 2 villes via un array associatif

  Information

Formulaire qui prend en compte 2 villes et qui calcul la distance entre ces 2 villes. Possibilité d'ajouter des distances. Ce bout de code est une page PHP native: Démonstration

Il répond à un exercice apparemment assez classique : Afficher la distance entre deux villes qui est stockée dans un tableau multidimentionel.

Voir la banque de données : Distance entre grandes villes du monde

  code source classé dans  Tableaux - Array

 
 01    
 02    
 03    
 04    
 05    
 06    
 07    
 08    
 09    
 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    
                               
<?php
/*---------------------------------------------------------------*/
/*
    Titre : Affiche la distance entres 2 villes via un array associatif                                                   
                                                                                                                          
    URL   : https://phpsources.net/code_s.php?id=474
    Auteur           : poujolrost-mathias                                                                                 
    Date édition     : 10 Déc 2008                                                                                        
    Date mise à jour : 09 Sept 2019                                                                                      
    Rapport de la maj:                                                                                                    
    - fonctionnement du code vérifié                                                                                    
*/
/*---------------------------------------------------------------*/?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Afficher la distance entres 2 villes d'après un array associatif</title>
<style type="text/css" media="all">
.erreur {
    background: red; 
    color: white;
}
.distance {
    background: green; 
    color: white;
}
</style>
</head>

<body> 

<?php
// pour éviter les affichage de "Notice..." (de simples remarques)
error_reporting(E_ALL);

$distances array(
 "Lille" => array("Paris" => 221"Nice" => 1154"Brest" => 728"Lyon" => 685)
,
 "Paris" => array("Nice" => 929"Brest" => 595"Lyon" => 460),
 "Nice" => array("Brest" => 1068"Lyon" => 472),
 "Brest" => array("Lyon" => 1015)
                );
                
/* si le formulaire a effectivement été envoyé */
if ($_POST)
{
    /* on créé un tableau qui contiendra les erreurs si il y en a */
    $erreurs array();
    
    /* on récupère les valeurs */
    $depart $_POST["depart"];
    $arrivee $_POST["arrivee"];
if ($depart == $arrivee) {$erreurs[] = 
"Vous devez choisir 2 villes différentes!";}
    
    /* on va détermine la distance */
    else // quand $depart != $arrivee
    {    
    
/* si $distances[$depart][$arrivee] n'est pas pas vide = une valeur existe */
        if(!empty($distances[$depart][$arrivee])) 
        {
            $distance $distances[$depart][$arrivee];
        }
// quand $distances[$depart][$arrivee] n'existe pas,
//il faut lire le tableau dans l'autre sens
               else 
        {
            $distance $distances[$arrivee][$depart];
        }
    } 
// FIN du  if ($_POST) 
?>

<h1>Afficher la distance séparant 2 villes d'après un tableau
 triangulaire</h1>

<form method="post" action="">

<?php 
if (!empty($erreurs)) // si il y a des erreurs, on les affiche
{
    echo "<div class='erreur'>
    <p><strong>Erreurs</strong> :</p>
    <ul>";
    foreach ($erreurs as $valeur)
    {
        echo "<li>$valeur</li>n";
    }
echo "</ul>
</div>n";
}
?>
    <p><label for="f_depart">Choisissez une ville de départ</label> 
    <select name="depart" id="f_depart">
        <option value="Brest">Brest</option>
        <option value="Lille">Lille</option>
        <option value="Lyon">Lyon</option>
        <option value="Nice">Nice</option>
        <option value="Paris">Paris</option>
    </select></p>
    
    <p><label for="f_arrivee">Choisissez une ville d'arrivée</label> 
    <select name="arrivee" id="f_arrivee">
        <option value="Brest">Brest</option>
        <option value="Lille">Lille</option>
        <option value="Lyon">Lyon</option>
        <option value="Nice">Nice</option>
        <option value="Paris">Paris</option>
    </select></p>
    
    <p><input type="submit" value="Afficher la distance entre les deux villes"
 /></p>
</form>

<?php
// si le formulaire a été envoyé et qu'il n'y a pas d'erreurs 
if ($_POST && empty($erreurs)) 
{
    echo "<p class='distance'>
La distance entre $depart et $arrivee vaut <strong>$distance</strong> km.</p>";


?>

</body>
</html>

          Fonctions du code - Doc officielle PHP

   php.net   Description Versions PHP OUTIL
   array Crée un tableau PHP 4, PHP 5, PHP 7
   echo Affiche une chaîne de caractères PHP 4, PHP 5, PHP 7
   empty Détermine si une variable contient une valeur non nulle PHP 4, PHP 5, PHP 7
   error_reporting Fixe le niveau de rapport d'erreurs PHP PHP 4, PHP 5, PHP 7

  Autres snippets qui pourraient vous intéressez


Repérer la présence de doublons dans un tableau associatif (array) - PHP Sources

Compatibilité : PHP 5, PHP 7

Un doublon est un élément présent en plusieurs exemplaires identiques (au moins 2). La fonction native array_unique(array $tableau) supprime les

Afficher un ARRAY sur plusieurs colonnes

Compatibilité : PHP 5, PHP 7

Code qui permet d'afficher les datas d'un ARRAY sur le nombre de colonne que vous choisissez avec des balises DIV.

Décalage horaires de 470 villes dans le monde - BDD PHP

Compatibilité : PHP 5, PHP 7

Affiche les décalages horaires pour 470 villes dans le monde listés dans un tableau PHP.


  • Merci de signaler tout problème rencontré avec ce code

Nous vous encourageons à contribuer à l'utilisation de PHP en ajoutant vos remarques

[3]

  • avatar

    Invité

    11 Déc 2008 à 14:13

    je confirme ce que dit KOogar, c'est sympa avec 5 villes, mais imagine avec ne serait-ce qu'une petite centaine.
    ça devient nettement plus difficile à gérer, à tester, et à maintenir.
    Par contre un bon exercice serait de calculer la distance entre différentes villes par rapport à leurs coordonnées GPS.

  • avatar

    Forty

    11 Déc 2008 à 14:25

    Pour calculer les distances entre deux villes à partir des coordonnées GPS il y a ce script : Distance en mètre entre deux points avec coordonnées GPS

  • avatar

    Invité

    23 Déc 2008 à 23:30

    Pas de souci ; je ne faisais que répondre à un exo scolaire, sans grand intérêt autre qu'un petit travail sur les arrays à deux dimensions.

Suivez PHP Sources sur Twitter !

PHP débutant et initié 50 Tutoriel

Présentation de PHP

  Derniers scripts PHP

SPIP 3.2.5

logo SPIP
Langue langue fr
Date  hier
Taille 11 Mo
Catégorie CMS

ZenTao 11.6.2

logo ZenTao
Langue langue fr
Date 16 Sept
Taille 7 Mo
Catégorie Divers

EspoCRM 5.6.13

logo EspoCRM
Langue langue us
Date 13 Sept
Taille 40 Mo
Catégorie CRM

PhpList 3.4.6

logo phpList
Langue langue us
Date 12 Sept
Taille 28 Mo
Catégorie Email-Emailing
avatar

Poujolrost-mathias

  10 Déc 2008

  SOURCE   Télécharger

Information sur les mises à jour

Dernière mise à jour :

    09 Sept 2019
    fonctionnement du code vérifié

9 516 Vues
Compatibilité
PHP 5 et 7+