Je précise un peu monproblème.
J'ai un formulaire de recherche avec 22 champs composés de : checkbox, liste déroulante et zone de saisie de texte.
Ce formulaire sert à "interroger" une table avec tout mes champs, là ou ça coince, vous l'aurez compris, c'est la construction dynamique de la requete !
(j'ai bien pensé la construire avec de "if" mais avec 21 champs l'idée n'est pas bonne : trop de possibilité !)
L'utilisateur doit pouvoir, en effet, cocher ou choisir la ou les conditions et avoir un résultat de sa recherche.
J'ai commencé avec ça, en pensant "découper" la requête puis la concaténer ... Mais je bloque !
<?php
// déclaration des tableaux en fonction du type de champ récupéré
// Les checkbox qui retournent rien si elles ne sont pas cochées (13)
$tablo1 = array(
'certif'=>$_POST['certif'],
'blacklist'=>$_POST['blacklist'],
'chrc'=>$_POST['chrc'],
'chrcfbi'=>$_POST['chrcfbi'],
'chrchbi'=>$_POST['chrchbi'],
'chrcles2bi'=>$_POST['chrcles2bi'],
'chrf'=>$_POST['chrf'],
'chrfbi'=>$_POST['chrfbi'],
'chrfh'=>$_POST['chrfh'],
'chrh'=>$_POST['chrh'],
'chrhbi'=>$_POST['chrhbi'],
'chrhh'=>$_POST['chrhh'],
'chrtrans'=>$_POST['chrtrans'],
'photo1'=>$_POST['photo1'],
'sexe'=>$_POST['sexe'],
'pays'=>$_POST['pays'],
'region'=>$_POST['region'],
'location'=>$_POST['location'],
'mobilite'=>$_POST['mobilite']);
// Les listes déroulantes pour les tranches d'âge (2) ( 0->Tous, 1->18-25ans, 2->25-30ans ...) (2)
$tablo2 = array(
'age1'=>$_POST['age1'],
'age2'=>$_POST['age2']);
// Construction de la requête
$query = "SELECT * FROM TABLE membres WHERE ";
$C = 0;
$and = 'AND ';
foreach($tablo1 as $champ=>$valeur)
{
$C++;
if ($C == 19) { $and = ''; }
if ($valeur != '')
{ $query .= $champ.'=\''.$valeur.'\' '.$and; }
}
foreach($tablo2 as $champ=>$valeur)
{
if ($valeur == 0)
{ $query .= ' AND '.$champ.'=\'Tous\''; }
elseif ($valeur == 1)
{ $query .= ' AND '.$champ.' BETWEEN 18 AND 25'; }
}
if ($_POST['pseudo'] != '')
{ $query .= ' AND pseudo LIKE \'%'.$_POST['pseudo'].'%\''; }
// On exécute la requête
$requete = mysql_query($query);
?>
$query = "SELECT * FROM ".PREFIXE."membres WHERE "; $and = 'AND '; foreach($tablo1 as $champ=>$valeur) { if ($C == 0) { $and = ''; } $C++; if ($valeur != '') { $query .=$and .$champ.'=\''.$valeur.'\''; } }