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
A voir également:
- Affichage jointure
- Affichage double ecran - Guide
- Windows 11 affichage classique - Guide
- Problème affichage fenêtre windows 10 - Guide
- Jointure sql ✓ - Forum MySQL
- Affichage youtube trop grand ✓ - Forum YouTube
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...
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é...
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); ?>
Merci beaucoup. Je n'avais pas réussi à utiliser correctement le LEFT JOIN jusque là. Tout fonctionne très bien.
Bonne journée à vous.