LISTE DES ANNIVERSAIRES POUR LES N PROCHAINS JOURS, DANS L'ORDRE D'ARRIVEES (PHP

ehmarc Messages postés 393 Date d'inscription mardi 2 décembre 2003 Statut Membre Dernière intervention 29 septembre 2008 - 8 nov. 2004 à 10:07
cs_allamah Messages postés 6 Date d'inscription vendredi 19 mai 2006 Statut Membre Dernière intervention 12 mai 2012 - 10 avril 2010 à 05:19
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/27420-liste-des-anniversaires-pour-les-n-prochains-jours-dans-l-ordre-d-arrivees-php-mysql

cs_allamah Messages postés 6 Date d'inscription vendredi 19 mai 2006 Statut Membre Dernière intervention 12 mai 2012
10 avril 2010 à 05:19
Bonjour, Je suis un peu nouveau en php et j'ai voulu utiliser cette source. A l'exécution j'ai cette erreur qui s'affiche. Merci de m'indiquer quoi faire."Warning: Invalid argument supplied for foreach() in D:\xampp\htdocs\RTC_Riviera\site\accueil.php on line 101"
la ligne en questio : " foreach($tab as $ligne) echo "".$ligne['nom']." aura ".$ligne['age']." ans dans ".$ligne['dans']." jours (le ".$ligne['date'].")
";
"
cs_cha7ri Messages postés 22 Date d'inscription jeudi 29 novembre 2007 Statut Membre Dernière intervention 2 décembre 2009
20 mai 2009 à 12:39
et aussi 10/10 pour negfreddy

mais ce dernier script ne donne juste ceux qui vont fêter l'anniversaire aujourd'hui......

j'aimerai bien être averti avant ,,, c'est à dire j'aimerai bien avoir une liste des users qui vont fêter l'anniversaire cette semaine.....

merci ;)
cs_cha7ri Messages postés 22 Date d'inscription jeudi 29 novembre 2007 Statut Membre Dernière intervention 2 décembre 2009
19 mai 2009 à 18:13
merci,tu mérite mieux mais je n'ai trouvé que 10 au maximum
GillesWebmaster Messages postés 496 Date d'inscription mercredi 30 juin 2004 Statut Membre Dernière intervention 29 juillet 2009 1
2 août 2008 à 21:53
Si c'est pas beau la vie!
10/10
negfreddy Messages postés 16 Date d'inscription mercredi 26 janvier 2005 Statut Membre Dernière intervention 25 mai 2009
24 juil. 2008 à 10:03
j'ai trouver sa si tu veux si , sa peut t'aidai regarde

<?php
$date= date('m-d');
$date_match="%$date";
$sql_annif=mysql_query("SELECT pseudo, date_naiss, genre_mb FROM membre WHERE genre_mb NOT LIKE 'groupe' AND date_naiss LIKE '$date_match' ORDER BY date_naiss DESC");
while ($annif = mysql_fetch_row($sql_annif)) {
$pseudo=$annif[0];
$date=$annif[1];
list($annee, $mois, $jour) = explode('-', $date);
$today['mois'] = date('n');
$today['jour'] = date('j');
$today['annee'] = date('Y');
$annees = $today['annee'] - $annee;
if ($today['mois'] <= $mois) {
if ($mois == $today['mois']) {
if ($jour > $today['jour']) {
$annees--;
}
} else {
$annees--;
}
}
list($annee,$mois,$jour) = explode('-',$date);
$ddn = "$jour/$mois/$annee";
$genre_mb=$annif[2];
if ($genre_mb == 'femme') {
$e="e";
} else {
$e="";
}
echo "\t<tr>\n
\t\t<td> $pseudo </td>
\t\t<td align ="right">né$e le </td>
\t\t<td>$ddn ($annees ans)</td>
\t</tr>\n";
}
mysql_close($connect); ?>
</table>
cs_doublemetre Messages postés 24 Date d'inscription mercredi 15 février 2006 Statut Membre Dernière intervention 17 décembre 2018
29 juil. 2007 à 00:15
Mais comment exclure les membres qui n'on pas entré de date de naissance ?
J'aimerais afficher seulement les anniversaires.
katsuhito Messages postés 1 Date d'inscription dimanche 9 octobre 2005 Statut Membre Dernière intervention 9 octobre 2005
9 oct. 2005 à 00:24
En réponse à GLEYNE. Pour exclure les dates expirées, tu peux effectuer la manipulation suivante :

