Vous êtes ici Codes PHP et MySQL > Tableaux > Afficher la distance entres 2 villes d'après un...

 

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
Site de l'auteur voir
[14] sources en PHP voir
Code vu 8807 fois
Enregistré le 10 Déc 2008
  • Digg ce code sur digg.com
  • Bookmark ce code sur del.icio.us
  • Bookmark ce code sur Google
  • Bookmark ce code sur Yahoo
  • Ajoute Afficher la distance entres 2 villes d'après un array associatif
  • Partage ce code sur Facebook
 
 
 
 

Code Source


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.
132.
 
<?php
/******************************************************************************/
/*                                                                            */
/*                       __        ____                                       */
/*                 ___  / /  ___  / __/__  __ _____________ ___               */
/*                / _ \/ _ \/ _ \_\ \/ _ \/ // / __/ __/ -_|_-<               */
/*               / .__/_//_/ .__/___/\___/\_,_/_/  \__/\__/___/               */
/*              /_/       /_/                                                 */
/*                                                                            */
/*                                                                            */
/******************************************************************************/
/*                                                                            */
/* Titre          : Afficher la distance entres 2 villes d'après un array...  */
/*                                                                            */
/* URL            : http://www.phpsources.org/scripts474-PHP.htm              */
/* Auteur         : poujolrost-mathias                                        */
/* Date édition   : 10 Déc 2008                                               */
/* Website auteur : http://site.mathiaspoujolrost.net/competences/            */
/*                                                                            */
/******************************************************************************/
?>
<!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>
 

Fonctions du code

: Fixe le niveau de rapport d'erreurs PHP - (PHP 4, PHP 5)
: Crée un tableau - (PHP 4, PHP 5)
: Détermine si une variable contient une valeur non nulle - (PHP 4, PHP 5)
: Affiche une chaîne de caractères - (PHP 4, PHP 5)
Commentaires
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
 
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. smile
 
Pour calculer les distances entre deux villes à partir des coordonnées GPS il y a ce script : http://www.phpsources.org/scripts459-PHP.htmwink
 
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.
 
Ajouter un commentaire
Code de sécurité

Attention: Les champs marqués d'une étoile * sont obligatoires
 

Connexion

 
 

Tableaux

 
 

PHP

 
 
        Publicité