recherche compelxe

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : recherche compelxe

par Flood » 05 mars 2005, 17:27

Hello,

Ta chause WHERE pour la naissance devrait avoir le format suivant

Code : Tout sélectionner

WHERE naissance BETWEEN X AND Y
Alors que vient faire le now() là dedans ??

Au passage, pour voir d'où vient le problème tu peux tester le retour de la fonction mysql_query()...

/Flood

recherche compelxe

par Invité » 05 mars 2005, 13:41

Bonjour,

j'essaie d'effectuer une recherche assez complexe mais quand j'ajoute la partie permettant de rechercher entre deux dates de naissance ça plante.

voici le script:
$aujourdhui = date("Y-m-d");
$annee = date("Y");
$annee2 = $annee-$_POST['rech_age_maxi'];

if ($_POST['rech_age_maxi']!='')
{
$age_maxi = ''.$annee2.'-01-01';
}
if ($_POST['rech_age_mini']!='')
{
$age_mini = date ( 'Y-m-d' , mktime ( 0,0,0, substr( $aujourdhui , 5 , 2 ) ,substr( $aujourdhui , 8 , 2 ) ,substr( $aujourdhui , 0 , 4 ) -$_POST['rech_age_mini'] ));
}

$sql = 'SELECT pseudo FROM membres'; 

$where = array(); 

if (isset($_POST['pseudo']) && !empty($_POST['pseudo'])) { 
        $where[] = "`pseudo`='" . mysql_escape_string($_POST['pseudo']) . "'"; 
    }
	
if (isset($_POST['perse_rech']) && !empty($_POST['perse_rech'])) { 
        $where[] = "`sexe`='" . mysql_escape_string($_POST['perse_rech']) . "'"; 
    }	 

if (isset($age_mini) && !empty($age_mini)) { 
    $where[] = "naissance" . mysql_escape_string(" NOW() BETWEEN ".$age_mini." AND ".$age_maxi.""); 
} 




if (count($where) > 0){ 
    $sql .= " WHERE " . implode(' AND ', $where); 
} 

$res = mysql_query($sql); 

echo $sql;

while($data = mysql_fetch_array($res)) 
{ 
echo $data['pseudo'];
echo '<BR>';
}
en fait l'erreur provient de cette ligne car si je la supprime ça fonctrionne tres bien:
if (isset($age_mini) && !empty($age_mini)) { 
    $where[] = "naissance" . mysql_escape_string(" NOW() BETWEEN ".$age_mini." AND ".$age_maxi.""); 
}