Bonjour, j'ai un formulaire via lequel je propose diverses options de recherche dans ma bdd; j'ai le code suivant qui me récupère les données du form :
//Récupération des valeurs des champs:
//Tables
$flag='';
$from='';
if(isset($_POST['recap_ameliorations']))
{
$from=" FROM recap_ameliorations ";
$flag='1';
}
if(isset($_POST['mot_cle']))
{
$where=' WHERE description OR cause_probable OR proposition_amelioration LIKE \''.$_POST['mot_cle'].'\' ';
$flag='1';
}
//Agence concernée
if(isset($_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(isset($_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(isset($_POST['resp']))
{
if($flag=='1') $where.=' AND resp LIKE \''.$_POST['resp'].' \' ';
else
$where.=' WHERE resp LIKE \''.$_POST['resp'].' \' ';
$flag='1';
}
//Etat des actions
if(isset($_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(isset($_POST['numero']))
{
if($flag=='1') $where.=' AND numero LIKE \''.$_POST['numero'].' \' ';
else
$where.=' WHERE numero LIKE \''.$_POST['numero'].' \' ';
$flag='1';
}
//Connexion à la base de données
$db = mysql_connect($host,$user,$password) or die("Impossible de se connecter");
if (!mysql_select_db( "$base",$db))
echo "Erreur : impossible de sélectionner la base
";
//requête SQL:
$sql="SELECT * ".$from.$where." ORDER BY numero";
echo "$sql";
$req = mysql_query($sql) or die('Erreur SQL !
'.$sql.'
'.mysql_error());
Si je fais un echo de ma requete j'ai :
SELECT * FROM recap_observations WHERE description OR cause_probable OR proposition_amelioration LIKE '' AND agence_concernee LIKE ' ' AND processus_concerne LIKE ' ' AND resp LIKE ' ' AND etat_action LIKE ' ' AND numero LIKE ' ' ORDER BY numero
Je ne comprends pas ou est le soucis, mes conditions ne fonctionnent pas car dans mon formulaire, je ne sélectionne que la base et sa m'affiche quand meme tous les AND....
Je devrais avoir une requete du style SELECT * FROM recap_observations ORDER BY numero
La ca a l'air de ne pas tenir compte des mes if(isset... et des flags...
dans tes parties qui précédent celle de la connexion, ta variable $where. n'existe pas je pense que ta variable est $where
ta formule devrai être $where=$where."ton code";
Voila, ne serait il pas possible de simplifier ce genre de code,(voir ci-dessous)
je fait une requete avec un critere identique mais sur des champs différents, et je passe par une case Texte!
merci d'avance pour vorte aide
<!---- ======================================-->
$query = "SELECT * FROM equipe WHERE joueur1 like '%".$searchterm."%'";
$result = mysql_query($query);
$num_results = mysql_num_rows($result);
echo " ".$num_results." Match trouvé pour ".$searchterm." ";
for ($i=0; $i <$num_results; $i++)
{
$row = mysql_fetch_array($result);
affichage des données 1
<!---- ======================================-->
$query = "SELECT * FROM equipe WHERE joueur2 like '%".$searchterm."%'";
$result = mysql_query($query);
$num_results = mysql_num_rows($result);
echo " ".$num_results." Match trouvé pour ".$searchterm." ";
for ($i=0; $i <$num_results; $i++)
{
$row = mysql_fetch_array($result);
affichage des données 2
<!---- ======================================-->
$query = "SELECT * FROM equipe WHERE joueur2 like '%".$searchterm."%'";
$result = mysql_query($query);
$num_results = mysql_num_rows($result);
echo " ".$num_results." Match trouvé pour ".$searchterm." ";
for ($i=0; $i <$num_results; $i++)
{
$row = mysql_fetch_array($result);