Je cherche une requête en php depuis 3 jours

Bonjour,
je cherche une requête depuis 3 jours , je ne sais pas comment faire!

j'explique:

dans ma bdd ,j'ai les dates de naissances de mes membre sous forme aaaa-mm-jj.
j'ai une page,qui permet aux membres de mon site ,de rechercher d'autre membre de mon site avec comme critére L'age , le departemement , et le sexe!

ma requéte serait simple si ma recherche s'effecturé par date de naissances or elle s'effectue par age!

ex:( selectionne les membre qui on entre X age et Y age du departememt W)

le probleme c'est que je n'arrive pas a convertire les date de naissances qui sont dans ma bdd en age, tout en fessant ma requête qui afficherai les membre qui sont dans ma bdd qui on entre X age et Y age dans le departement W

bon je vous montre 1 script que j'ai fait mais il ya des erreur et je pensse aussi qu'il ne faut pas faire comme ca!

si quelqu'un pourrait me montrer ca serait vraiment gentil!

Warning: mysql_close(): no MySQL-Link resource supplied in C:\wamp\www\tests\premierpage.php on line 434

Code : PHP - Afficher / masquer les numéros de ligne<?php
if (isset ($_POST['re_sexe']) && isset ($_POST['age_minimum']) && isset ($_POST['age_maximum'])&& isset ($_POST['departement']))
// Si les variables existent
{
// D'abord, on se connecte à MySQL
mysql_connect("localhost", "root", "");
mysql_select_db("sitemicka");

$sexe = $_POST['re_sexe'];
$age_mini = $_POST['age_minimum'];
$age_maxi = $_POST['age_maximum'];
$dep = $_POST['departement'];

$reponse2 = mysql_query("SELECT id, photo2, date_de_naissance, departemement, sexe FROM infoclients");

while ($donnees2 = mysql_fetch_array($reponse2) )
{

$date_naissance = $donnees2['date_de_naissance'];

$date_naissance1 = mktime(0,0,0,$date_naissance);
// on prend le timestamp
$timestamp = time();
//on calcule
$age = floor(($timestamp-$date_naissance1)/3600/24/365.5);

if ($age <= $age_maxi AND $age>= $age_mini AND $dep == $donnees2['departement'] AND $sexe == $donnees2['sexe'])

{

echo '<tr><td><a href=fichemembre.php?id='.$donnees1['id'].'><img src="images/'.$donnees1['photo2'].'" alt="image" /></a></td></tr>';
}
}
}
mysql_close(); // Déconnexion de MySQL
?>
Configuration: Windows XP
Internet Explorer 6.0

