Partage
  • Partager sur Facebook
  • Partager sur Twitter

afficher le résulat d'une requête sur plusieurs pages

premier enregistrement de chaque page qui ne s'affiche pas

    30 août 2006 à 12:01:16

    Bonjour
    s'il vous plait j'ai un problème si vous pouvez m'aider.
    c'est que j'affiche le résultat d'une requête sur une page et comme c'est beaucoup je gère la création d'une nouvelle page chaque fois que le nombre fixé d'enregistrement par page est atteint!(pour ça j'ai fait le copier/coller du tuto de Mateo(le livre d'or) ;) )
    Mais le problème c'est que sur toutes les pages le premier enregistrement ne se fait pas voir, je ne sais plus koi faire :(
    voici le code

    <?php
    session_start();
    if(($_SESSION['user'] == NULL)||($_SESSION['password'] == NULL))
    {
    include('connexion.php');
    }
    else
    {
    ?>
    <html>
    <head>
    <title>Liste des ordres non imprim&eacute;es</title>
    <link rel="stylesheet" type="text/css" href="style.css">
      <script language="JavaScript" src="calendar1.js"></script>
    </head>
     <body bgcolor="#FFFFFF" leftmargin="0" topmargin="0" marginwidth="0" marginheight="0">
     <?php
    if($_SESSION['privilege'] != "ADMINISTRATEUR")
    {
    include("date.php");
    }
    else
    {
    include("date_admin.php");
    }

    mysql_connect("localhost", "root"); // Connexion à MySQL
    mysql_select_db("ordre_mission"); // Sélection de la base ordre_mission

    // --------------- Etape 2 -----------------
    // On écrit les liens vers chacune des pages
    // -----------------------------------------

    // On met dans une variable le nombre d'ordres qu'on veut par page
    $nbordrepage =10;

    // On récupère le nombre total d'ordres
    $retour = mysql_query("SELECT COUNT(*) AS nb_ordre FROM ordre_mission where imprimer = 0");
    $result = mysql_fetch_array($retour);
    $totalordre = $result['nb_ordre'];

    // On calcule le nombre de pages à créer
    $nb_page = ceil($totalordre / $nbordrepage);

    // Puis on fait une boucle pour écrire les liens vers chacune des pages
    echo 'Page : ';
    for ($i = 1 ; $i <= $nb_page ; $i++)
    {
        echo '<a href="ordre_imprim.php?page=' . $i . '">' . $i . '</a> ';
    }

    // --------------- Etape 3 ---------------
    // Maintenant, on va afficher les ordres
    // ---------------------------------------

    if (isset($_GET['page']))
    {
        $page = $_GET['page']; // On récupère le numéro de la page indiqué dans l'adresse (ordre_imprim.php?page=4)
    }
    else // La variable n'existe pas, c'est la première fois qu'on charge la page
    {
        $page = 1; // On se met sur la page 1 (par défaut)
    }

    $premierordre = ($page - 1) * $nbordrepage;
    $sql = ("SELECT id_mission, objet, lieu, DATE_FORMAT(datedeb, '%d/%m/%Y') AS datedeb, nom, prenoms
             FROM ordre_mission O, postulant P
                     WHERE P.matricule_ul = O.matricule_ul
                     AND imprimer = 0
                     ORDER BY id_mission DESC LIMIT "
    . $premierordre . ", " . $nbordrepage) ;
                     //print $sql;
    $reponse = mysql_query($sql)or die (mysql_error());
    $donnees = mysql_fetch_array($reponse) ;

    if ($donnees['id_mission'] != NULL)
    { ?><form action="imprim_ok.php" method="get" >
    <table border="2" align="center" cellpadding="10">
    <caption align="top">
    <span class="Style1">Liste des ordres non imprimées</span><br>
    <br>
    </caption>
    <tr><th>Nom </th><th>Prénoms</th><th>N° ordre</th><th>Objet</th><th>Lieu </th><th>Date début</th><th>Imprimer</th>></tr> <br />
    <?php
    while ($donnees = mysql_fetch_array($reponse) )
    {
    ?>



    <tr><td><?php echo $donnees['nom']; ?></td>
    <td><?php echo $donnees['prenoms']; ?></td>
    <td><p align="right"><?php echo $donnees['id_mission']; ?></p></td>
    <td><?php echo $donnees['objet']; ?></td>
    <td><?php echo $donnees['lieu']; ?></td>
    <td><?php echo $donnees['datedeb']; ?></td>
    <td><input name="imprimer" type="checkbox" value="imprimer"></td></tr>
    <?php
    }
    mysql_close(); // Déconnexion de MySQL
    ?><tr><td colspan="7" align="center"><input name="Annuler" type="reset" value="Annuler">
    <input name="Imprimer" type="submit" value="Imprimer"></td></tr>
    </table></form>
    <?php }
    else
    { ?>
    <div  align="center"class="Style6">Aucun ordre disponible</div>
    <?php } ?>
    </body>
    </html>
    <?php } ?>

    j'ai 11 enregistrements qui doivent s'afficher (donc je dois avoir deux pages)
    il crée les deux pages, mais le 11è enregistrement (1er sur la première page) et le 1er enregistrement (1er sur la deuxième page) ne s'affichent pas!
    merci de m'aider.
    • Partager sur Facebook
    • Partager sur Twitter
      30 août 2006 à 12:15:41


      //ici tu te places au premier enregistrement ...
      $donnees = mysql_fetch_array($reponse) ;

      if ($donnees['id_mission'] != NULL)
      { ?><form action="imprim_ok.php" method="get" >
      <table border="2" align="center" cellpadding="10">
      <caption align="top">
      <span class="Style1">Liste des ordres non imprimées</span><br>
      <br>
      </caption>
      <tr><th>Nom </th><th>Prénoms</th><th>N° ordre</th><th>Objet</th><th>Lieu </th><th>Date début</th><th>Imprimer</th>></tr> <br />
      <?php
      //tu le fais aller au deuxième sans avoir affiché le premier ...
      while ($donnees = mysql_fetch_array($reponse) )
      {
      ?>



      <tr><td><?php echo $donnees['nom']; ?></td>
      <td><?php echo $donnees['prenoms']; ?></td>
      <td><p align="right"><?php echo $donnees['id_mission']; ?></p></td>
      <td><?php echo $donnees['objet']; ?></td>
      <td><?php echo $donnees['lieu']; ?></td>
      <td><?php echo $donnees['datedeb']; ?></td>
      <td><input name="imprimer" type="checkbox" value="imprimer"></td></tr>
      <?php
      }


      Dans ton cas, utilise un do while plutôt qu'un while ...
      do
      {
      (instructions)
      }while(condition);

      Bon courage :)
      • Partager sur Facebook
      • Partager sur Twitter
        30 août 2006 à 12:44:32

        Merci Doomi
        j'ai utilisé do while et ça marche! grand merci :D
        • Partager sur Facebook
        • Partager sur Twitter
          30 août 2006 à 13:59:27

          Avec grand plaisir :)

          Pense à marquer ton sujet comme résolu ;)
          • Partager sur Facebook
          • Partager sur Twitter

          afficher le résulat d'une requête sur plusieurs pages

          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
          • Editeur
          • Markdown