flopad
Messages postés528Date d'inscriptionmercredi 28 septembre 2005StatutMembreDernière intervention 6 mars 2009
-
9 mai 2006 à 16:43
cs_AlexN
Messages postés694Date d'inscriptionlundi 5 décembre 2005StatutMembreDernière intervention 8 janvier 2014
-
9 mai 2006 à 17:08
Bonjour,
j'ai un formulaire par lequel l'user selectionne ce qu'il veut rechercher dans ma base.
Il a également le choix de rechercher sur une ou plusieurs tables. Dans mes tables, les champs ont le meme nom, je voudrais si possible que ca reste comme ca.
C'est là qu'est mon problème, si je coche la recherche sur une seule table, c'est ok, par contre, si je recherche sur plusieurs tables, ca me dit : Column 'NOM DU CHAMP' in where clause is ambiguous
Est ce qu'il y a une feinte pour contrer ca...???
Voici mon code :
//Mot clé
$flag='';
$where='';
if(!EMPTY($_POST['mot_cle']))
{
$where=' WHERE description OR cause_probable OR proposition_amelioration LIKE \''.$_POST['mot_cle'].'\' ';
$flag='1';
}
//Agence concernée
if(!EMPTY($_POST['agence_concernee']))
{
if($flag=='1') $where.=' AND agence_concernee LIKE \''.$_POST['agence_concernee'].' \' ';
else
$where.=' WHERE agence_concernee LIKE \''.$_POST['agence_concernee'].' \' ';
$flag='1';
}
//Processus concerné
if(!EMPTY($_POST['processus_concerne']))
{
if($flag=='1') $where.=' AND processus_concerne LIKE \''.$_POST['processus_concerne'].' \' ';
else
$where.=' WHERE processus_concerne LIKE \''.$_POST['processus_concerne'].' \' ';
$flag='1';
}
//Responsable
if(!EMPTY($_POST['resp']))
{
if($flag=='1') $where.=' AND resp LIKE \''.$_POST['resp'].' \' ';
else
$where.=' WHERE resp LIKE \''.$_POST['resp'].' \' ';
$flag='1';
}
//Etat des actions
if(!EMPTY($_POST['etat_action']))
{
if($flag=='1') $where.=' AND etat_action LIKE \''.$_POST['etat_action'].' \' ';
else
$where.=' WHERE etat_action LIKE \''.$_POST['etat_action'].' \' ';
$flag='1';
}
//Numéro
if(!EMPTY($_POST['numero']))
{
if($flag=='1') $where.=' AND numero LIKE \''.$_POST['numero'].' \' ';
else
$where.=' WHERE numero LIKE \''.$_POST['numero'].' \' ';
$flag='1';
}
cs_AlexN
Messages postés694Date d'inscriptionlundi 5 décembre 2005StatutMembreDernière intervention 8 janvier 201419 9 mai 2006 à 17:07
Pour lever l'ambiguité de ta requete fais preceder les noms des champs par les nom de tableWHERE Table1.ChampIdentique ... AND WHERE Table2.ChampIdentique ..
cs_ov3rdoze
Messages postés414Date d'inscriptionlundi 19 juillet 2004StatutMembreDernière intervention23 septembre 2014 9 mai 2006 à 17:06
Il faut que tu renomme tes tables :
Par exemple si t'as une table 'user' avec un champ nom et une table 'agence' avec un champ nom egalement, et que tu fais une recherche sur ces 2 critères :
SELECT ... FROM user u, agence a WHERE u.nom=... AND a.nom=...;