PB URL REWRITING dans une fonction

Consultez la formation URL Rewriting et sites dynamiques de WebRankInfo / Ranking Metrics

cyberzoide14
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 7
Inscription: 27 Sep 2007

PB URL REWRITING dans une fonction

Message le Jeu Sep 27, 2007 9:50

Bonjour à tous,

Je n'arrive pas à modifier une fonction php qui me sert à afficher une barre de liens << 1 2 3 4 5 >> pour afficher mes articles par page !

Pour que l'url rewrting marche, il faut que ma fonction génère des liens en html de la forme article_nomdelarticle-numeropage. Dans ma fonction les transmissions de variables par l'adresse sont utilisés avec ?page= !

Je n'ai pas assez de savoir pour modifier ma fonction de manière à ce qu'elle génère des liens en html ;)


Mon .htaccess :

Options +FollowSymlinks
RewriteEngine on
RewriteBase /cms/

#--------------------------------------------------
# Article avec nom et numéro de page
#--------------------------------------------------
RewriteRule ^article_([a-z]*)-([0-9]+).html$ article.php?nom=$1&page=$2 [L]

#--------------------------------------------------
# Article avec nom sans numéro de page
#--------------------------------------------------
RewriteRule ^article_([a-z]*).html$ article.php?nom=$1&page=0 [L]


Ma fonction :
<?php
// AFFICHE PAGE PAR PAGE LE RESULTAT D'UNE REQUETE
function barre_navigation ($nb_total, $nb_affichage_par_page, $page, $nb_liens_dans_la_barre)
{
$barre = '';

// Recherche de l'url courante
if ($_SERVER['QUERY_STRING'] == "")
{
$query = $_SERVER['PHP_SELF'].'?page=';
}

else
{
$tableau = explode ("page=", $_SERVER['QUERY_STRING']);
$nb_element = count ($tableau);

if ($nb_element == 1)
{
$query = $_SERVER['PHP_SELF'].'?'.$_SERVER['QUERY_STRING'].'&page=';
}

else
{
if ($tableau[0] == "")
{
$query = $_SERVER['PHP_SELF'].'?page=';
}
else
{
$query = $_SERVER['PHP_SELF'].'?'.$tableau[0].'page=';
}
}
}

// Calcul du numéro de la page active
$page_active = floor(($page/$nb_affichage_par_page)+1);

//Calcul du nombre de pages totales
$nb_pages_total = ceil($nb_total/$nb_affichage_par_page);

//$cpt_deb est le numéro de page qui s'affiche en premier et $cpt_fin est le numéro de page qui s'affiche en dernier
if ($nb_liens_dans_la_barre%2==0)
{
$cpt_deb1 = $page_active - ($nb_liens_dans_la_barre/2)+1;
$cpt_fin1 = $page_active + ($nb_liens_dans_la_barre/2);
}

else
{
$cpt_deb1 = $page_active - floor(($nb_liens_dans_la_barre/2));
$cpt_fin1 = $page_active + floor(($nb_liens_dans_la_barre/2));
}

if ($cpt_deb1 <= 1)
{
$cpt_deb = 1;
$cpt_fin = $nb_liens_dans_la_barre;
}

elseif ($cpt_deb1>1 && $cpt_fin1<$nb_pages_total)
{
$cpt_deb = $cpt_deb1;
$cpt_fin = $cpt_fin1;
}

else
{
$cpt_deb = ($nb_pages_total-$nb_liens_dans_la_barre)+1;
$cpt_fin = $nb_pages_total;
}

if ($nb_pages_total <= $nb_liens_dans_la_barre)
{
$cpt_deb=1;
$cpt_fin=$nb_pages_total;
}

// Si le premier numéro qui s'affiche est différent de 1, on affiche << qui sera un lien vers la première page
if ($cpt_deb != 1)
{
$cible = $query.(0);
$lien = '<a href="' . $cible . '"><img src="images/debut.png" title="Première page" alt="Aller à la première page" /></a>';
}

else
{
$lien='';
}

$barre .= $lien;

// On affiche tous les liens de notre barre, tout en vérifiant de ne pas mettre de lien pour la page active
for ($cpt = $cpt_deb; $cpt <= $cpt_fin; $cpt++)
{
if ($cpt == $page_active)
{
if ($cpt == $nb_pages_total)
{
$barre .= "<span class=\"bar_list_pages_select\">" . $cpt . "</span>";
}

else
{
$barre .= "<span class=\"bar_list_pages_select\">" . $cpt . "</span>" . "&nbsp;";
}
}

else
{
if ($cpt == $cpt_fin)
{
$barre .= "<span class=\"bar_list_pages\"><A HREF='".$query.(($cpt-1)*$nb_affichage_par_page);
$barre .= "'>".$cpt."</A></span>";
}

else
{
$barre .= "<span class=\"bar_list_pages\"><A HREF='".$query.(($cpt-1)*$nb_affichage_par_page);
$barre .= "'>".$cpt."</A></span>&nbsp;";
}
}
}


$fin = ($nb_total - ($nb_total % $nb_affichage_par_page));
if (($nb_total % $nb_affichage_par_page) == 0) {
$fin = $fin - $nb_affichage_par_page;
}

// Affichage du lien vers la dernière page au cas où l'utilisateur ne se trouve pas sur la dernière page
// si $cpt_fin ne vaut pas la dernière page de la barre de navigation, on affiche un >> qui sera un lien vers la dernière page de navigation
if ($cpt_fin != $nb_pages_total) {
$cible = $query.$fin;
$lien = '<a href="' . $cible . '"><img src="images/fin.png" title="Dernière page" alt="Aller à la dernière page" /></a>';
}
else {
$lien='';
}
$barre .= $lien;



return $barre;
}
?>


