Affichage jointure
Résolu
cindydep
-
cindydep -
cindydep -
Bonjour,
Je suis débutante en php et sql et mon problème est le suivant :
Pour un projet scolaire je réalise un site pour trouver des chiens de races à accoupler. J'ai une table race comportant le nom de la race et son id et une table annonce avec l'id race et les autres informations de l'annonce. J'aimerais qu'en affichant l'annonce, la race du chien s'affiche. Aucune erreur n'est affiché, l'annonce s'affiche entièrement sauf la race justement qui reste vide. Je vous met ci-dessous mon code.
EDIT : AJout des balises de code
J'ai beau chercher et essayer plusieurs techniques, rien n'y fait…
Merci par avance !!
Je suis débutante en php et sql et mon problème est le suivant :
Pour un projet scolaire je réalise un site pour trouver des chiens de races à accoupler. J'ai une table race comportant le nom de la race et son id et une table annonce avec l'id race et les autres informations de l'annonce. J'aimerais qu'en affichant l'annonce, la race du chien s'affiche. Aucune erreur n'est affiché, l'annonce s'affiche entièrement sauf la race justement qui reste vide. Je vous met ci-dessous mon code.
<?php
$connexion=mysqli_connect("localhost","root","");
mysqli_select_db($connexion,"hotdog");
$req = 'SELECT * FROM annonce';
$res = mysqli_query($connexion,$req);
while($enregistrement = mysqli_fetch_array($res)) {
$nom = $enregistrement['nom'];
$mail_post = $enregistrement['mail_post'];
$sexe = $enregistrement['sexe'];
$age = $enregistrement['age'];
$prix = $enregistrement['prix'];
$ville = $enregistrement['ville'];
$req2 = 'SELECT nom_race FROM annonce, race WHERE
race.nom_race = annonce.id_race';
$res2 = mysqli_query($connexion, $req2);
$data = mysqli_fetch_array($res2);
echo ' <article class="post"> Nom du chien : '.$nom.' adresse email : '.$mail_post.' sexe : '.$sexe.' age : '.$sexe.' prix : '.$prix.' race : ' .$data['nom_race'].' ville : '.$ville.' . </article>' ;
}
mysqli_close($connexion);
?>
EDIT : AJout des balises de code
J'ai beau chercher et essayer plusieurs techniques, rien n'y fait…
Merci par avance !!
Configuration: Windows / Edge 17.17134
2 réponses
-
Bonjour,
Je t'invite à t'inspirer de ceci pour tes prochains codes :
https://forums.commentcamarche.net/forum/affich-37584947-php-gestion-des-erreurs-debogage-et-ecriture-du-code
Je pense aussi que le champ utilisé dans ta requête pour faire le lien entre les deux tables n'est pas le bon...race.nom_race = annonce.id_race
Je pense que tu dois utiliser un champ "race.id" (sinon quel intéret de faire une jointure si tu as déjà le "nom de la race" dans "annonce.id_race"' )
Bref, ton code revu et corrigé...<?php //------------------------------------------------------------------------// // Affichage des erreurs PHP: //------------------------------------------------------------------------// error_reporting(E_ALL); ini_set('display_errors', TRUE); ini_set('display_startup_errors', TRUE); //------------------------------------------------------------------------// //connexion à la bdd et gestion des éventuelles erreurs de connexion //------------------------------------------------------------------------// $con=mysqli_connect("localhost","root","","hotdog"); if (!$con){ die("Connection error: " . mysqli_connect_errno()); } //------------------------------------------------------------------------// // récupération des annonces //------------------------------------------------------------------------// $sql = "SELECT A.* ,R.* FROM annonce A LEFT JOIN race R ON R.id = A.id_race "; $res = mysqli_query($connexion,$sql); if (!$res) { echo("Error description: " . mysqli_error($connexion)); }else{ while($enregistrement = mysqli_fetch_array($res)) { $nom = $enregistrement['nom']; $mail_post = $enregistrement['mail_post']; $sexe = $enregistrement['sexe']; $age = $enregistrement['age']; $prix = $enregistrement['prix']; $ville = $enregistrement['ville']; $nom_race = $enregistrement['nom_race'] echo '<article class="post"> Nom du chien : '.$nom.' adresse email : '.$mail_post.' sexe : '.$sexe.' age : '.$sexe.' prix : '.$prix.' race : ' .$nom_race.' ville : '.$ville.' </article>' ; } } mysqli_close($connexion); ?>
-
Bonjour
Tu ne dois faire qu'une seule requete avec une jointure.
Regarde comment s'utilise le LEFT JOIN