6 réponses

  1. Bonsoir,

    essayes comme ça, je n'ai pas testé, alors attention aux fautes de frappe ou parenthèses oubliées.
    C'est le principe surtout.

    J'ai décomposé au maximum

    <?php
    if (isset ($_POST['re_sexe']) && isset ($_POST['age_minimum']) && isset ($_POST['age_maximum'])&& isset ($_POST['departement']))
    // Si les variables existent  attention qu'elles existent ne veut pas dire qu'elles ne soient pas vides
    {
    
    	$sexe = $_POST['re_sexe'];
    	$age_mini = $_POST['age_minimum'];
    	$age_maxi = $_POST['age_maximum'];
    	$dep = $_POST['departement'];
    	$annee_today=date("Y");
    	$suite_date_today=date("m-d");
    	$annee_naissance_age_mini=$annee_today - $age_mini;
    	$annee_naissance_age_maxi=$annee_today - $age_maxi;
    	$date_naissance_haute=$annee_naissance_age_mini."-".$suite_date_today;
    	$date_naissance_basse=$annee_naissance_age_maxi."-".$suite_date_today;
    	//  on se connecte à MySQL
    	mysql_connect("localhost", "root", "");
    	mysql_select_db("sitemicka");
    
    	$reponse2 = mysql_query("SELECT id, photo2, date_de_naissance, departemement, sexe FROM infoclients WHERE sexe='".$sexe."' AND departemement='".$dep."' AND date_de_naissance < '".$date_naissance_haute."' AND date_de_naissance > '".$date_naissance_basse."' ");
    	while ($donnees2 = mysql_fetch_array($reponse2) )
    	{
    		echo '<tr><td><a href=fichemembre.php?id='.$donnees2['id'].'><img src="images/'.$donnees2['photo2'].'" alt="image" /></a></td></tr>';
    	}
    }
    mysql_close(); // Déconnexion de MySQL
    ?>
    
    
    0
    1. merci beaucoup de ta reponse!

      il ma inscrit une erreur!

      Warning: mysql_close(): no MySQL-Link resource supplied in C:\wamp\www\tests\premierpage.php on line 419

      donc j'ai coriger, j'ai remonter le mysql_close(); avant la derniere acollade!

      et maintenant j'ai une autre erreur que je comprend pas!

      Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in C:\wamp\www\tests\premierpage.php on line 413

      a l echo :

      {
      echo '<tr><td><a href=fichemembre.php?id='.$donnees2['id'].'><img src="images/'.$donnees2['photo2'].'" alt="image" /></a></td></tr>';
      }

      <?php
      if (isset ($_POST['re_sexe']) && isset ($_POST['age_minimum']) && isset ($_POST['age_maximum'])&& isset ($_POST['departement']))
      // Si les variables existent attention qu'elles existent ne veut pas dire qu'elles ne soient pas vides
      {

      $sexe = $_POST['re_sexe'];
      $age_mini = $_POST['age_minimum'];
      $age_maxi = $_POST['age_maximum'];
      $dep = $_POST['departement'];
      $annee_today=date("Y");
      $suite_date_today=date("m-d");
      $annee_naissance_age_mini=$annee_today - $age_mini;
      $annee_naissance_age_maxi=$annee_today - $age_maxi;
      $date_naissance_haute=$annee_naissance_age_mini."-".$suite_date_today;
      $date_naissance_basse=$annee_naissance_age_maxi."-".$suite_date_today;
      // on se connecte à MySQL
      mysql_connect("localhost", "root", "");
      mysql_select_db("sitemicka");

      $reponse2 = mysql_query("SELECT id, photo2, date_de_naissance, departemement, sexe FROM infoclients WHERE sexe='".$sexe."' AND departemement='".$dep."' AND date_de_naissance < '".$date_naissance_haute."' AND date_de_naissance > '".$date_naissance_basse."' ");
      while ($donnees2 = mysql_fetch_array($reponse2) )
      {
      echo '<tr><td><a href=fichemembre.php?id='.$donnees2['id'].'><img src="images/'.$donnees2['photo2'].'" alt="image" /></a></td></tr>';
      }
      mysql_close(); // Déconnexion de MySQL
      }

      ?>
      0
      1. Tu dois avoir des erreurs ailleurs, mets ces traces:

        
        <?php
        if (isset ($_POST['re_sexe']) && isset ($_POST['age_minimum']) && isset ($_POST['age_maximum'])&& isset ($_POST['departement']))
        // Si les variables existent attention qu'elles existent ne veut pas dire qu'elles ne soient pas vides
        {
        
        $sexe = $_POST['re_sexe'];
        $age_mini = $_POST['age_minimum'];
        $age_maxi = $_POST['age_maximum'];
        $dep = $_POST['departement'];
        $annee_today=date("Y");
        $suite_date_today=date("m-d");
        $annee_naissance_age_mini=$annee_today - $age_mini;
        $annee_naissance_age_maxi=$annee_today - $age_maxi;
        $date_naissance_haute=$annee_naissance_age_mini."-".$suite_date_today;
        $date_naissance_basse=$annee_naissance_age_maxi."-".$suite_date_today;
        // on se connecte à MySQL
        $cnx=mysql_connect("localhost", "root", "") or die("Pb connexion au serveur".mysql_error());
        $db=mysql_select_db("sitemicka") or die("Pb selection base".mysql_error());
        
        $reponse2 = mysql_query("SELECT id, photo2, date_de_naissance, departemement, sexe FROM infoclients WHERE sexe='".$sexe."' AND departemement='".$dep."' AND date_de_naissance < '".$date_naissance_haute."' AND date_de_naissance > '".$date_naissance_basse."' ") or die("Pb requette".mysql_error());
        while ($donnees2 = mysql_fetch_array($reponse2) )
        {
        echo '<tr><td><a href=fichemembre.php?id='.$donnees2['id'].'><img src="images/'.$donnees2['photo2'].'" alt="image" /></a></td></tr>';
        }
        mysql_close(); // Déconnexion de MySQL
        }
        ?>
        
        0
        1. merci beaucoup de ton aide car ca fait 3 jour que je me prend la tête avec ce code!!

          ca m'affiche ca!

          Pb requetteUnknown column 'departemement' in 'field list'
          0
          1. okok c'etait departement qui etait ecrit departemement!!

            merci beaucoup ca marche maintenant!

            et comment faire pour que si le membre poste pas tout !
            par ex:

            il veut choisir que par l'age sans le departement!
            0
            1. Bonjour,

              la c'est un peu plus compliqué, il faut construire ta requette en testant par exemple si $sexe=="" et en rajoutant dans ce cas la condition AND sexe='$sexe'

              mais ça va se compliquer pour le calcul des dates basse et haute

              @lain
              0