Un peu de PHP/Mysql - Ptt pbl,création système de recheche!

Bonjour,
:hello:
J’ai besoin d’aide. :frowning:
Je suis actuellement en stage, je dois réaliser un outil de gestion sous php/mysql pour une entreprise, celui-ci permet de gérer les clients, les sociétés, les devis, les facturations… Et actuellement j’essaie de réaliser un sytème de recherche dans un formulaire à partir de 6 critères (nom de la socièté, numéro du dossier, classification du dossier, résponsable…), les 6 champs ne sont pas obligatoirement remplis. En faite plus les critères saisis sont nombreux, meilleure sera la recherche. Et par la suite en fonction de la recherche, un listing doit apparaitre regroupant toutes les informations contenues dans une base de données.
Je recherche un moyen de réaliser cela de telle sorte que la requête fonctionne et que l’affichage des infos se fasse correctement.
Car pour l’instant j’obtiens seulement les tableaux d’affichage et aucune infos venant de la base de données.
Je ne sais pas comment faire car il faut au minimum un critère rempli sinon rien ne s’affiche et au pire 6 (cela permet d’affiner la recherche). Il faut que la requête prenne en compte les 6 critères remplis ou non. Et j’ai essayé par la suite de gérer l’affichage avec un “if” mais j’ai du mal à définir les conditions correctement. :??:
Alors toutes les idées sont la bien venues.
Merci d’avance.
:jap:

Si c’est sur la même table (les mêmes données) l’affichage ne va pas changer grand chose. C’est juste la clause WHERE.

Ca se fait assez facilement par exemple tu peux voir chaque contrainte comme une expression, que tu fous dans un tableau, et les "coller" entre elles via implode, avec soit OR soit AND en guise de "glue" (cf. implode sur php.net)

En faite je joins 5 tables pr regrouper les infos. C’est seulement la clause WHERE qui me pose problème… Car je ne sais pas comment exprimer le fait que la case de saisie peut être pleine ou vide et que dans les deux cas, le résultat doit être pris en considèration.
Merci pr vos aides. :super:

Pour tester si ton critere n’est pas vide tu peux faire un :

if ($_POST[‘Critere_1’] != ‘’ ) {
//ici tu concatene la chaine comme t’as dit Euremb
}

Et tu le fais pour chaque critère ^^

mieux que ça

$expr = array();

if ( !empty($_POST['machin'])) {
  $expr[] = 'machin LIKE \'' . mysql_real_escape_string($_POST['machin']) . '\'';
}


if ( $expr ) {
  $where = 'WHERE ' . implode( ' AND ', $expr));
} else $where = '';

$q = 'SELECT * FROM ... ' . $where;

y a mieu :oui: :

if ( !empty($_POST['Critere_1']) ) {...

Message edité le 25/03/2015 à 19:35

:clap: :clap: :clap:
Merci pour tous vos conseils, j’ai réussit…
:super:
Bon courage à tous pour la suite.
Cordialement
Emily