IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

[SQL] afficher le prochain anniversaire


Sujet :

PHP & Base de données

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2007
    Messages : 41
    Points : 19
    Points
    19
    Par défaut [SQL] afficher le prochain anniversaire
    Bonjour j'utilise ce scripte pour afficher la liste des anniversaires:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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.

  2. #2
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 250
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 250
    Points : 8 530
    Points
    8 530
    Billets dans le blog
    17
    Par défaut
    ORDER BY + LIMIT pour ne récupérer que le dernier anniversaire.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2007
    Messages : 41
    Points : 19
    Points
    19
    Par défaut
    Merci de me répondre si vite, étant débutant peux-tu m'aider en me donnant un exemple ?

  4. #4
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 250
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 250
    Points : 8 530
    Points
    8 530
    Billets dans le blog
    17
    Par défaut
    Pour afficher le prochain anniversaire :

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    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.

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2007
    Messages : 41
    Points : 19
    Points
    19
    Par défaut
    j'ai ce message d'erreur :
    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

Discussions similaires

  1. Requête SQL : Afficher les colonnes en ligne, et vice versa
    Par paflolo dans le forum Langage SQL
    Réponses: 7
    Dernier message: 17/03/2009, 09h16
  2. [SQL] Afficher date d'enregistrement
    Par citadelle dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 10/06/2006, 18h20
  3. [SQL] Afficher du HTML extrait d'une BD
    Par Linaa dans le forum PHP & Base de données
    Réponses: 9
    Dernier message: 20/04/2006, 11h13
  4. [PL/SQL] afficher le contenu dsql%found ?
    Par sali dans le forum Oracle
    Réponses: 2
    Dernier message: 11/02/2006, 03h46
  5. [sql] afficher deux champs de deux tables sans jointure
    Par Hell dans le forum Langage SQL
    Réponses: 6
    Dernier message: 30/06/2005, 12h38

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo