Je souhaiterai afficher dans la dernière colonne du tableau de ma page (cf : Tableau dans la Page Web), la distance entre deux villes dans une case. Cette valeur que je veux afficher existe déjà dans la base. Cependant, les villes et la distance font parties de deux tables différentes : les villes sont toutes enregistrées dans la Table Villes (une partie de la table en image : cf Structure de la Table Distance), et les distances dans la table distance (cf : Structure de la Table Distance).
J'ai donc fais des INNER JOIN, tout se passe bien pour l'affichage des villes, mais pour la distance en kilomètre, je ne sais pas comment faire ?
Mon code pour le tableau et mes fonctions se trouvent ci-dessous.
Sachez que je ne peux pas modifier ma BDD car elle m'est imposée par mon professeur.
Pour info, il y a une jointure en Ville_Id -> Dist_NoVille1 et Ville_Id -> Dist_NoVille2. Et que pour l'instant, je mets la valeur de la colonne "Distance"
Mon code pour ma page (cf : Code Fonctions pour Afficher les villes dans le Tableau) et le code pour les fonctions que j'utilise (cf : Fonctions pour Afficher les villes dans le Tableau).
Comment je pourrai m'y prendre ?
Merci de votre aide
RESSOURCES
Table Distance
CREATE TABLE IF NOT EXISTS `distance` (
`Dist_NoVille1` int(11) NOT NULL,
`Dist_NoVille2` int(11) NOT NULL,
`Dist_Km` int(11) NOT NULL,
PRIMARY KEY (`Dist_NoVille1`,`Dist_NoVille2`),
KEY `Dist_NoVille1` (`Dist_NoVille1`,`Dist_NoVille2`),
KEY `Dist_NoVille2` (`Dist_NoVille2`)
)
Table Villes
CREATE TABLE IF NOT EXISTS `ville` (
`Ville_Id` int(11) NOT NULL AUTO_INCREMENT,
`Ville_CP` varchar(5) NOT NULL,
`Ville_Nom` varchar(50) NOT NULL,
`Ville_Population` int(11) NOT NULL,
`Ville_Cat` int(1) NOT NULL,
PRIMARY KEY (`Ville_Id`)
)
Tableau dans la Page Web
<?php
// Afficher De
function DistanceVillesA($connexion){
try{
$req = $connexion->prepare("SELECT Ville_Id, Ville_Nom FROM Ville INNER JOIN distance ON ville.Ville_Id = distance.Dist_NoVille1");
$req->execute();
return $req;
}
catch(Exception $e){
die(print("Erreur : " . $e->getMessage()));
}
}
// Afficher A
function DistanceVillesB($connexion){
try{
$req = $connexion->prepare("SELECT Ville_Id, Ville_Nom FROM Ville INNER JOIN distance ON ville.Ville_Id = distance.Dist_NoVille2");
$req->execute();
return $req;
}
catch(Exception $e){
die(print("Erreur : " . $e->getMessage()));
}
}
?>
Code Tableau Parametrage.php
// Récup Villes pour Tableau
$req5 = DistanceVillesA($connexion);
$req6 = DistanceVillesB($connexion);
// Tableau pour Afficher Valeurs
<table border="1" cellpadding="10">
<tr>
<th>De</th>
<th>A</th>
<th>Distance</th>
</tr>
<?php
while(($donnees = $req5->fetch()) AND ($donnees2 = $req6->fetch())){
?>
<tr>
<td align="center"><?php print($donnees['Ville_Nom']);?></td>
<td align="center"><?php print($donnees2['Ville_Nom']);?></td>
<td align="center"><?php print(0);?></td>
</tr>
<?php
}
?>
Fonctions PHP
// Afficher De
function DistanceVillesA($connexion){
try{
$req = $connexion->prepare("SELECT Ville_Id, Ville_Nom FROM Ville INNER JOIN distance ON ville.Ville_Id = distance.Dist_NoVille1");
$req->execute();
return $req;
}
catch(Exception $e){
die(print("Erreur : " . $e->getMessage()));
}
}
// Afficher A
function DistanceVillesB($connexion){
try{
$req = $connexion->prepare("SELECT Ville_Id, Ville_Nom FROM Ville INNER JOIN distance ON ville.Ville_Id = distance.Dist_NoVille2");
$req->execute();
return $req;
}
catch(Exception $e){
die(print("Erreur : " . $e->getMessage()));
}
}