Bonjour tout le monde,

Je sollicite votre aide avant de m'arracher mes derniers cheveux.

J'ai suivi le tuto de décomposition en PHP avec en bonus l'URL Rewriting. Jusque là tout allait bien. Et puis je me suis attelé à la pagination des news, et c'est là que ça coince : je n'arrive pas à faire passer en paramètre à $_GET la page courante, je tourne en rond dans le .htaccess...

  • La page "d'index" des news se nomme blog.php (chemin : monsite/content/blog/blog.php);
  • Je partais sur l'idée d'avoir des noms en "blog/p1.php".

Ci-dessous le code de blog.php (faites pas attention, c'est un peu crade pour le moment)

<?php
    require "config.php";
    mysql_connect(DB_HOST,DB_LOGIN,DB_PASS);
    mysql_select_db(DB_BDD);

    $host = $_SERVER'HTTP_HOST']; /* On récupère le nom du site */
    $uri = rtrim(dirname($_SERVER'PHP_SELF']), '/\\');
    $url = $uri."/images/";

    // Partie concernant la pagination des news
    $sql = "SELECT COUNT(id) as nbNews FROM news";
    $req = mysql_query($sql) or die("Erreur SQL !<br />".$sql."<br />".mysql_error());
    $data = mysql_fetch_assoc($req);
    $nbNews = $data"nbNews"];
    $newsPerPage = 5; // Définition du nombre de news à afficher par page
    $nbPage = ceil($nbNews/$newsPerPage); // Calcul du nombre de pages ARRONDI A L'ENTIER 
SUPERIEUR, en fonction du nb de news et du nb de news/page
    if(isset($_GET"n"]) && $_GET"n"]>0 && $_GET"n"]<=$nbPage){
        $currentPage = $_GET"n"];
    }
    else{
        $currentPage = 1;
    }

    $sql = "SELECT * FROM news ORDER BY date DESC LIMIT ".(($currentPage-1)*$newsPerPage).",
$newsPerPage";
    $req = mysql_query($sql) or die("Erreur SQL !<br />".$sql."<br />".mysql_error());
    while($data = mysql_fetch_assoc($req)){
        $data"contenu"]=nl2br($data"contenu"]);
        echo "<div class='news'>";
        blablabla
    }

    // Affichage de la pagination des news
    echo "<div>";
    for ($i=1;$i<=$nbPage;$i++){
        if($i==$currentPage){
            echo "$i |";
        }
        else{
            echo "<a href='{$uri}/{$_GET"p"]}/{$i}'>$i</a> |";
        }
    }
    echo "</div>";

?>

Et le .htaccess

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d    
RewriteCond %{REQUEST_FILENAME} !-f    
RewriteRule ^(.*)\/blog\/([0-9]+)$ blog.php?p=$1&n=$2 [QSA,L]
RewriteCond %{REQUEST_FILENAME} !-d    
RewriteCond %{REQUEST_FILENAME} !-f    
RewriteRule ^(.*)\.html$ index.php?p=$1 [QSA,L]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(images\/[a-zA-Z\/\-_0-9]*\/)thumbs\/(.*)_(140x140|220x90)+.jpg$ redim.php?dossier=
$1&name=$2&format=$3&dest=$0 [QSA,L]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?p=$1 [QSA,L]

Voilà, je crois que j'ai tout dit.
Merci d'avance pour votre coup de main !

2 réponses


MadRoro
Auteur
Réponse acceptée

Parce qu'il y a des gens qui aiment lire du code ^^ ? Surtout quand c'est pas le sien, et que c'est tout crade comme celui que j'ai posté :)

Plus sérieusement j'ai résolu mon souci ce weekend : je n'arrivais pas à faire passer le "n" correspondant à la page de news à afficher à $_GET.
Après moult essais et bidouillages, j'en suis arrivé à ceci :

// Affichage de la pagination des news
                echo "<div>";
                for ($i=1;$i<=$nbPage;$i++){
                    if($i==$currentPage){
                        echo "$i |";
                    }
                    else{
                        echo "<a href='{$uri}/{$_GET"p"]}?n={$i}'>$i</a> |";
                    }
                                    }
                echo "</div>";

Et ça marche !

Donc voilou, sujet résolu :D

Moyen d'y avoir plus de détail c'est à quel niveau que ça bloque ? j'aime pas trop lire bcp de code :D