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

Langage PHP Discussion :

Problème Url rewriting avec numéro de page


Sujet :

Langage PHP

  1. #1
    Membre habitué
    Homme Profil pro
    Webmaster
    Inscrit en
    Juillet 2015
    Messages
    518
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Juillet 2015
    Messages : 518
    Points : 184
    Points
    184
    Par défaut Problème Url rewriting avec numéro de page
    Salut à tous,

    Avant la mise en place de url rewriting sur mon site, mon système de pagination fonctionnait très bien.

    Mon problème : quand je clic sur un numéro de page dans ma pagination au bas de la page, la pagination m'affiche une autre catégorie et pas un autre numéro de page dans la même catégorie !

    Mon htaccess :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Options +FollowSymlinks
    RewriteEngine on
     
    RewriteRule ^cours/([a-zA-Z0-9\-]+)-([0-9]+).html$   index.php?p=ad/category&title=$1&idcat=$2 [L]
    RewriteRule ^cours/([a-zA-Z0-9\-]+)-([0-9]+)-([0-9]*).html$   index.php?p=ad/category&title=$1&idcat=$2&page=$3 [L]
    Note : quand je retire la première ligne "RewriteRule" je n'ai plus de problème avec la pagination mais la page ne s'affiche pas si elle n'a pas de numéro de page.

    Ma page category.php (désolé d'avance pour le pavé mais je ne sais pas d'ou vient le problème)

    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
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    <?php
     
    $idcat = (int) $_GET['idcat'];
     
    $req = $pdo->prepare('SELECT idcat, category FROM category WHERE idcat = ?');
    $req->execute([$idcat]);
    $cat = $req->fetch();
     
    if (!$cat) {
        header('Location: /index.html');
        exit();
    }
     
    // Pagination
    $itemsParPage = 15;
    $itemsTotalesReq = $pdo->query('SELECT idcat FROM ad WHERE idcat = '.$idcat.' AND status = 9');
    $itemsTotales = $itemsTotalesReq->rowCount();
    $pagesTotales = ceil($itemsTotales/$itemsParPage);
    if(isset($_GET['page']) AND !empty($_GET['page']) AND $_GET['page'] > 0 AND $_GET['page'] <= $pagesTotales) {
        $_GET['page'] = intval($_GET['page']);
        $pageCourante = $_GET['page'];
    } else {
        $pageCourante = 1;
    }
    $depart = ($pageCourante-1)*$itemsParPage;
     
    $title_page = 'Cours de '.$cat->category;
     
    $req = $pdo->prepare('SELECT idann, title, idcat, location, amount, dateann FROM ad WHERE idcat = '.$idcat.' AND status = 9 ORDER BY dateann DESC LIMIT '.$depart.','.$itemsParPage.'');
    $req->execute([$idcat]);
     
    ?>
     
    <div class="row">
        <div class="col-md-9">
            <h1><?= $title_page; ?></h1>
     
            <?php
     
            while ($ad = $req->fetch())
            {
                ?>
     
                <div class="media">
                    <div class="media-left media-middle">
                        <img class="media-object" src="https://cdn2.iconfinder.com/data/icons/circle-icons-1/64/play-64.png" alt="...">
                    </div>
                    <div class="media-body">
                        <h4 class="media-heading"><?= htmlspecialchars($ad->title); ?></h4>
                        à proximité de : <?= htmlspecialchars($ad->location); ?>
                        <?php
                        if (isset($ad->amount)) {
                            echo "<br>Prix d'une heure de cours : <strong>$ad->amount €</strong>";
                        }
                        $title_ad = url_rewriting($ad->title);
                        ?><br><a href="/<?= $title_ad; ?>-<?= $ad->idann; ?>.html">Voir l'annonce</a>
                    </div>
                </div>
     
                <?php
     
            }
     
            ?>
     
            <nav>
                <ul class="pagination">
                    <?php
                    $title_category = url_rewriting($cat->category);
     
                    for($i=1;$i<=$pagesTotales;$i++) {
                        if($i == $pageCourante) {
                            echo '<li class="active"><a href="'.$title_category.'-'.$cat->idcat.'-'.$i.'.html">'.$i.'</a></li>';
                        } else {
                            echo '<li><a href="'.$title_category.'-'.$cat->idcat.'-'.$i.'.html">'.$i.'</a></li>';
                        }
                    }
                    ?>
                </ul>
            </nav>
     
        </div>
        <div class="col-md-3">
            <h2>Instruments</h2>
            <?php
     
            $req = $pdo->query('SELECT idcat, category FROM category ORDER BY category');
            while ($category = $req->fetch())
            {
                $title_category = url_rewriting($category->category);
                echo '<span class="glyphicon glyphicon-chevron-right" aria-hidden="true"></span> <a href="/cours/'.$title_category.'-'.$category->idcat.'.html">'.$category->category.'</a><br>';
            }
     
            ?>
        </div>
    </div>
    Attention a ne pas confondre : "p" est la page que j'appelle en include dans ma structure, et "page" est bien le numéro de page (pagination).

    merci pour votre aide précieuse !!

  2. #2
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 401
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 401
    Points : 15 766
    Points
    15 766
    Par défaut
    Citation Envoyé par bndd24 Voir le message
    désolé d'avance pour le pavé mais je ne sais pas d'ou vient le problème
    pour éviter cela vous pouvez afficher le contenu des différents variables (en commençant par la paramètres de la page) et regarder à partir de quel endroit elles ne contiennent pas la valeur prévue

  3. #3
    Membre habitué
    Homme Profil pro
    Webmaster
    Inscrit en
    Juillet 2015
    Messages
    518
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Juillet 2015
    Messages : 518
    Points : 184
    Points
    184
    Par défaut
    j'ai réglé le problème en inversant les deux lignes comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    RewriteRule ^cours/([a-zA-Z0-9\-]+)-([0-9]+)-([0-9]*).html$   index.php?p=ad/category&title=$1&idcat=$2&page=$3 [L]
    RewriteRule ^cours/([a-zA-Z0-9\-]+)-([0-9]+).html$   index.php?p=ad/category&title=$1&idcat=$2 [L]

  4. #4
    Membre émérite Avatar de vttman
    Homme Profil pro
    Développeur "couteau mosellan"
    Inscrit en
    Décembre 2002
    Messages
    1 140
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur "couteau mosellan"
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 140
    Points : 2 286
    Points
    2 286
    Par défaut
    je cite d'après la doc. apache.org
    =>
    Lorsque le drapeau [L] est présent, mod_rewrite arrête le traitement du jeu de règles. Cela signifie dans la plupart des situations que si la règle s'applique, aucune autre règle ne sera traitée. Ce drapeau correspond à la commande Perl last, ou à la commande break en C. Utilisez ce drapeau pour indiquer que la règle courante doit être appliquée immédiatement, sans tenir compte des règles ultérieures.

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

Discussions similaires

  1. Problèmes URL Rewriting
    Par mystar dans le forum Apache
    Réponses: 1
    Dernier message: 13/11/2007, 11h06
  2. Si vous avez des questions sur Apache, HTAccess, URL rewriting avec Apache, etc
    Par Marc Lussac dans le forum Général Conception Web
    Réponses: 1
    Dernier message: 28/08/2007, 19h09
  3. [URL Rewriting] Problème URL Rewriting -> CSS
    Par Cartman.inc dans le forum Apache
    Réponses: 8
    Dernier message: 23/04/2007, 14h29
  4. [URLRewriting] URL Rewrite avec Language
    Par Prosis dans le forum Apache
    Réponses: 15
    Dernier message: 28/02/2007, 19h28
  5. Problème URL rewriting
    Par Zan dans le forum Apache
    Réponses: 4
    Dernier message: 24/11/2006, 19h04

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