c"est ce que j'essaie de faire, sans succès
ajouter la variable $type dans cette usine à gaz
en plus du code ci dessus, il y a ça
<?php
//On initialise la connexion à la bdd
try
{
$db_host = "localhost"; //Lieu où est héberger la BDD
$db_name = "galerie"; //Nom de la BDD
$db_login = "root"; //Login de connexion à la BDD
$db_mdp = "root"; //Mot de passe de connexion à la BDD
$bdd=new PDO("mysql:host=$db_host;dbname=$db_name",$db_login,$db_mdp);
}
catch(Exception $e)
{
exit("<h1>Erreur de connexion à la BDD SQL</h1></body></html>");
}
/* mise en place du nombre d'affichage de galeries par page */
$nb_affiche = 2; //Nombre de galeries que l'on veut par page
//On va afficher la/les galeries selon la page où l'on ce trouve
if (isset($_GET['page']) && is_numeric($_GET['page']) && $_GET['page']>0)
{
//$start nous sert pour savoir où commence l'affichage des galeries selon la page où l'on est
$start = $_GET['page'] * $nb_affiche - $nb_affiche;
//On récupère la page sur laquelle on est, nécessaire lors de la pagination
$page = $_GET['page'];
}
else
{
$start = 0;
$page = 1;
}
/* ========================================================= */
//On prepare la requete SQL
$req = $bdd->prepare("SELECT * FROM travaux ORDER BY id DESC LIMIT :start,:nb_affiche");
$req->bindValue(':start',$start,PDO::PARAM_INT);
$req->bindValue(':nb_affiche',$nb_affiche,PDO::PARAM_INT);
$req->execute();
while ($donnees = $req->fetch())
{
?>
et un fichier pagination.php
<?php
/**
* paginate($url, $param, $total, $current [, $adj]) appelée à chaque affichage de la pagination
* @param string $url - URL ou nom de la page appelant la fonction, ex: 'index.php' ou 'http://example.com/'
* @param string $param - paramètre à ajouter à l'URL, ex: '?page=' ou '&p='
* @param int $total - nombre total de pages
* @param int $current - numéro de la page courante
* @param int $adj (facultatif) - nombre de numéros de chaque côté du numéro de la page courante (défaut : 3)
* @return string $pagination
*/
function paginate($url, $param, $total, $current, $adj=3)
{
/* Déclaration des variables */
$prev = $current - 1; // numéro de la page précédente
$next = $current + 1; // numéro de la page suivante
$n2l = $total - 1; // numéro de l'avant-dernière page (n2l = next to last)
/* Initialisation : s'il n'y a pas au moins deux pages, l'affichage reste vide */
$pagination = '';
/* Sinon ... */
if ($total > 1)
{
/* Concaténation du <div> d'ouverture à $pagination */
$pagination .= "<ul id=\"pagination\">\n";
/* ////////// Début affichage du bouton [précédent] ////////// */
if ($current == 2) // la page courante est la 2, le bouton renvoit donc sur la page 1, remarquez qu'il est inutile de mettre ?p=1
$pagination .= "<li><a href=\"{$url}\">page précédente</a></li>";
elseif ($current > 2) // la page courante est supérieure à 2, le bouton renvoit sur la page dont le numéro est immédiatement inférieur
$pagination .= "<li><a href=\"{$url}{$param}{$prev}\">page précédente</a></li>";
else // dans tous les autres, cas la page est 1 : désactivation du bouton [précédent]
$pagination .= '<li class="previous-off">>page précédente</li>';
/* Fin affichage du bouton [précédent] */
/* ///////////////
Début affichage des pages, l'exemple reprend le cas de 3 numéros de pages adjacents (par défaut) de chaque côté du numéro courant
- CAS 1 : il y a au plus 12 pages, insuffisant pour faire une troncature
- CAS 2 : il y a au moins 13 pages, on effectue la troncature pour afficher 11 numéros de pages au total
/////////////// */
/* CAS 1 */
if ($total < 7 + ($adj * 2))
{
/* Ajout de la page 1 : on la traite en dehors de la boucle pour n'avoir que index.php au lieu de index.php?p=1 et ainsi éviter le duplicate content */
$pagination .= ($current == 1) ? '<li class="active">1</li>' : "<a href=\"{$url}\">1</a>"; // Opérateur ternaire : (condition) ? 'valeur si vrai' : 'valeur si fausse'
/* Pour les pages restantes on utilise une boucle for */
for ($i = 2; $i<=$total; $i++)
{
if ($i == $current) // Le numéro de la page courante est mis en évidence (cf fichier CSS)
$pagination .= "<li class=\"active\">{$i}</li>";
else // Les autres sont affichés normalement
$pagination .= "<a href=\"{$url}{$param}{$i}\">{$i}</a>";
}
}
/* CAS 2 : au moins 13 pages, troncature */
else
{
/*
Troncature 1 : on se situe dans la partie proche des premières pages, on tronque donc la fin de la pagination.
l'affichage sera de neuf numéros de pages à gauche ... deux à droite (cf figure 1)
*/
if ($current < 2 + ($adj * 2))
{
/* Affichage du numéro de page 1 */
$pagination .= ($current == 1) ? "<li class=\"active\">1</li>" : "<a href=\"{$url}\">1</a>";
/* puis des huit autres suivants */
for ($i = 2; $i < 4 + ($adj * 2); $i++)
{
if ($i == $current)
$pagination .= "<li class=\"active\">{$i}</li>";
else
$pagination .= "<a href=\"{$url}{$param}{$i}\">{$i}</a>";
}
/* ... pour marquer la troncature */
$pagination .= ' ... ';
/* et enfin les deux derniers numéros */
$pagination .= "<a href=\"{$url}{$param}{$n2l}\">{$n2l}</a>";
$pagination .= "<a href=\"{$url}{$param}{$total}\">{$total}</a>";
}
/*
Troncature 2 : on se situe dans la partie centrale de notre pagination, on tronque donc le début et la fin de la pagination.
l'affichage sera deux numéros de pages à gauche ... sept au centre ... deux à droite (cf figure 2)
*/
elseif ( (($adj * 2) + 1 < $current) && ($current < $total - ($adj * 2)) )
{
/* Affichage des numéros 1 et 2 */
$pagination .= "<a href=\"{$url}\">1</a>";
$pagination .= "<a href=\"{$url}{$param}2\">2</a>";
$pagination .= ' ... ';
/* les septs du milieu : les trois précédents la page courante, la page courante, puis les trois lui succédant */
for ($i = $current - $adj; $i <= $current + $adj; $i++)
{
if ($i == $current)
$pagination .= "<li class=\"active\">{$i}</span>";
else
$pagination .= "<a href=\"{$url}{$param}{$i}\">{$i}</a>";
}
$pagination .= ' ... ';
/* et les deux derniers numéros */
$pagination .= "<a href=\"{$url}{$param}{$n2l}\">{$n2l}</a>";
$pagination .= "<a href=\"{$url}{$param}{$total}\">{$total}</a>";
}
/*
Troncature 3 : on se situe dans la partie de droite, on tronque donc le début de la pagination.
l'affichage sera deux numéros de pages à gauche ... neuf à droite (cf figure 3)
*/
else
{
/* Affichage des numéros 1 et 2 */
$pagination .= "<a href=\"{$url}\">1</a>";
$pagination .= "<a href=\"{$url}{$param}2\">2</a>";
$pagination .= ' ... ';
/* puis des neufs dernières */
for ($i = $total - (2 + ($adj * 2)); $i <= $total; $i++)
{
if ($i == $current)
$pagination .= "<li class=\"active\">{$i}</li>";
else
$pagination .= "<a href=\"{$url}{$param}{$i}\">{$i}</a>";
}
}
}
/* Fin affichage des pages */
/* ////////// Début affichage du bouton [suivant] ////////// */
if ($current == $total)
$pagination .= "<li class=\"inactive\">page suivante</li>\n";
else
$pagination .= "<a href=\"{$url}{$param}{$next}\">page suivante</a>\n";
/* Fin affichage du bouton [suivant] */
/* </div> de fermeture */
$pagination .= "</ul>\n";
}
/* Fin de la fonction, renvoi de $pagination au programme */
return ($pagination);
}
?>