Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD
PHP & SGBD Forum d'entraide sur les SGBD avec PHP. Avant de poster : FAQ BDD, toutes les FAQ PHP, cours BDD et sources BDD
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 03/08/2007, 23h29   #1
Invité de passage
 
Inscription : avril 2007
Messages : 32
Détails du profil
Informations forums :
Inscription : avril 2007
Messages : 32
Points : 3
Points : 3
Par défaut [SQL] afficher le prochain anniversaire

Bonjour j'utilise ce scripte pour afficher la liste des anniversaires:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
<?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 :))) :
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 />";
?>
Mais j'aimerais afficher aussi sur ma page d'accueil le nom du prochain anniversaire.
doublemetre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/08/2007, 23h40   #2
Expert Confirmé
 
Avatar de Séb.
 
Inscription : mars 2005
Messages : 2 827
Détails du profil
Informations personnelles :
Âge : 34
Localisation : France

Informations professionnelles :
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : mars 2005
Messages : 2 827
Points : 3 459
Points : 3 459
ORDER BY + LIMIT pour ne récupérer que le dernier anniversaire.
__________________
Un problème exposé clairement est déjà à moitié résolu
Keep It Smart and Simple
Séb. est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/08/2007, 23h53   #3
Invité de passage
 
Inscription : avril 2007
Messages : 32
Détails du profil
Informations forums :
Inscription : avril 2007
Messages : 32
Points : 3
Points : 3
Merci de me répondre si vite, étant débutant peux-tu m'aider en me donnant un exemple ?
doublemetre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/08/2007, 13h37   #4
Expert Confirmé
 
Avatar de Séb.
 
Inscription : mars 2005
Messages : 2 827
Détails du profil
Informations personnelles :
Âge : 34
Localisation : France

Informations professionnelles :
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : mars 2005
Messages : 2 827
Points : 3 459
Points : 3 459
Pour afficher le prochain anniversaire :

Code SQL :
1
2
3
4
5
SELECT ALL ...
FROM ...
WHERE DATE_FORMAT(date_anniversaire, '%m%D') > DATE_FORMAT(NOW( ), '%m%D')
ORDER BY date_anniversaire ASC
LIMIT 1

À améliorer car tu ne récupéreras qu'un tuple, même s'il y a plusieurs "prochains anniversaires" la même date.
__________________
Un problème exposé clairement est déjà à moitié résolu
Keep It Smart and Simple
Séb. est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/08/2007, 14h49   #5
Invité de passage
 
Inscription : avril 2007
Messages : 32
Détails du profil
Informations forums :
Inscription : avril 2007
Messages : 32
Points : 3
Points : 3
j'ai ce message d'erreur :
Citation:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '.. FROM ... WHERE DATE_FORMAT(date, '%m%D') > DATE_FORMAT(NOW( ), '%m%D') ORDER ' at line 1
doublemetre est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 17h31.


 
 
 
 
Partenaires

Hébergement Web