Recherche dans une table

Résolu
01cod10 Messages postés 110 Date d'inscription mardi 30 août 2005 Statut Membre Dernière intervention 13 août 2007 - 7 sept. 2005 à 13:19
 asmaneffati - 29 mars 2011 à 12:04
J'aimerai afficher la liste de tous les membres ayant comme sexe femme dont l'age est compris entre 30 et 35 et une photo
je sais que je dois utiliser cette requete mais comment le faire je ne sais pas car l'age est une liste déroulante de cette sorte
18-24
25-29
30-35
etc

SELECT * FROM table WHERE (datenaissance BETWEEN 30 AND 35) AND

23 réponses

sephiroth1020 Messages postés 56 Date d'inscription mardi 4 janvier 2005 Statut Membre Dernière intervention 10 octobre 2005
7 sept. 2005 à 13:46
<select name= "age" >

<option value=18> 18-24
<option value=25> 25-29
<option value=30> 30-35

</select>



<select name="sex" >

<option value=F> HOMME
<option value=M> FEMME

</select>



..............................

$sex=$_POST['sex'];

$age=$_POST['age'];

$age2=$age+5;



SELECT * FROM table WHERE (datenaissance BETWEEN $age AND $age2) AND sexe =$sex




Lors de l insertion du sexe dans la base de donnée : on doit inserer F pour femme et M pour homme.



Et ça marche!!!
3
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
8 sept. 2005 à 14:27
Mopi je dirais plutôt :



