Page 1 sur 1

Commande INNER JOIN

Posté : 13 mars 2019, 16:35
par cyci60
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();

?>

Re: LA COMMANDE INNER JOIN

Posté : 13 mars 2019, 19:12
par Spols
ta condition de jointure doit être dans ta jointure aprés la clause ON plutot que dans le WHERE

test tes requète dans phpmyadmin pour être sur de leur fonctionnement.

Re: LA COMMANDE INNER JOIN

Posté : 15 mars 2019, 13:25
par cyci60
J'ai testé avec ON = FATAL ERROR syntax error, unexpected 'is' (T_STRING) on line number 1

$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>';

Re: LA COMMANDE INNER JOIN

Posté : 15 mars 2019, 14:23
par Spols
ta clause ON ne doit pas contenir de IS, mais une égalité entre une table déjà incluse et ta nouvelle table

test tes requète dans phpmyadmin pour être sur de leur fonctionnement.

Re: LA COMMANDE INNER JOIN

Posté : 15 mars 2019, 16:24
par cyci60
is ?

Re: Commande INNER JOIN

Posté : 16 mars 2019, 00:56
par @rthur
FATAL ERROR syntax error, unexpected 'is'
Selon le message d'erreur que tu nous as indiqué, tu as un "is" quelque part dans ta requête qui provoque cette erreur.


Du coup il faut que tu suives le conseil de Spols :
teste tes requètes dans phpmyadmin pour être sûr de leur fonctionnement.