8791 sujets
Encore un petit prob.
J'utilise une page qui affiche la liste des anniversaire de tout les membres.
Mais un membre à donné comme date qui est enregistré comme : 1966-08-02(2 aout 1966) dans la base de donné c'est bien juste mais il ne s'affiche pas sur ma page anniversaire pourquoi ?
voici le code que j'utilise :
Et si je pouvais aussi avoir les date en francais.
Modifié par doublemetre (07 Aug 2007 - 23:01)
J'utilise une page qui affiche la liste des anniversaire de tout les membres.
Mais un membre à donné comme date qui est enregistré comme : 1966-08-02(2 aout 1966) dans la base de donné c'est bien juste mais il ne s'affiche pas sur ma page anniversaire pourquoi ?
voici le code que j'utilise :
<?php
$CONFIG['hostname'] = "localhost"; //mettez les paramètres de votre base
$CONFIG['database'] = "***"; //la meme chose que username pour free
$CONFIG['username'] = "***";
$CONFIG['password'] = "***";
$CONFIG['table'] = "***";
$n = 360; //nombre de jours de prévision
$sql = mysql_connect($CONFIG['hostname'], $CONFIG['username'], $CONFIG['password']) or die(mysql_error());
mysql_select_db($CONFIG['database'], $sql);
$result = mysql_query("SELECT
pseudo,
nom,
DATE_FORMAT(date, '%e %b.') AS datef,
(YEAR(CURRENT_DATE)-YEAR(date)) - (RIGHT(CURRENT_DATE,5)<=RIGHT(date,5)) +1 AS age,
TO_DAYS(CONCAT(LEFT(CURRENT_DATE,5), RIGHT(date, 5))) - TO_DAYS(CURRENT_DATE) AS diff,
DATE_FORMAT(CONCAT(YEAR(CURRENT_DATE),'-12-31'), '%j') AS nbj
FROM ".$CONFIG['table']) or die(mysql_error());
$i=0;
while($row = mysql_fetch_array($result)){
if($row['diff']<0) $row['diff'] = $row['diff'] + $row['nbj'];
if($row['diff']<$n and $row['datef']!=""){
$tab[$i][0] = $row['diff'];
$tab[$i]['pseudo'] = $row['nom'];
$tab[$i]['age'] = $row['age'];
$tab[$i]['dans'] = $row['diff'];
$tab[$i]['date'] = $row['datef'];
}
$i++;
}
//tout est proprement rangé dans $tab maintenant
//formatage à votre guise (ex: si 0 jours mettre en rouge [smile])) :
foreach($tab as $ligne) echo "<font color=#566ABD><b> - ".$ligne['pseudo']."</b></font> aura ".$ligne['age']." ans dans ".$ligne['dans']." jours (le <b>".$ligne['date']."</b>)<br />";
?>
Et si je pouvais aussi avoir les date en francais.

Modifié par doublemetre (07 Aug 2007 - 23:01)
Salut,
à l'heure à laquelle je poste (minuit passé) ton script devrait fonctionner sans aucune modification...
Magique non ?
Et bien... non... C'est simplement parce que tu as une variable $n = 360; qui limite la recherche du Select... Donc pour ne plus avoir de surprises il faudrait la passer à 366...
Plus généralement j'ai l'impression que tu reprends des codes sans bien comprendre ce qu'ils font
... Comme tu as dû le lire dans les règles du forum :
) et d'autre part c'est beaucoup moins intéressant de te dépanner (
)...
Pour prendre un exemple, en relisant le code que je t'ai donné la dernière fois, il y a quasiment la solution à tes dates en français...
Bon, désolé pour le côté moralisateur... et bon code
.
A+
à l'heure à laquelle je poste (minuit passé) ton script devrait fonctionner sans aucune modification...
Magique non ?

Et bien... non... C'est simplement parce que tu as une variable $n = 360; qui limite la recherche du Select... Donc pour ne plus avoir de surprises il faudrait la passer à 366...
Plus généralement j'ai l'impression que tu reprends des codes sans bien comprendre ce qu'ils font