$requete = "SELECT
datenaissance,jesuis,pseudo,ville,pays FROM Table where (((extract( year
FROM now( ) ) - EXTRACT( YEAR FROM datenaissance)) BETWEEN $age AND
$age1) AND jesuis='$jesuis' AND pays='$pays'";
3
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
7 sept. 2005 à 13:31
Hello,



quel est le problème au juste ? Tu as juste :

SELECT age, photo, sexe FROM table WHERE (datenaissance BETWEEN 30 AND 35) AND sexe = 'femme'



Qu'est-ce qui ne fonctionne pas au juste ?
0
sephiroth1020 Messages postés 56 Date d'inscription mardi 4 janvier 2005 Statut Membre Dernière intervention 10 octobre 2005
7 sept. 2005 à 13:37
Pour la liste tu fera comme suite :



Puisuqe tu utilises pour chaque choix un intervalle de ans :



<select name= "choix" >

<option value=18> 18-24

<option value=25> 25-29

<option value=30> 30-35

</select>

..............

$ch1=$_POST['choix'];

$ch2=$ch1+5;





SELECT * FROM table WHERE (datenaissance BETWEEN $ch1 AND $ch2) AND sexe =f
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
01cod10 Messages postés 110 Date d'inscription mardi 30 août 2005 Statut Membre Dernière intervention 13 août 2007
7 sept. 2005 à 13:41
ok pour ça mais mon probleme est que l'utilisateur à un choix dans une liste sexe ( femme ou homme) et le datenaissance (18-24,25-29,30-35 etc).
si je fais comme tu m'as dit j'aurai pas de réponse quand l'utilisateur choisira datenaissance entre 25 et 29 et sexe=homme
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
7 sept. 2005 à 13:46
Ah ok je n'avais pas pigé le problème de fond.

Bah tu fais un explode de ton choix.

$choix = explode ('-', $_POST['choix']);

et ta liste :

<option valu ="18-25">18-25</option>

etc...puis

datenaissance BETWEEN $choix[0] AND $choix[1]
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
7 sept. 2005 à 13:47
gaffe hein, tes valeurs ne sont pas toutes à intervalle = valeur de
départ + 5, d'où le explode (). Pour le reste, Sephi a tout bon ;-)
0
01cod10 Messages postés 110 Date d'inscription mardi 30 août 2005 Statut Membre Dernière intervention 13 août 2007
7 sept. 2005 à 14:32
une question dans ma table la datenaissance est sous cette forme aaaa/mm/jj
0
01cod10 Messages postés 110 Date d'inscription mardi 30 août 2005 Statut Membre Dernière intervention 13 août 2007
7 sept. 2005 à 15:12
Excusez moi je crois que je m'explique mal
ma table contient un champ datenaissance sous cette forme aaaa/mm/jj
voici le script que l'utilisateur utilisera


<HTML>


<HEAD>


</HEAD>


<FORM action="rechercher.php" method="POST">


Je suis,

Homme
Femme,

----

Je recherche,

Femme
Homme,

,

----

Age,

<SELECT name="age">

<OPTION value="18">18-24</OPTION>

<OPTION value="25">25-29</OPTION>

<OPTION value="30">30-34</OPTION>

<OPTION value="35">35-39</OPTION>

<OPTION value="40">40-44</OPTION>

<OPTION value="45">45-49</OPTION>

<OPTION value="50">50-54</OPTION>

<OPTION value="55">55 et plus</OPTION>

</SELECT>,

----

PAYS,

<SELECT name="pays ">

<OPTION value="Allemagne">Allemagne</OPTION>

<OPTION value="Belgique">Belgique</OPTION>

<OPTION value="Etats-Unis">Etats-unis</OPTION>

<OPTION value="France">France</OPTION>

<OPTION value="Pays-bas">Pays-bas</OPTION>

<OPTION value="Suisse">Suisse</OPTION>

</SELECT>,

----

Photo

,

,


</FORM>


</HTML>

voici le script de recherche


<?


$pseudo = isset($_POST["pseudo"]) ? $_POST["pseudo"] : "";


$jesuis = isset($_POST["jesuis"]) ? $_POST["jesuis"] : "";


$age1=isset($_POST["age1"]) ? $_POST["age1"] : "";


$age2=$age1+5;


// information pour la connection
à le DB


$host = 'localhost';


$user = 'root';


$pass = '';


$db = 'nombase';


// connection à la DB


$link = mysql_connect ($host,$user,$pass) or die ('Erreur : '.mysql_error() );


mysql_select_db($db) or die ('Erreur :'.mysql_error());


// requête SQL qui compte le nombre total d'enregistrement dans la table et qui


//récupère tous les enregistrements


$select = "SELECT datenaissance,jesuis,pseudo,ville,pays FROM Table WHERE (datenaissance BETWEEN $age1 AND $age2) AND jesuis='$jesuis'";


$result = mysql_query($select,$link) or die ('Erreur : '.mysql_error() );


$total = mysql_num_rows($result);


// si on a récupéré un résultat on l'affiche.


if($total) {


// lecture et affichage des résultats sur 2 colonnes, 1 résultat par ligne.


while ($row = mysql_fetch_array($result)) {


echo ''.\"\n\";

echo '----
';

echo ', ';

echo'';

echo '----
';

echo ''.$row["pseudo"].' ';

echo ', </td>';

echo '';

echo '----
';

echo ', ';

echo 'VILLE, '; echo ''.$row["ville"].', ';

echo'';

echo '----
';

echo ', ';

echo 'PAYS, '; echo ''.$row["pays"].', ';

echo'';

echo '
'."\n";


}


// on libère le résultat


mysql_free_result($result);


}


//mysql_close();


?>
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
7 sept. 2005 à 16:30
Dans ce cas tu devras faire le calcul pour savoir entre combien et combien et compris l'âge.
0
01cod10 Messages postés 110 Date d'inscription mardi 30 août 2005 Statut Membre Dernière intervention 13 août 2007
7 sept. 2005 à 17:07
Si je comprends bien tu parles de l'intervalle entre les dates de naissance je prends 4ans alors
exemple
18-22
23-27
28-32
33-37
38-42
43-47
48-52
53 et plus

sinon franchement je ne vois pas ce qu'il faut faire
0
aurelien0306 Messages postés 181 Date d'inscription jeudi 27 février 2003 Statut Membre Dernière intervention 2 mars 2009
7 sept. 2005 à 23:42
salut :

ta requête est "évidemment" incorrecte dans la mesure ou la date de
naissance est au format date aaaa-mm-jj et tu lui demandes de "rentrer"
dans un intervalle entier... Il faut donc que tu calcule l'age pour
pouvoir le comparer à l'intervalle. une méthode (qui compte l'age en
fonction de l'année de naissance : donc si nous sommes en janvier 2005,
une personne née le 26 décembre 1983 aura donc 22a (alors que
théoriquement elle ne les a pas encore.. a toi de voir c'est un
détail..)

donc le début du where de ta requete devrait ressembler à :

where (extract( year FROM now( ) ) - EXTRACT( YEAR FROM dateinscr ) BETWEEN $age1 AND $age2)....



normalement ça marche
0
aurelien0306 Messages postés 181 Date d'inscription jeudi 27 février 2003 Statut Membre Dernière intervention 2 mars 2009
7 sept. 2005 à 23:44
dateinscr à remplacer par datenaissance bien sur (tête en l'air)
0
01cod10 Messages postés 110 Date d'inscription mardi 30 août 2005 Statut Membre Dernière intervention 13 août 2007
8 sept. 2005 à 10:47
Erreur : Erreur de syntaxe près de '' à la ligne 1

qui est :
<?

je ne sais d'où vient l'erreur
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
8 sept. 2005 à 11:46
Non, c'est une erreur sql ça, pas php. Regarde ta requete, c'est elle qui foire.
0
01cod10 Messages postés 110 Date d'inscription mardi 30 août 2005 Statut Membre Dernière intervention 13 août 2007
8 sept. 2005 à 12:11
Voici le script car je ne vois pas ce que j'ai fait comme erreur
<?


$jesuis = isset($_POST["jesuis"]) ? $_POST["jesuis"] : "";


$age=isset($_POST["age"]) ? $_POST["age"] : "";


$age1=$age+5;


// information pour la connection
à le DB


$host = 'localhost';


$user = 'root';


$pass = '';


$db = 'nombase';


// connection à la DB


$link = mysql_connect ($host,$user,$pass) or die ('Erreur : '.mysql_error() );


mysql_select_db($db) or die ('Erreur :'.mysql_error());


$requete = "SELECT datenaissance,jesuis,pseudo,ville,pays FROM Table where ((extract( year FROM now( ) ) - EXTRACT( YEAR FROM datenaissance) BETWEEN $age AND $age1) AND jesuis='$jesuis'";


$result = mysql_query($requete,$link) or die ('Erreur : '.mysql_error() );


$total = mysql_num_rows($result);


// si on a récupéré un résultat on l'affiche.


if($total) {


while ($row = mysql_fetch_array($result)) {


echo ''.\"\n\";

echo '----
';

echo ', ';

echo'';

echo '----
';

echo ''.$row["pseudo"].' ';

echo ', </td>';

echo '';

echo '----
';

echo ', ';

echo 'VILLE, '; echo ''.$row["ville"].', ';

echo'';

echo '----
';

echo ', ';

echo 'PAYS, '; echo ''.$row["pays"].', ';

echo'';

echo '
'."\n";


}


// on libère le résultat


mysql_free_result($result);


}


?>
0
aurelien0306 Messages postés 181 Date d'inscription jeudi 27 février 2003 Statut Membre Dernière intervention 2 mars 2009
8 sept. 2005 à 12:54
il te manque une parenthèse fermante dans ta requête...
0
01cod10 Messages postés 110 Date d'inscription mardi 30 août 2005 Statut Membre Dernière intervention 13 août 2007
8 sept. 2005 à 14:03
cool j'ai trouvé. Effectivement c'est cela qui est la cause merci.

A+
0
01cod10 Messages postés 110 Date d'inscription mardi 30 août 2005 Statut Membre Dernière intervention 13 août 2007
8 sept. 2005 à 14:17
cool j'ai trouvé. Effectivement c'est cela qui est la cause merci.
J'ai un autr problème sur la requete je veux ajouter une autre condition

$requete = "SELECT datenaissance,jesuis,pseudo,ville,pays FROM Table where ((extract( year FROM now( ) ) - EXTRACT( YEAR FROM datenaissance) BETWEEN $age AND $age1) AND jesuis='$jesuis' AND pays='$pays'";

mais cela ne marche
0
01cod10 Messages postés 110 Date d'inscription mardi 30 août 2005 Statut Membre Dernière intervention 13 août 2007
8 sept. 2005 à 14:51
ça marche. j'ai fais quelque chose dans ma table et j'aimerai avoir votre avis la dessus.

Lorsque l'utilisateur n'envoie pas de photo mon script j'upload une image sur laquelle il y a pas de photo. Cette photo apparait dans ma galerie photo. je ne sais si c'est bien de procéder comme cela?
0
Rejoignez-nous