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 :

Pagination et URL rewriting


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    112
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2008
    Messages : 112
    Par défaut Pagination et URL rewriting
    Bonjour à tous, j'ai un petit souci au niveau de la gestion des URLs

    J'ai installé et utilise ce tuto :
    (http://antoine-herault.developpez.co...atique-en-php/)
    (en passant : bravo pour ce tuto super utile et très bien fait)

    Je l'ai adapté pour une pagination sur un script d'ajout de commentaires pour des articles publiés sur mon site.

    Tous mes articles ont un système d'URL rewriting et j'ai l'URL de la page consultée pour chaque article qui est ajoutée dans ma base de donnée a chaque fois qu'un commentaire est posté.

    voici le lien non réécrit qui apparait dans le script de ma pagination:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <a href="article.php?id='.$sql['ID'].'&amp;page='.$i.'">'.$i.'</a>
    sur mon site les URL pour chaque articles sont réécrites de cette façon :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <a href="'.$sql['ID'].'-'.make_url($sql['NOM_ARTICLE']).'.html">
    Or pour naviguer de pages en pages avec ma pagination, je dois bien sur cliquer sur les liens Page 1,2,3 etc.. en cliquant j'ai une variable "page" qui s'ajoute dans mon URL avec le numéro de page, or si un visiteur poste un commentaire depuis la page N°2 j'aurai l'URL de la page 2 qui va s'ajouter dans ma base de donnée, ce qu'il faudrait éviter et toujours ajouter l'URL de base de l'article =>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <a href="'.$sql['ID'].'-'.make_url($sql['NOM_ARTICLE']).'.html">
    Ma question est donc : comment changer de page, sans que L'URL ne soit modifiée ?

    Merci d'avance pour votre aide

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    821
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 821
    Par défaut
    Bonjour

    Si ta variable "page" est passée en GET tu la verras toujours sur l'url et elle sera différente sur chaque page biensûr.
    Par contre tu peux ou bien la faire passer en POST ou bien lors de l'enregistrement dans ta base des donnée ne prendre de ta chaine url que l'adresse de base et eliminer la variable "page"

    Je ne sais pas si j'ai bien compris.

  3. #3
    Membre Expert Avatar de darkstar123456
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    1 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 1 895
    Par défaut
    or si un visiteur poste un commentaire depuis la page N°2 j'aurai l'URL de la page 2 qui va s'ajouter dans ma base de donnée, ce qu'il faudrait éviter et toujours ajouter l'URL de base de l'article
    gni c'est quoi le rapport ? t'enregistre une URL dans ta DB pour savoir à quoi appartient ton commentaire ?

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    112
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2008
    Messages : 112
    Par défaut
    Citation Envoyé par darkstar123456 Voir le message
    gni c'est quoi le rapport ? t'enregistre une URL dans ta DB pour savoir à quoi appartient ton commentaire ?
    oui...

    j'ajoute cette valeur dans ma base de donnée pour le lien de l'article: $_SERVER['REQUEST_URI'];

  5. #5
    Membre Expert Avatar de darkstar123456
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    1 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 1 895
    Par défaut
    hmmm p-e t'aurais du réfléchir un peu plus avant :/// ça sert à rien de sauvegarder une URL... où alors c'est que justement, t'as pas assez réfléchi... car en général, toutes les URL sont logiques et un pattern commun (pour un même site)

    en général on aura une table "commentaires" composée des champs : "id_comm", "id_refer", "auteur", "sujet", "message"

    "id_refer" contient alors l'id de ta news par exemple (si tu as par exemple 2 catégories distinctes dans ta DB du genre "news" et "categories" alors tu peux ajouter un champ "type" dans ta DB "commentaires")

    in fine :
    1] il ne faut pas sauvegarder des URL
    2] c'est encore pire d'utiliser des $_POST pour passer de page en page, et c'est aussi chiant pour toi que pour l'utilisateur ! :o


    vala un exemple de table :

    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
    ######## table "news"
    ---------------------------------------------------------------
    id_news   |    author     |     title       |     message
    ---------------------------------------------------------------
        1         DarkStar         kikoo !!!         hello world
        2         DarkStar         kikoo :)          hello world 2, le retour !
     
     
     
     
    ######## table "commentaires"
    ----------------------------------------------------------------------------------------------------
    id_commentaire   |    id_news    |     author     |         title       |     message
    ----------------------------------------------------------------------------------------------------
         1         		1	      DarkStar         RE : kikoo !!!	        Ce commentaire appartient à la news 1 ("hello world")
         2         		1 	      DarkStar         RE : kikoo !!!    	Ce commentaire appartient également à la news 1 ("hello world")
         3         		2 	      DarkStar         RE : kikoo :)    	Ce commentaire appartient à la news 2 ("hello world 2, le retour !")

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    112
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2008
    Messages : 112
    Par défaut
    oui tu as raison, merci du conseil, j'ai modifier tout ça selon tes indications...
    donc au final plus besoin de stocker l'URL dans ma base de données, c'est vrai c'était un peu stupide de le faire, par contre encore une petite question à ce sujet :

    mon URL pour la pagination est la suivante (non réécrite) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <a href="article.php?id='.$tab['ID'].'&amp;page='.$i.'">'.$i.'</a>
    j'ai donc mis ceci à la place :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <a href="'.$sql['ID'].'-'.$i.'-'.make_url($sql['NOM_ARTICLE']).'.html">'.$i.'</a>
    en sachant qu'a la base toutes mes url pour chaque article son comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <a href="'.$sql['ID'].'-'.make_url($sql['NOM_ARTICLE']).'.html">

    le fichier .htacces contient ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    RewriteEngine on
     
    RewriteRule ([0-9]+)-(.*)\.html article.php?id=$1 [QSA,L]
    RewriteRule ([0-9]+)-([0-9]+)-(.*)\.html article.php?id=$1&page=$2 [QSA,L]
    j'ai donc rajouté la deuxième ligne pour la pagination mais les liens ne marchent pas.. j'ai fait quoi de faux ?
    Merci d'avance

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

Discussions similaires

  1. [MySQL] Pagination lien URL REWRITE
    Par karamaster dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 16/12/2013, 12h45
  2. URL rewriting d'une pagination
    Par tryan dans le forum Apache
    Réponses: 4
    Dernier message: 17/02/2013, 20h32
  3. URL Rewriting pour la pagination
    Par pinouf dans le forum Zend Framework
    Réponses: 8
    Dernier message: 22/10/2008, 16h10
  4. [Débutant]infos ds session sans cookie ? url rewriting ?
    Par Satanas_et_diabolo dans le forum ASP
    Réponses: 8
    Dernier message: 10/10/2006, 17h13
  5. Url Rewriting / htaccess
    Par bisi dans le forum Apache
    Réponses: 4
    Dernier message: 25/07/2004, 22h12

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