Afficher la distance entres 2 villes d'après un array associatif

10 Déc 2008  

 Afficher la distance entres 2 villes d'après un array associatif

Ce bout de code est en fait une page PHP autonome.

Démonstration

Elle répond à un exercice apparemment assez classique : afficher la distance entre deux villes, qui est stockée dans un tableau associatifs d'arrays.
poujolrost-mathias 10 Déc 2008
# Catégorie Compatibilité Nombre de vues Site Archive
   Tableaux PHP 4, PHP 5, PHP 7 9 300  

       Code Source PHP


 
 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    
                               
<?php
/**************************************************************************************/
/*
     Titre  : Afficher la distance entres 2 villes d'après un array associatif                                            
                                                                                                                          
     URL    :  
     http://phpsources.org/code/php/tableaux/474_afficher-la-distance-entres-2-villes-d-apres-un-array-associatif
     Auteur         : poujolrost-mathias                                                                                  
     Date edition   : 10 Déc 2008                                                                                         
*/
/**************************************************************************************/
?>
<!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&eacute;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&eacute;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>

...  Manuel PHP - Fonctions du code source

   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


  • L'ajout de commentaire est libre et ne demande pas d'inscription,
  •   invité

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

[4]

  • ...

    KOogar

    11 Déc 2008 à 08:24

    Sans vouloir de froisser on peut faire la même chose sans avoir à mémoriser les distances avec l'API de google map : API google map: http://code.google.com/intl/fr/apis/maps/documentation/reference.html

  • ...

    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.

  • ...

    Forty

    11 Déc 2008 à 14:25

    Pour calculer les distances entre deux villes à partir des coordonnées GPS il y a ce script : http://www.phpsources.org/scripts459-PHP.htm

  • ...

    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.