Affichage jointure

Résolu/Fermé
cindydep - Modifié le 21 janv. 2019 à 10:18
 cindydep - 21 janv. 2019 à 11:35
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.

<?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

jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649
21 janv. 2019 à 10:30
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);


?>

1
Bonjour,
Merci beaucoup. Je n'avais pas réussi à utiliser correctement le LEFT JOIN jusque là. Tout fonctionne très bien.
Bonne journée à vous.
0
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649
21 janv. 2019 à 00:50
Bonjour
Tu ne dois faire qu'une seule requete avec une jointure.
Regarde comment s'utilise le LEFT JOIN
0