a écrit :D'une part tu n'augmentes pas tes connaissances (ce qui est dommage
16- Ceci est une communauté d'entraide, pas de travail à votre place
Ce forum a pour vocation d'échanger des connaissances. Les membres ne sont pas là pour faire le travail à votre place. Il est donc inutile de demander des scripts tout faits, des codes à faire pour vous. On vous donnera les moyens d'y parvenir vous-même, sans vous apporter le code sur un plateau d'argent.


Pour prendre un exemple, en relisant le code que je t'ai donné la dernière fois, il y a quasiment la solution à tes dates en français...
Bon, désolé pour le côté moralisateur... et bon code

A+
Désolé de t'embêter encore, mais étant débutant . . .
voilà ce que j'ai fait, et ca ne vas pas.
Et on change quoi pour que la liste des anniversaires apparaissent dans l'orde du plus pret au plus loin de la date d'anniversaire.
Modifié par doublemetre (10 Aug 2007 - 20:40)
voilà ce que j'ai fait, et ca ne vas pas.
<?php
function Mois($month) {
$mois = array('1'=>'Janvier', 'Février', 'Mars', 'Avril', 'Mai', 'Juin', 'Juillet', 'Août', 'Septembre', 'Octobre', 'Novembre', 'Décembre');
return $mois[$month];
}
$CONFIG['hostname'] = "localhost"; //mettez les paramètres de votre base
$CONFIG['database'] = "***"; //la meme chose que username pour free
$CONFIG['username'] = "***";
$CONFIG['password'] = "***";
$CONFIG['table'] = "***";
$n = 366; //nombre de jours de prévision
$sql = mysql_connect($CONFIG['hostname'], $CONFIG['username'], $CONFIG['password']) or die(mysql_error());
mysql_select_db($CONFIG['database'], $sql);
$result = mysql_query("SELECT
pseudo,
nom,
DATE_FORMAT(date, '%e %b.') AS datef,
(YEAR(CURRENT_DATE)-YEAR(date)) - (RIGHT(CURRENT_DATE,5)<=RIGHT(date,5)) +1 AS age,
TO_DAYS(CONCAT(LEFT(CURRENT_DATE,5), RIGHT(date, 5))) - TO_DAYS(CURRENT_DATE) AS diff,
DATE_FORMAT(CONCAT(YEAR(CURRENT_DATE),'-12-31'), '%j') AS nbj,month(date) as mois
FROM ".$CONFIG['table']) or die(mysql_error());
$requete = "SELECT pseudo, nom, day(date) as jour, month(date) as mois FROM ".$CONFIG['table']." WHERE ((month(date) * 100) + day(date))='".$mois_jour_now."'";
$i=0;
while($row = mysql_fetch_array($result)){
if($row['diff']<0) $row['diff'] = $row['diff'] + $row['nbj'];
if($row['diff']<$n and $row['datef']!=""){
$tab[$i][0] = $row['diff'];
$tab[$i]['pseudo'] = $row['nom'];
$tab[$i]['age'] = $row['age'];
$tab[$i]['dans'] = $row['diff'];
$tab[$i]['date'] = $row['datef'];
}
$i++;
}
//tout est proprement rangé dans $tab maintenant
//formatage à votre guise (ex: si 0 jours mettre en rouge [smile])) :
foreach($tab as $ligne) echo "<font color=#566ABD><b> - ".$ligne['pseudo']."</b></font> aura ".$ligne['age']." ans dans ".$ligne['dans']." jours (le <b>".Mois($ligne['date'])."</b>)<br />";
?>
Et on change quoi pour que la liste des anniversaires apparaissent dans l'orde du plus pret au plus loin de la date d'anniversaire.
Modifié par doublemetre (10 Aug 2007 - 20:40)
Salut doublemetre
,
voici un code qui devrait régler ton problème :
Je te rappelle quand même que ce forum est dédié aux standards et pas aux questions génériques de PHP (même si parfois cela déborde un peu)
. Tu aurais sans doute tout intérêt à consulter un site plus générique comme phpdebutant ou l'un de ceux cités dans ce post.
Bonne continuation !

voici un code qui devrait régler ton problème :
<?php
function Mois($month) {
$mois = array('1'=>'Janvier', 'Février', 'Mars', 'Avril', 'Mai', 'Juin', 'Juillet', 'Août', 'Septembre', 'Octobre', 'Novembre', 'Décembre');
return $mois[$month];
}
$CONFIG['hostname'] = "localhost"; //mettez les paramètres de votre base
$CONFIG['database'] = "test"; //la meme chose que username pour free
$CONFIG['username'] = "root";
$CONFIG['password'] = "";
$CONFIG['table'] = "anniv";
$sql = mysql_connect($CONFIG['hostname'], $CONFIG['username'], $CONFIG['password']) or die(mysql_error());
mysql_select_db($CONFIG['database'], $sql);
$result = mysql_query("SELECT
pseudo,
nom,
DATE_FORMAT(date, '%e') AS jour, DATE_FORMAT(date, '%c') AS mois,
(YEAR(CURRENT_DATE)-YEAR(date)) - (RIGHT(CURRENT_DATE,5)<=RIGHT(date,5)) +1 AS age,
TO_DAYS(CONCAT(LEFT(CURRENT_DATE,5), RIGHT(date, 5))) - TO_DAYS(CURRENT_DATE) AS diff,
DATE_FORMAT(CONCAT(YEAR(CURRENT_DATE),'-12-31'), '%j') AS nbj
FROM ".$CONFIG['table']) or die(mysql_error());
$i=0;
while($row = mysql_fetch_array($result)){
if($row['diff']<0) $row['diff'] = $row['diff'] + $row['nbj'];
$tab[$i][0] = $row['diff'];
$tab[$i]['nom'] = $row['nom'];
$tab[$i]['pseudo'] = $row['pseudo'];
$tab[$i]['age'] = $row['age'];
$tab[$i]['dans'] = $row['diff'];
$tab[$i]['jour'] = $row['jour'];
$tab[$i]['mois'] = $row['mois'];
$i++;
}
sort($tab);
foreach($tab as $ligne) {
if ($ligne['dans'] == 0) {
echo "<font color=#566ABD><b> - ".$ligne['nom']." (".$ligne['pseudo'].")</b></font> a ".$ligne['age']." ans aujourd'hui.</b><br />";
}
else
{
echo "<font color=#566ABD><b> - ".$ligne['nom']." (".$ligne['pseudo'].")</b></font> aura ".$ligne['age']." ans dans ".$ligne['dans']." jours (le <b>".$ligne['jour']." ".Mois($ligne['mois'])."</b>)<br />";
}
}
?>
Je te rappelle quand même que ce forum est dédié aux standards et pas aux questions génériques de PHP (même si parfois cela déborde un peu)

Bonne continuation !

Oui je vais regarder cela,
Ton code s'affichie bien mais il liste tout les membres même ceux qui n'on pas mis de date de naissance: ex
Avant j'utilisais cet ligne :
je crois que c'est ca qui faisait le tri.
Modifié par doublemetre (10 Aug 2007 - 22:57)
Ton code s'affichie bien mais il liste tout les membres même ceux qui n'on pas mis de date de naissance: ex
Vincent **(pseudo) a 2008 ans aujourd'hui.
- Yann***(pseudo) a 2008 ans aujourd'hui.
- michel (pseudo) aura 28 ans dans 22 jours (le 1 Septembre)
- Marcel (lpseudo) aura 54 ans dans 49 jours (le 28 Septembre)
- Dupont (pseudo) aura 31 ans dans 55 jours (le 4 Octobre)
Avant j'utilisais cet ligne :
if($row['diff']<$n and $row['datef']!="")
je crois que c'est ca qui faisait le tri.
Modifié par doublemetre (10 Aug 2007 - 22:57)
doublemetre a écrit :
Avant j'utilisais cet ligne :if($row['diff']<$n and $row['datef']!="")
je crois que c'est ca qui faisait le tri.
Euh... non

Pour tester qu'une date est renseignée tu peux mettre :
$i=0;
while($row = mysql_fetch_array($result)){
if($row['diff']<0) $row['diff'] = $row['diff'] + $row['nbj'];
if($row['jour']>0){
$tab[$i][0] = $row['diff'];
$tab[$i]['nom'] = $row['nom'];
$tab[$i]['pseudo'] = $row['pseudo'];
$tab[$i]['age'] = $row['age'];
$tab[$i]['dans'] = $row['diff'];
$tab[$i]['jour'] = $row['jour'];
$tab[$i]['mois'] = $row['mois'];
}
$i++;
}