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, PHP 8
   echo Affiche une chaîne de caractères PHP 4, PHP 5, PHP 7, PHP 8
   empty Détermine si une variable contient une valeur non nulle PHP 4, PHP 5, PHP 7, PHP 8
   error_reporting Fixe le niveau de rapport d'erreurs PHP PHP 4, PHP 5, PHP 7, PHP 8

   Dites merci aux auteurs pour leurs travail, ça ne coûte rien et ça fait toujours plaisir wink

[3]

  • 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.

  • 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é

    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.


 Autres snippets qui pourraient vous intéressez

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.

Affiche les doublons d'un tableau

Compatibilité : PHP 5, PHP 7

Si tu veux Voir quel sont les Doublons qu'il y a dans un tableau associatif alors tu aimes ce code!!

Convertisseur de fichiers XML en Array via PHP

Compatibilité : PHP 5, PHP 7

Classe de parsing xml permettant de convertir l'arborescence d'un fichier XML en collection (Array à plusieurs dimensions), avec SimpleXML.

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.

Distances entre grandes villes du monde - BDD PHP

Compatibilité : PHP 5, PHP 7

Ce code permet de calculer la distance à vol d'oiseau entre 2 grandes villes du monde. Datas listés dans 1 tableau

Présentation de PHP

PHP débutant et initié 50 Tutoriel

Présentation de MySQL

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é

11 747 Vues
Compatibilité
PHP 5, 7 et 8+