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 :

Souci de boucle manque un message a l'affichage [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Janvier 2013
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien réseau

    Informations forums :
    Inscription : Janvier 2013
    Messages : 34
    Points : 28
    Points
    28
    Par défaut Souci de boucle manque un message a l'affichage
    bonjour a tous
    j’essaie de faire un script pour afficher des messages.
    ce script comporte une pagination qui est opérationnelle.
    mon souci c'est qu'il ne me remonte pas le dernier message.
    si je mets 10 message par page il m'en affiche 8 sur les neuf existant.
    (il manque le dernier rentrée soit le premier de la liste.
    si je met 3 par page, il ne m'affiche que 2 messages sur 3 pages.
    voici mon script
    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
    53
    <?php//pagination des messages 
    $req = $bdd->prepare('SELECT COUNT(etat) as nbmess FROM message WHERE etat = 2')or die(print_r($bdd->errorInfo()));
    $req->execute();
    $pagination = $req->fetch(PDO::FETCH_ASSOC);
     
    $nbmess = $pagination['nbmess'];
    //affichage par page
    $perpage = 10;
    //page en cours
     
    $nbpage = ceil($nbmess/$perpage);
     
    if(isset($_GET['p']) && $_GET['p']>0 && $_GET['p']<=$nbpage)
    {
    $scpage = $_GET['p'];
    }
    else
    {
    	$scpage = 1 ;
    }
     
    //recupération des messages
    $req2 = $bdd->prepare("SELECT * FROM message WHERE compte = :id AND etat = 2 ORDER BY date_heure DESC LIMIT ".(($scpage-1)*$perpage).",$perpage")or die(print_r($bdd->errorInfo()));
    $req2->execute(array(":id"=>$_GET['log']));
    $mess = $req2->fetch();?>
     
    <div id="message">
     
    <?php while ($mess=$req2->fetch())
        {
    //affichage des mois en francais
    $mois = array("","Janvier","Février","Mars","Avril","Mai","Juin","Juillet","Août","Septembre","Octobre","Novembre","Décembre");
    $datefr =  ''.date("d", strtotime($mess['date_heure'])).'  '.$mois[date("n", strtotime($mess['date_heure']))].'  '.date("Y", strtotime($mess['date_heure'])).' à '.date("H", strtotime($mess['date_heure'])).' H '.date("i", strtotime($mess['date_heure'])).'';
    //affichage du message
      echo '<p><b style="text-align:right;font-style:italic;font-size:0.6em">Ajouté le  '.$datefr.'<br/></b>' .$mess['message']. '<br/><b style="font-weight:bold">'.$mess['messagenom'].'</b><br/><b style="font-style:italic;font-size:0.8em;">'.$mess['lien']. '</b></p>';
     
      }
    ?>
    <p style="font-size:0.8em;text-align:right">Page:
    <?php
    for($i=1;$i<=$nbpage;$i++)
    {
    	if ($i == $scpage) //On ne met pas de lien sur la page actuelle
    	{
    		echo" $i /";
    	}
    	else
    	{
    	 echo "<a href=\"espace.php?log=$id&p=$i\">$i</a> / ";
        }
    }
    ?></p>
    </div>

  2. #2
    Membre expérimenté
    Homme Profil pro
    Développeur C++
    Inscrit en
    Avril 2012
    Messages
    771
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur C++
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2012
    Messages : 771
    Points : 1 631
    Points
    1 631
    Par défaut
    Bonjour,

    ici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <?php
    ...
    //tu récupère le premier enregistrement de ta requête
    $mess = $req2->fetch();?>
     
     
    <div id="message">
     
    <?php//Ici tu récupère le deuxième sans avoir traiter le premier et rentre dans une boucle qui traitera tous tes autres enregistrements
    //Doc tu zap le premier
    while ($mess=$req2->fetch())
        {
    La solution soit tu vire le premier fetch() soit tu passe par une boucle do{}while( fetch() );.

    Préférence pour la première solution car ton premier fetch() ne te sert à rien.
    une réponse vous a permis d'avancer ?

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Janvier 2013
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien réseau

    Informations forums :
    Inscription : Janvier 2013
    Messages : 34
    Points : 28
    Points
    28
    Par défaut
    c'etait ça j'ai viré le premier fetch() merci Exia93

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. un soucis de boucle dans un tableau
    Par Othana dans le forum VB.NET
    Réponses: 13
    Dernier message: 23/02/2011, 16h44
  2. Réponses: 12
    Dernier message: 08/10/2010, 10h23
  3. [MySQL] Boucle d'insertion message d'erreur
    Par roy-mustang dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 02/05/2009, 01h54
  4. [Debutant/WinAPI] Souci avec boucle While et GetMessage()
    Par SnowStyle dans le forum Windows
    Réponses: 11
    Dernier message: 15/10/2005, 19h19

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