bonjour a tous et merci a ceux qui m'aide tous les jours,

je voudrais récupéré des valeurs dans deux tables

1/table users
id_user
user_first_name
user_name

2/city
id_city
city_name
city_text

a partir d'une table search
id_user
id_city

et afficher toutes les valeurs recherché

mon code me fait des répétitions !!!!


<?php
	
	
$result = $mysqli->query('SELECT user_first_name, user_name, city_name FROM search INNER JOIN users INNER JOIN city');
	
	$i=1;
	
if(!empty($user_name) AND !empty($user_first_name) AND !empty($city_name)){
		
		
		
		
		
		foreach($result as $id => $value){
			
			if($i >= 0){
				
			echo '<p>'.$value['user_first_name'].','.$value['user_name'].','.$value['city_name'].'</p>';
			
			
					}
			$i++;
				
		}
	}
?>

merci de me donner le sens de la logique sans pour autant me donner le code.
Modérateur
Bonjour,

Tu dois ajouter des conditions après INNER JOIN users et INNER JOIN city à l'aide de trucs du genre ON search.id_user = users.id_user', sinon, le SELECT te renvoie toutes les combinaisons possibles en "ajoutant" les tables users et city à chacune des lignes de search.

Même si tu nommes tes champs de la même manière dans deux tables différentes (par exemple ici id_user dans search et users), my_sql, lui, ne sait pas faire le rapprochement automatiquement : il faut lui dire et c'est à ça que servent les "ON" après les "INNER JOIN".

Amicalement,
je rejoins parsimonhi

Si tu utilise des jointures (ce que je ne pense pas obligatoire dans ton cas), il faut lui précisé les champs en quesiton, que tu dois lire dans ce sens : Le champs de la table A doit être également au champs de la table B, en concret cela donne comme dit juste au dessus :
ON search.id_user = users.id_user