Problème avec INNER JOIN et LEFT OUTER JOIN
Posté : 06 sept. 2011, 11:53
Bonjour a tous, j'ai un petit problème avec une requête pour un moteur de recherche.
composition de la BDD
professeur: id nom prenom
etablissement: numero_u denomina patronym,localite,code_pos
enseigne_etablissement: profid (id de professeur) rne(numero_u de etablissement)
enseigne_niveau: profid (id de professeur) niveauid (id de niveau)
enseigne_discipline: profid (id de professeur) disci (id de discipline)
discipline: id nom
niveau: id nom
Et voici la requete
Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in D:\wamp\www\corps_anuaire_recherche.php on line 114
Je ne vois pas d'où cela peut venir, quelqu'un pourrai t'il m'aider?
composition de la BDD
professeur: id nom prenom
etablissement: numero_u denomina patronym,localite,code_pos
enseigne_etablissement: profid (id de professeur) rne(numero_u de etablissement)
enseigne_niveau: profid (id de professeur) niveauid (id de niveau)
enseigne_discipline: profid (id de professeur) disci (id de discipline)
discipline: id nom
niveau: id nom
Et voici la requete
if(isset($_POST['rechercher'])){
/*echo $_POST['nom'];
echo $_POST['prenom'];
echo $_POST['matiere'];
echo $_POST['niveau_etablissement'];
echo $_POST['nom_etablissement'];
echo $_POST['ville'];*/
$req = "SELECT professeur.*,
etablissement.*,
enseigne_etablissement.*,
enseigne_niveau.*,
enseigne_discipline.*,
discipline.*,
niveau.*
FROM professeur
INNER JOIN enseigne_discipline on enseigne_discipline.profid = professeur.id
INNER JOIN enseigne_discipline on enseigne_discipline.disci = discipline.id
INNER JOIN enseigne_niveau on enseigne_niveau.profid = professeur.id
INNER JOIN enseigne_niveau on enseigne_niveau.niveauid = niveau.id
INNER JOIN enseigne_etablissement on enseigne_etablissement.profid = professeur.id
INNER JOIN enseigne_etablissement on enseigne_etablissement.rne = etablissement.numero_u ";
if($_POST['nom']!=''){
$wheres[] = "professeur.nom = '{$_POST['nom']}' ";
}
if($_POST['prenom']!=''){
$wheres[] = "professeur.prenom = '{$_POST['prenom']}' ";
}
if($_POST['matiere']!=''){
$wheres[] = "discipline.nom = '{$_POST['matiere']}' ";
}
if($_POST['niveau_etablissement']!=''){
$wheres[] = "niveau.nom = '{$_POST['niveau_etablissement']}' ";
}
if($_POST['nom_etablissement']!=''){
$wheres[] = "etablissement.patronym = '{$_POST['nom_etablissement']}' ";
}
if($_POST['ville']!=''){
$wheres[] = "(etablissement.localite = '{$_POST['ville']}' OR etablissement.code_pos = '{$_POST['ville']}') ";
}
$where_q = "";
foreach($wheres as $where){
if($where_q == ""){
$where_q = "WHERE ". $where;
}else {
$where_q .= "and ".$where;
}
}
$req .= " ".$where_q;
echo $req;
$req_nom = mysql_query($req);
while ($nom = mysql_fetch_assoc($req_nom))
{
echo $nom['nom']."<br />";
echo $nom['prenom']."<br />";
echo $nom['disci']."<br />";
echo $nom['rne']."<br />";
echo $nom['niveauid']."<br />";
}
}
else{}
Lorsque je lance une recherche il m'affiche bien la requête (echo $req) mais il y a une erreur Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in D:\wamp\www\corps_anuaire_recherche.php on line 114
Je ne vois pas d'où cela peut venir, quelqu'un pourrai t'il m'aider?