8791 sujets

Développement web côté serveur, CMS

Bonjour,

J'ai une table qui contient une liste de personnes avec leur date de naissance. J'ai une fonction php qui me permet d'afficher le signe astrologique de chacun d'entres eux en fonction de cette date.
Ce que je n'arrive pas à faire, c'est l'inverse : comment sélectionner toutes les personnes qui sont lion par exemple ?
J'ai essayé avec un select / between mais je pense que c'est n'est pas assez précis.

Merci pour votre aide.
Bonjour,

Je voudrai savoir comment tu as enregistrée les dates dans ta base de donnée ? car cela suivant la facon que tu les a enregistrée il y a plusieurs façon je pense.

Si c'est que pour toi je dirai qu'il faudrai selectionner tout le monde et ensuite faire le tri en php, car la fonction between risque d'etre limité avec les années ou il faudrai la conjugé avec des day et month sans doute...
Oui, pour le tri php c'est simple Smiley lol tu fais une boucle et tu enleves les année comme cela il reste plus qu'a verifier les mois et jours pour afficher le resultat si tu veux un exemple en php je peux te le faire.

Vais chercher en sql directement pour me renseigner car je suis un peu curieux Smiley langue
voici, pour l'exemple du lion

$moisdebut=7;
$moisfin=8;
$jourdebut=23;
$jourfin=24;
while($date=mysql_fetch_assoc($query)){
	$date=explode('-',$date['date']);
	if(($date[1]>=$moisdebut)&&($date[2]>=$jourdebut)){
		if(($date[1]<=$moisfin)&&($date[2]<=$jourfin)){
			echo $date['date'];
		}
	}
}

Ensuite faut que tu modifies les variables en fonction de ceux que tu souhaits.

Je cherche toujours pas mysql, si quelqu'un a une petit idée.
Salut Smiley cligne ,

tu pourrais faire quelque chose comme ça :
SELECT nom, DATE_FORMAT(date_anniv, '%e %b. %Y') AS anniv FROM table 
WHERE (( month(date_anniv) * 100 ) + day(date_anniv)) 
between 724 and 823
Les limites min et MAX sont exprimées en MMJJ (mois jour).

Mais le plus simple serait quand même de renseigner directement un champ signe au moment de l'INSERT Smiley langue .

A+
Felicitation Heyoan pour la requete, crée un nombre et le comparé après pour le between, c'est vrai que cella est beaucoup plus simple que mon code Smiley lol ( un peu bordelique.).

Et entrée le signe à l'insert serai parfait mais je crois qu'il ne pouvais pas toucher à sa bdd ...
Oui bravo Heyoan Smiley smile
ça marche parfaitement et j'avais vraiment besoin d'aide parce que vue la requête, j'y serais jamais arrivé tout seul.
Merci !
Rectification : y a un souci avec capricorne qui va du 22-12 au 22-01.

Pour créer la requete, je précise donc pour le between :
$deb = 1222;
$fin = 120;

Mais ça donne aucun résultat contrairement aux autres signes...
j'ai rien dit Smiley lol je suis bête j'ai pas reflechi Smiley bawling

Le probleme et que normalement ca devrai etre s'arreter entre deux, donc tu devrai peut etre faire une deuxieme requete rien que pour celui la car il est entre deux du style rajouter une condition en plus pour bien etre spécifique.

SELECT nom, DATE_FORMAT(date_anniv, '%e %b. %Y') AS anniv FROM table 
WHERE (( month(date_anniv) * 100 ) + day(date_anniv)) 
between 1222 and 1300 or (( month(date_anniv) * 100 ) + day(date_anniv)) 
between 0 and 120


Donc au lieu de mettre seulement $deb et $fin en variabel mais plutot $where qui comprendra cela.


$where=(( month(date_anniv) * 100 ) + day(date_anniv)) 
between 1222 and 1300

Et tu fais une fonction if pour le capricorne.
Oui c'est bon avec cette requete spécifique pour le capricorne.
J'ai quelques signes qui trainent dans la mauvaise catégorie mais c'est sans doute parce que je n'ai pas mis tout à fait les mêmes périodes pour ma fonction qui détermine les signes et celles de mes différentes requetes. D'ailleurs c'est difficiles de trouver les périodes officielles pour les signes du zodiaques. Beaucoup de sites donnent des périodes différentes.
En tous cas merci Halindel et Heyoan. Je laisse le sujet ouvert au cas où...
Sur wikipedia tu as les bonne periode je pense Smiley cligne et au plaisir Smiley ravi
Modifié par Halindel (11 Sep 2007 - 10:33)