modifier la ligne 26 :
if($row['diff']<$n){

par :
if(($row['diff']<$n)&&($row['diff']>=0)){

Si tu souhaites malgré tout conserver les dates expirées et mieux organiser le tout, il faut adapter la ligne 41 en effectuant des tests sur la valeur $ligne['dans'], du type :

if($ligne['dans']=0) {
echo "".$ligne['nom']." a ".$ligne['age']." ans aujourd'hui (le ".$ligne['date'].")
";
}
cs_gleyne Messages postés 6 Date d'inscription mercredi 23 juillet 2003 Statut Membre Dernière intervention 26 décembre 2004
26 déc. 2004 à 17:01
dans votre exemple, il n'y a pas 47 jours entre le 8/11/85 et le 6/01/86
cs_gleyne Messages postés 6 Date d'inscription mercredi 23 juillet 2003 Statut Membre Dernière intervention 26 décembre 2004
26 déc. 2004 à 16:09
Bonjour,
j'ai testé ce programme et j'ai des résultats étonnants
voici le début de ma liste
matahali aura 23 ans dans -5 jours (le 2 Jan.)
eloise aura 29 ans dans -3 jours (le 4 Jan.)
sheeryas aura 24 ans dans -3 jours (le 4 Jan.)
doriane aura 20 ans dans -2 jours (le 5 Jan.)
lili aura 20 ans dans -1 jours (le 6 Jan.)
caroline aura 22 ans dans 0 jours (le 7 Jan.)
irielle aura 20 ans dans 0 jours (le 26 Dec.)
pamela aura 28 ans dans 0 jours (le 26 Dec.)
eva aura 20 ans dans 1 jours (le 27 Dec.)
monia aura 34 ans dans 1 jours (le 27 Dec.)
pauline aura 17 ans dans 1 jours (le 8 Jan.)
ghania aura 25 ans dans 2 jours (le 28 Dec.)
clara aura 18 ans dans 3 jours (le 10 Jan.)
flora aura 18 ans dans 3 jours (le 29 Dec.)
geraldine aura 24 ans dans 3 jours (le 10 Jan.)
henda aura 21 ans dans 4 jours (le 30 Dec.)
nadia aura 30 ans dans 4 jours (le 11 Jan.)
solange aura 19 ans dans 4 jours (le 30 Dec.)
alia aura 20 ans dans 5 jours (le 31 Dec.)
christine aura 22 ans dans 5 jours (le 12 Jan.)
kalliopi aura 30 ans dans 5 jours (le 12 Jan.)

y a t'il une modif à faire
merci
cordialement
gleyne@free.fr
ehmarc Messages postés 393 Date d'inscription mardi 2 décembre 2003 Statut Membre Dernière intervention 29 septembre 2008
8 nov. 2004 à 18:18
C surement pas le niveau expert que je voulai dire plutot debutant+ (donc initié)

ton code ne présente qu'un simple affichage de donnée et une belle requete (il est vrai tas deja du plancher dessus un peu) avec une utilisatin des fonctions dates de mysql qui pourrait etre optimisée mais bon...

En fait sur le premier message je pensait que initié c'étè le niveau expert (c donc moi qui ai fait une erreur)
désolé...
antoine129 Messages postés 64 Date d'inscription vendredi 28 mai 2004 Statut Membre Dernière intervention 5 juin 2006
8 nov. 2004 à 14:29
oui mais mon problème était pour trier par délai, car au départ j'avais fait un where mais le tri était impossible dans ce cas précis (ou trop compliqué pour moi :P)
Donc j'ai décomposé en un tableau :)
Mais c'est vrai que ça manque d'optimisation
Et pour le niveau tu as raison je vais changer ça.
ehmarc Messages postés 393 Date d'inscription mardi 2 décembre 2003 Statut Membre Dernière intervention 29 septembre 2008
8 nov. 2004 à 10:07
salut

bonne utilisation des dates sous mysql

seul petit reproche dans ta requete ca serait pas plus simple et plus rapide de mettre une clause where ca eviterait de faire du traitement pour certain anniversaire dans le cas d'une grosse base (ca evite de tout parcourir) ce qui optimiserait le code ca evite
if($row['diff']<$n){} cette condition

mais pour moi un code comme ca c plus intermediaire que initié

++
Rejoignez-nous