PHP|Débutant :: Forums

Advertisement

Besoin d'aide ? N'hésitez pas, mais respectez les règles

Vous n'êtes pas identifié(e).

#1 13-03-2019 11:48:47

cyci60
Membre
Inscription : 13-03-2019
Messages : 2

LA COMMANDE INNER JOIN

Bonjour, j'ai une table villes et une autre pays. La jointure ne ce fait pas. Besoin d'aide. Merci d'avance.

villes.php

<?php

$mysqli = new mysqli('localhost', 'root', '', 'exercice_projet_villes');
$mysqli->set_charset("utf8");

?>

<?php

$result = $mysqli->query('SELECT ville_id, ville_nom FROM villes');

while ($row = $result->fetch_array()) {

    $villes[$row['ville_id']] = $row['ville_nom'];

}

$result = $mysqli->query('SELECT pays.pays_id, pays_nom FROM pays INNER JOIN villes
                          WHERE pays.pays_id = villes.pays_id GROUP BY pays_nom ORDER BY pays_nom');

while ($row = $result->fetch_array()) {

   $pays_liste[$row['pays_id']] = $row['pays_nom'];


echo '<pre>';
print_r($pays_liste);
echo '</pre>';

}

?>

<ul>

<?php

     if (!empty($villes)) {

        foreach ($villes as $id => $ville) : ?>

        <li><a href="ville.php?id=<?php echo $id; ?>"><?php echo $ville; ?></a></li>

        <?php endforeach ?>

     <?php } ?>

</ul>

<ul>
   <?php

   if (!empty($pays_liste)) {

      foreach ($pays_liste as $id => $pays) : ?>

      <li><a href="pays.php?id=<?php echo $id; ?>"><?php echo $pays; ?></a></li>

      <?php endforeach ?>

   <?php } ?>
   
</ul>

<?php

$result->free();
$mysqli->close();

?>

pays.php

<?php require('includes/inc-connexion.php'); ?>

<?php

$pays_id = $_GET['id'];

$result = $mysqli->query('SELECT pays_nom, ville_nom, ville_id FROM pays INNER JOIN villes
                          WHERE villes.pays_id = pays.pays_id AND pays.pays_id = ' . $pays_id);

while ($row = $result->fetch_array()) {

    $pays_nom = $row['pays_nom'];
   
    $villes[$row['ville_id']] = $row['ville_nom'];
}

?>

<?php

$result->free();
$mysqli->close();

?>

Hors ligne

#2 12-09-2019 16:59:45

Jc
Membre
Lieu : Zillisheim - Alsace
Inscription : 15-04-2010
Messages : 1 629
Site Web

Re : LA COMMANDE INNER JOIN

Bonjour,

Difficile de vous répondre sans connaître la structure des tables.
Cependant pour pouvoir effectuer la jointure il vous faudrait une colonne pays_id dans votre table VILLES.
Ainsi vous pourriez écrire la requête suivante :

'SELECT ville_id, ville_nom, pays_nom
FROM villes INNER JOIN pays ON villes.pays_id=pays.pays_id
WHERE pays.pays_id=' . intval($pays_id)

Ensuite dans votre code vous réutilisez les mêmes nom de variables en PHP, ce qui peut créer des conflits.

A+

Dernière modification par Jc (12-09-2019 17:00:08)


POO PHP+Ajax en MVC avec PDO et Bases de données épaisses  : What else?

Hors ligne

Pied de page des forums