<!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;
padding: 1ex;
}
.distance {
background: green;
color: white;
padding: 1ex;
}
</style>
</head>
<body>
<?php
error_reporting(E_ALL); // pour éviter les affichage de "Notice..." (de simples remarques)
if(isset($_GET['source'])) // petit bout de code trouvé sur le siteduzero.com
{
show_source(__FILE__);
exit;
}
$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 deux 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];
}
else // quand $distances[$depart][$arrivee] n'existe pas, il faut lire le tableau dans l'autre sens
{
$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
if ($_POST && empty($erreurs)) // si le formulaire a été envoyé et qu'il n'y a pas d'erreurs
{
echo "<p class='distance'>La distance entre $depart et $arrivee vaut <strong>$distance</strong> km.</p>";
}
?>
<p><a href="?source">Afficher le code source PHP</a>. <a href="http://www.phpsources.org/scripts-poujolrost-mathias-6488-PHP.htm">Mes autres bouts de codes PHP/MySQL</a>.</p>
</body>
</html>