LISTE DES ANNIVERSAIRES POUR LES N PROCHAINS JOURS, DANS L'ORDRE D'ARRIVEES (PHP
ehmarc
Messages postés393Date d'inscriptionmardi 2 décembre 2003StatutMembreDernière intervention29 septembre 2008
-
8 nov. 2004 à 10:07
cs_allamah
Messages postés6Date d'inscriptionvendredi 19 mai 2006StatutMembreDernière intervention12 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.
cs_allamah
Messages postés6Date d'inscriptionvendredi 19 mai 2006StatutMembreDernière intervention12 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és22Date d'inscriptionjeudi 29 novembre 2007StatutMembreDerniè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és22Date d'inscriptionjeudi 29 novembre 2007StatutMembreDerniè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és496Date d'inscriptionmercredi 30 juin 2004StatutMembreDernière intervention29 juillet 20091 2 août 2008 à 21:53
Si c'est pas beau la vie!
10/10
negfreddy
Messages postés16Date d'inscriptionmercredi 26 janvier 2005StatutMembreDernière intervention25 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és24Date d'inscriptionmercredi 15 février 2006StatutMembreDernière intervention17 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és1Date d'inscriptiondimanche 9 octobre 2005StatutMembreDerniè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és6Date d'inscriptionmercredi 23 juillet 2003StatutMembreDernière intervention26 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és6Date d'inscriptionmercredi 23 juillet 2003StatutMembreDernière intervention26 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és393Date d'inscriptionmardi 2 décembre 2003StatutMembreDernière intervention29 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és64Date d'inscriptionvendredi 28 mai 2004StatutMembreDerniè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és393Date d'inscriptionmardi 2 décembre 2003StatutMembreDernière intervention29 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é
10 avril 2010 à 05:19
la ligne en questio : " foreach($tab as $ligne) echo "".$ligne['nom']." aura ".$ligne['age']." ans dans ".$ligne['dans']." jours (le ".$ligne['date'].")
";
"
20 mai 2009 à 12:39
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 ;)
19 mai 2009 à 18:13
2 août 2008 à 21:53
10/10
24 juil. 2008 à 10:03
<?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>
29 juil. 2007 à 00:15
J'aimerais afficher seulement les anniversaires.
9 oct. 2005 à 00:24
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'].")
";
}
26 déc. 2004 à 17:01
26 déc. 2004 à 16:09
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
8 nov. 2004 à 18:18
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é...
8 nov. 2004 à 14:29
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.
8 nov. 2004 à 10:07
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é
++