Merci par avance,
Cordialement,
Arthur.

cyberzoide14
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 7
Inscription: 27 Sep 2007

Message le Ven Sep 28, 2007 6:23

Est-ce possible ??

Les modifications sont peu nombreuses à mon avis, elles sont plutôt où c'est en rouge :

<?php
// AFFICHE PAGE PAR PAGE LE RESULTAT D'UNE REQUETE
function barre_navigation ($nb_total, $nb_affichage_par_page, $page, $nb_liens_dans_la_barre)
{
$barre = '';

// Recherche de l'url courante
if ($_SERVER['QUERY_STRING'] == "")
{
$query = $_SERVER['PHP_SELF'].'?page=';
}

else
{
$tableau = explode ("page=", $_SERVER['QUERY_STRING']);
$nb_element = count ($tableau);

if ($nb_element == 1)
{
$query = $_SERVER['PHP_SELF'].'?'.$_SERVER['QUERY_STRING'].'&page=';
}

else
{
if ($tableau[0] == "")
{
$query = $_SERVER['PHP_SELF'].'?page=';
}
else
{
$query = $_SERVER['PHP_SELF'].'?'.$tableau[0].'page=';
}
}
}

// Calcul du numéro de la page active
$page_active = floor(($page/$nb_affichage_par_page)+1);

//Calcul du nombre de pages totales
$nb_pages_total = ceil($nb_total/$nb_affichage_par_page);

//$cpt_deb est le numéro de page qui s'affiche en premier et $cpt_fin est le numéro de page qui s'affiche en dernier
if ($nb_liens_dans_la_barre%2==0)
{
$cpt_deb1 = $page_active - ($nb_liens_dans_la_barre/2)+1;
$cpt_fin1 = $page_active + ($nb_liens_dans_la_barre/2);
}

else
{
$cpt_deb1 = $page_active - floor(($nb_liens_dans_la_barre/2));
$cpt_fin1 = $page_active + floor(($nb_liens_dans_la_barre/2));
}

if ($cpt_deb1 <= 1)
{
$cpt_deb = 1;
$cpt_fin = $nb_liens_dans_la_barre;
}

elseif ($cpt_deb1>1 && $cpt_fin1<$nb_pages_total)
{
$cpt_deb = $cpt_deb1;
$cpt_fin = $cpt_fin1;
}

else
{
$cpt_deb = ($nb_pages_total-$nb_liens_dans_la_barre)+1;
$cpt_fin = $nb_pages_total;
}

if ($nb_pages_total <= $nb_liens_dans_la_barre)
{
$cpt_deb=1;
$cpt_fin=$nb_pages_total;
}

// Si le premier numéro qui s'affiche est différent de 1, on affiche << qui sera un lien vers la première page
if ($cpt_deb != 1)
{
$cible = $query.(0);
$lien = '<a href="' . $cible . '"><img src="images/debut.png" title="Première page" alt="Aller à la première page" /></a>';
}

else
{
$lien='';
}

$barre .= $lien;

// On affiche tous les liens de notre barre, tout en vérifiant de ne pas mettre de lien pour la page active
for ($cpt = $cpt_deb; $cpt <= $cpt_fin; $cpt++)
{
if ($cpt == $page_active)
{
if ($cpt == $nb_pages_total)
{
$barre .= "<span class=\"bar_list_pages_select\">" . $cpt . "</span>";
}

else
{
$barre .= "<span class=\"bar_list_pages_select\">" . $cpt . "</span>" . "&nbsp;";
}
}

else
{
if ($cpt == $cpt_fin)
{
$barre .= "<span class=\"bar_list_pages\"><A HREF='".$query.(($cpt-1)*$nb_affichage_par_page);
$barre .= "'>".$cpt."</A></span>";

}

else
{
$barre .= "<span class=\"bar_list_pages\"><A HREF='".$query.(($cpt-1)*$nb_affichage_par_page);
$barre .= "'>".$cpt."</A></span>&nbsp;";

}
}
}


$fin = ($nb_total - ($nb_total % $nb_affichage_par_page));
if (($nb_total % $nb_affichage_par_page) == 0) {
$fin = $fin - $nb_affichage_par_page;
}

// Affichage du lien vers la dernière page au cas où l'utilisateur ne se trouve pas sur la dernière page
// si $cpt_fin ne vaut pas la dernière page de la barre de navigation, on affiche un >> qui sera un lien vers la dernière page de navigation
if ($cpt_fin != $nb_pages_total) {
$cible = $query.$fin;
$lien = '<a href="' . $cible . '"><img src="images/fin.png" title="Dernière page" alt="Aller à la dernière page" /></a>';
}
else {
$lien='';
}
$barre .= $lien;



return $barre;
}
?>


