|
|
|
|
Bonjour, j'essai de contruire dynamiquement une requête mais je n'arrive pas à ce que le "AND" ne s'écrive pas lors du premier passage dans la boucle !!!
Si qq'un à une idée je suis preuneur, çà fait 3 heures que je suis deçu et je n'arrive à rien !
<?php
$query = "SELECT * FROM ".PREFIXE."membres WHERE ";
$C = 0;
$and = 'AND ';
foreach($tablo1 as $champ=>$valeur)
{
$C++;
if ($C == 18) { $and = ''; }
if ($valeur != '')
{ $query .=$and .$champ.'=\''.$valeur.'\''; }
}
?> Salut,
$query = "SELECT * FROM ".PREFIXE."membres";
$and = ' WHERE '; // y a un espace avant et après le WHERE
foreach($tablo1 as $champ=>$valeur)
{
if ( $valeur != '' )
$query .=$and .$champ."='$valeur.'";
$and = ' AND ' ; // y a un espace avant et après le AND
}
..., I think Slackware sounds better than 'Microsoft,'
-- Patrick Volkerding - founder and maintainer of Slackware
|
Je précise un peu monproblème.
<?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);
?>
|
4.38 du matin j'ai trouvé ! Plus d'une semaine sur ce truc !
<?php
// déclaration des tableaux en fonction du type de champ récupéré
// Les checkbox et les listes déroulantes qui retournent rien si elles ne sont pas choisi (18)
$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'],'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
// On initalise la requête et on valide le "WHERE" avec 1=1 qui renvoi tjrs "TRUE"
$query = "SELECT * FROM ".PREFIXE."membres WHERE 1=1 ";
$and = ' AND ';
// On parcourt le tableau
foreach($tablo1 as $champ=>$valeur)
{
if ( $valeur != '' ) { $query .=$and .$champ.'=\''.$valeur.'\''; }
// Cas particulier des tranches d'âge
foreach($tablo2 as $champ=>$valeur)
{
if ($valeur != '')
{
if ($valeur == 1){$query .= ' AND '.$champ.' BETWEEN 18 AND 25'; }
if ($valeur == 2){$query .= ' AND '.$champ.' BETWEEN 25 AND 30'; }
if ($valeur == 3){$query .= ' AND '.$champ.' BETWEEN 30 AND 40'; }
if ($valeur == 4){$query .= ' AND '.$champ.' BETWEEN 40 AND 50'; }
if ($valeur == 5){$query .= ' AND '.$champ.' >50'; }
}
}
// Cas particulier du pseudo %LIKE%
if ($_POST['pseudo'] != '')
{ $query .= ' AND pseudo LIKE \'%'.$_POST['pseudo'].'%\''; }
// Cas particulier de la photo (si la case est cochée le champ doit avoir un enregistrement)
if ($_POST['photo1'] != '')
{ $query .= ' AND photo1 !=\'\''; }
// On exécute la requête
$requete = mysql_query($query) or die ("Requête invalide");
?>
|