<?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>
|
|
|
Invité
23 Déc 2008 à 23:30Pas 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.
Forty
11 Déc 2008 à 14:25Pour 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
Invité
11 Déc 2008 à 14:13je 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.