J'espère que vous allez pouvoir me débloquer ... :roll:


KOogar
WRInaute accro
WRInaute accro
 
Messages: 3885
Inscription: 16 Nov 2004

Message le Ven Sep 28, 2007 6:56

Tu definis une variable "nom" dans ton regex qui n'existe pas dans le code que tu presente.
Elle vient d'ou cette variable ? et ce tableau => $tableau[0] ??

cyberzoide14
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 7
Inscription: 27 Sep 2007

Message le Ven Sep 28, 2007 7:40

tableau[0] représente nom=nomdelarticle

voilà j'espère t'avoir éclairé ..


KOogar
WRInaute accro
WRInaute accro
 
Messages: 3885
Inscription: 16 Nov 2004

Message le Ven Sep 28, 2007 8:21

cyberzoide14 a écrit:tableau[0] représente nom=nomdelarticle

voilà j'espère t'avoir éclairé ..



oui et non... il vient d'ou ? ou l'initialise tu ? pourquoi il n'est pas passer en parametre dans la fonction ??

il faudrait pour ton rewrite qu'il ne contienne plus que le nom de l'article.

pour remplacer :

Code: Tout sélectionner
$query = $_SERVER['PHP_SELF'].'?'.$tableau[0].'page=';

par
Code: Tout sélectionner
$query = 'article_'.$tableau[0].'-';

cyberzoide14
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 7
Inscription: 27 Sep 2007

Message le Ven Sep 28, 2007 8:29

il vient d'ici : $tableau = explode ("page=", $_SERVER['QUERY_STRING']);

oué pour ne garder que le nom de l'article faudrait cuter la partie nom= qui est toujours la même !!!

ce n'est pas forcément toujours le préfix article_, ça pourra être commentaire_ aussi donc faut choper le prefix dans l'adresse en fait grâce au variables HTTP !


KOogar
WRInaute accro
WRInaute accro
 
Messages: 3885
Inscription: 16 Nov 2004

Message le Ven Sep 28, 2007 13:09

cyberzoide14 a écrit:ce n'est pas forcément toujours le préfix article_, ça pourra être commentaire_ aussi donc faut choper le prefix dans l'adresse en fait grâce au variables HTTP !


waouu!!

je :arrow: []

1000 sry

cyberzoide14
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 7
Inscription: 27 Sep 2007

Message le Ven Sep 28, 2007 14:21

tu penses pouvoir le faire ?


Si vous avez aimé cette discussion, partagez-la sur vos réseaux sociaux préférés :

Formation recommandée sur ce thème :

Formation URL Rewriting et sites dynamiques : apprenez comment mettre en place la réécriture d'URL, comment optimiser vos URL et profiter de vos pages dynamiques pour booster votre référencement. Formation animée par Olivier Duffez et Fabien Facériès, experts en référencement naturel.

Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.

Lectures recommandées sur ce thème :

Consultez la description détaillée des produits ou services de Google suivants : Google goo.gl

  • Liste des backlinks
    Cet outil vous permet d'analyser en détails la "popularité" de votre site sur Google. En plus du nombre de liens pris en compte par Google, il calcule le pourcentage de liens internes parmi tous les liens, et il affiche les premières URL trouvées.
  • Transformer des textes non cliquables en liens
    Cet outil vous permet de trouver des pages citant votre site mais ne faisant pas (encore) de lien. Il suffira parfois d'un simple mail pour transformer cette simple citation en lien (backlink).


Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité