pagination sur tableau

Eléphanteau du PHP | 11 Messages

11 avr. 2013, 11:48

Bonjour,


voila j'ai crée un tableau qui est remplie grace a une requete sql .
j'ai filtrer les resultat pour n'afficher que 5 resultat par page et j'aimerais maintenant faire la pagination.

voici le code :
<?php
session_start();
require("auth.php");
if(Auth::isLogged()){

}
else{
    header('location:login.php');
}
print_r($_SESSION);
?>
<?php
{
    $bdd= new PDO('mysql:host=localhost;dbname=tuto','root','root');
}
//Une connexion SQL doit être ouverte avant cette ligne...
$retour_total=mysql_query('SELECT COUNT(*) AS total FROM intervention'); //Nous récupérons le contenu de la requête dans $retour_total
$donnees_total=mysql_fetch_assoc($retour_total); //On range retour sous la forme d'un tableau.
$total=$donnees_total['total']; //On récupère le total pour le placer dans la variable $total.



$messagesParPage=5; //Nous allons afficher 5 messages par page.

//Une connexion SQL doit être ouverte avant cette ligne...
$retour_total=mysql_query('SELECT COUNT(*) AS total FROM intervention'); //Nous récupérons le contenu de la requête dans $retour_total
$donnees_total=mysql_fetch_assoc($retour_total); //On range retour sous la forme d'un tableau.
$total=$donnees_total['total']; //On récupère le total pour le placer dans la variable $total.

//Nous allons maintenant compter le nombre de pages.
$nombreDePages=ceil($total/$messagesParPage);

if(isset($_GET['page'])) // Si la variable $_GET['page'] existe...
{
     $pageActuelle=intval($_GET['page']);
     
     if($pageActuelle>$nombreDePages) // Si la valeur de $pageActuelle (le numéro de la page) est plus grande que $nombreDePages...
     {
          $pageActuelle=$nombreDePages;
     }
}
else // Sinon
{
     $pageActuelle=1; // La page actuelle est la n°1    
}

$premiereEntree=($pageActuelle-1)*$messagesParPage; // On calcul la première entrée à lire

// La requête sql pour récupérer les messages de la page actuelle.
$retour_messages=mysql_query('SELECT * FROM intervention ORDER BY id DESC LIMIT '.$premiereEntree.', '.$messagesParPage.'');

while($donnees_messages=mysql_fetch_assoc($retour_messages)) // On lit les entrées une à une grâce à une boucle

?>
<?php
$retour_messages=mysql_query('SELECT * FROM intervention ORDER BY id DESC LIMIT '.$premiereEntree.', '.$messagesParPage.'');

while($donnees_messages=mysql_fetch_assoc($retour_messages))
{ 
?>
                            <tr>
                                <td ><input type="checkbox" /></td>
                                <td><?php echo $donnees_messages['id']; ?></td>
                                <td><a href="#"><?php echo $donnees_messages['date'];?></a></td>
                                <td><a href="#"><?php echo $donnees_messages['nom']; ?></a></td>
                                <td><a href="#"><?php echo $donnees_messages['prenom']; ?></td>
                                <td><a href="#"><?php echo $donnees_messages['tel']; ?></td>
                                <td><a href="#"><?php echo $donnees_messages['marque']; ?></td>
                                <td><a href="#"><?php echo $donnees_messages['models']; ?></td>
                                <td class="actions"> <a href="del.php?id= <?php echo $donnees_messages['id']?>" <title="Delete this content"><img src="img/icons/actions/delete.png" alt="" /></a></td>
                                <?php
}
echo '<p align="center">Page : '; //Pour l'affichage, on centre la liste des pages
for($i=1; $i<=$nombreDePages; $i++) //On fait notre boucle
{
     //On va faire notre condition
     if($i==$pageActuelle) //Si il s'agit de la page actuelle...
     {
         echo ' [ '.$i.' ] '; 
     }  
     else //Sinon...
     {
          echo ' <a href="intervention.php?page='.$i.'">'.$i.'</a> ';
     }
}
echo '</p>';
?>

                           </tr>
                            
                        </tbody>
                    </table>
                    <div class="left input">
                        <select name="action" id="tableaction">
                            <option value="">Action</option>
                            <option value="delete">Supprimer</option>
                            <option value="delete">resuturer</option>
                        </select>
                    </div>
                    <div class="pagination"> // voici la pagination que j'aimerais avoir . 
                        <a href="#" class="prev">«</a>
                        <a href="#">1</a>
                        <a href="#" class="current">2</a>
                        ...
                        <a href="#">21</a>
                        <a href="#">22</a>
                        <a href="#" class="next">»</a>
                    </div>
                </div>
            </div>

               
        </div>
        
    </body>
</html>

je vous joint une photo qui vous expliqueras se que j'essaie de faire .

Image

merci de votre aide.
Modifié en dernier par mathieu45 le 11 avr. 2013, 16:44, modifié 1 fois.

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

11 avr. 2013, 12:37

salut,

vu qu'a priori ton code est un mélange d'un tas d’autre (connexion PDO mais utilisation de l'extension mysql etc etc), je te donne un lien vers un tuto http://phpdebutant.org/article84.php

si tu peux éditer ton code pour utiliser les balise bbcode PHP au lien de code html se serait top ;)

le code que tu fournis inclus déjà la gestion de la pagination, quel est ton problème exactement ?
ça ne fonctionne pas comme tu le souhaite ?
tu ne comprend pas le code ?


@+
Il en faut peu pour être heureux ......

Eléphanteau du PHP | 11 Messages

11 avr. 2013, 16:43

cela fait une semaine que je me suis mis a php .

je comprend une partie du code mais pas tout j'avais bien compris que j'utilisait PDO mais que dans le code y'avais mysql mais comme je debute je ne comprend pas comment passer outre mysql.

le code que j'ai fournis unclus deja la pagination mais j'aimerais que la liste des page soit comme dans l'exemple de la photo .
je n'arrive pas a adapte le code pour eviter que cela me liste tout les page : 1 ,2 ,3 ,4 ,5 j'aimerais plus <1,2,......,3,4 >.