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 :

Afficher prochain enregistrement


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 54
    Par défaut Afficher prochain enregistrement
    Bonjour,

    Je viens vous demander conseil car j'ai un souci avec mon code.
    J'ai des donnée dans ma base classée par date, ce que je veux c'est que par rapport à la date du jour, ca m'affiche l'évenement d'après.
    J'ai plus aou moins réussi mais voilà que je peux pas associé ORDER BY ASC avec LIMIT par contre avec desc pas de souci.
    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
     
          <?php 
    $str_articles_nf = "SELECT dateArticles_nf,idArticles_nf,Heure,titreArticles_nf,TypeMatch,Lieu,DATE_FORMAT(dateArticles_nf, '%d-%m-%Y') as datefr FROM articles_nf ORDER BY dateArticles_nf limit 1";
                            echo "<table width='100%' heigth='100%' border='0' cellspacing='0' cellpadding='0'>";
    					$result_articles_nf =mysql_query ($str_articles_nf);
    					while ($articles_nf =mysql_fetch_object($result_articles_nf))
    					{
    						$today=time ();
    						$dateMatch="$articles_nf->dateArticles_nf";
    						$dateM=strtotime($dateMatch);
    				if ($today <= $dateM){
     
    						echo "<tr align='center'>";
    						echo "<td class='servette'>".$articles_nf->datefr."&nbsp;,".$articles_nf->Heure."<br>".$articles_nf->titreArticles_nf."<br>".$articles_nf->TypeMatch."<br>".$articles_nf->Lieu."<br><br></td></tr>";}
     
    					}
    					echo "</table>"; ?>
    Je sais que c'est tirer par les cheveux mais pourrais je dans ce cas limiter a un affichage autrement que par la condition LIMIT?
    J'ai pensé a WHERE avec beetwen mais je vois pas comment placé la date du jour dedans.
    Merci d'avance pour votre aide.

  2. #2
    Membre éprouvé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2010
    Messages
    77
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2010
    Messages : 77
    Par défaut
    Ben tu enleve ton limit et dans ton parcours des resultats tu traite que le premier enregistrement !!!

    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
     
         <?php 
    $nbr_a_afficher = 0;
    $str_articles_nf = "SELECT dateArticles_nf,idArticles_nf,Heure,titreArticles_nf,TypeMatch,Lieu,DATE_FORMAT(dateArticles_nf, '%d-%m-%Y') as datefr FROM articles_nf ORDER BY dateArticles_nf ";
                            echo "<table width='100%' heigth='100%' border='0' cellspacing='0' cellpadding='0'>";
    					$result_articles_nf =mysql_query ($str_articles_nf);
    					while ($articles_nf =mysql_fetch_object($result_articles_nf))
    					{
    if($nbre_a_afficher==1)break;
    $nbre_a_afficher++;
    						$today=time ();
    						$dateMatch="$articles_nf->dateArticles_nf";
    						$dateM=strtotime($dateMatch);
    				if ($today <= $dateM){
     
    						echo "<tr align='center'>";
    						echo "<td class='servette'>".$articles_nf->datefr."&nbsp;,".$articles_nf->Heure."<br>".$articles_nf->titreArticles_nf."<br>".$articles_nf->TypeMatch."<br>".$articles_nf->Lieu."<br><br></td></tr>";}
     
    					}
    					echo "</table>"; ?>

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    97
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 97
    Par défaut
    Citation Envoyé par fredd_75 Voir le message
    Ben tu enleve ton limit et dans ton parcours des resultats tu traite que le premier enregistrement !!!
    Non, non, non !!! C'est absolument contre performant de récupérer tout le contenu d'une table pour n'utiliser qu'une ligne.
    Si dans une table j'ai un million de tuples, il me parait assez invraisemblable de récupérer la totalité pour n'en exploiter qu'une ligne.

    @sfc2000: l'énoncé de ton problème est assez flou, mais je vais essayer de comprendre...

    1/ Dans ta requête, tu n'as pas de clause WHERE qui limite le nombre de résultat.
    Si tu veux uniquement les articles dont dateArticles_nf est inférieur à la date du jour, tu peux déjà mettre un :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    $str_articles_nf = "SELECT
    	dateArticles_nf,
    	idArticles_nf,
    	Heure,
    	titreArticles_nf,
    	TypeMatch,
    	Lieu,
    	DATE_FORMAT(dateArticles_nf, '%d-%m-%Y') as datefr
    FROM articles_nf
    WHERE dateArticles_nf <= ".date("d/m/Y",time())."
    ORDER BY dateArticles_nf DESC
    LIMIT 1"
    2/ ASC et DESC fonctionnent tous les deux avec LIMIT
    cf : http://dev.mysql.com/doc/refman/5.1/en/select.html

    Si tu développe un peu plus les points qui te bloquent et que tu donnes un/des exemple(s), ça pourrait aider à comprendre et à mieux répondre.

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Février 2010
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 14
    Par défaut
    merci pour votre réponse.

    Oui asc ou desc fonctionne avec limit mais il doit y avoir quelque chose qui coince dans mon script car ca ne marche pas.

    J'ai essayé votre code, il m'affiche uniquement la date vierge au format US.

    Y aurait il un problème avec ma transformation de date? serais ce ca qui bloque tout?

    Ce que je cherche a faire, ex :

    Il y a eu un match de foot hier, dans mon calendrier il y en a 1 demain puis un autre dans 10 jours.

    Sur ma page d'accueil doit s afficher le match de demain et pas celui de hier ni celui dans 10 jours.
    Et comme je suis feignant je voudrais que ca se fasse automatiquement.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Février 2010
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 14
    Par défaut
    Pas d'idée

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    97
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 97
    Par défaut
    Peux-tu nous remonter les erreurs que tu rencontres.

Discussions similaires

  1. [MySQL] Comment afficher le prochain enregistrement
    Par legrandse dans le forum PHP & Base de données
    Réponses: 9
    Dernier message: 03/09/2014, 14h55
  2. Réponses: 2
    Dernier message: 13/05/2008, 21h57
  3. Afficher un enregistrement selon un critère saisie.
    Par pegase23 dans le forum Access
    Réponses: 2
    Dernier message: 23/06/2005, 10h54
  4. [MySQL] Afficher un enregistrement de façon aléatoire
    Par guy2004 dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 06/02/2005, 19h36
  5. Afficher les enregistrements si le count() vaut 0
    Par j14z dans le forum Requêtes
    Réponses: 7
    Dernier message: 06/04/2004, 09h51

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