Page 1 sur 1

Supprimer un contenu stocké dans une variable

Posté : 14 avr. 2016, 17:10
par yoann38
Salut à tous je suis toujours sur mon problème de pagination.
Donc j'ai eu une idée mais bon pas terrible terrible pour les puriste je pense.

Donc en fait je récupère l'url en cours ( url rewriting ) avec :
$monUrl = "http://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
Et je fait mon lien ainsi:
$pagination .= '<a href="'.$monUrl.'-page-'.$next.'.html" class="page" data-page="'.$next.'" data-du="'.$du.'" data-au="'.$au.'"><i class="fa fa-angle-right"></i>
Donc ca l'air de marché...
Je cherche juste une solution pour supprimé le page-2.html que je récupére dans $monUrl mais également

En gros supprimé le .html mais également page-(+ le numéro de page si il est supérieur ou égale à 1 )

Merci à vous ;)

Re: Supprimer un contenu stocké dans une variable

Posté : 14 avr. 2016, 17:12
par or 1

Re: Supprimer un contenu stocké dans une variable

Posté : 14 avr. 2016, 17:20
par yoann38
Alors en fait j'ai fait ca pour l'instant :
$url_en_cours = "http://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
$rest_url = substr($url_en_cours, 0, -12);  // retourne "abcde"
Si la page par exemple est :
http://monsite.fr/actu-de-la-ville-de-g ... age-2.html
ca marche très bien....

Par contre si on est sur la page 1 donc
http://monsite.fr/actu-de-la-ville-de-grenoble.html

ca supprime renoble.html

Donc je cherche la solution pour supprimer page-(0-9)(2).html
J'espère que vous m'avez compris ...

Re: Supprimer un contenu stocké dans une variable

Posté : 14 avr. 2016, 17:56
par Ryle
Regarde du côté de preg_replace() du coup :)

...

Et pour l'expression, quelque chose du genre " #page-\d*\.html$#i "

Re: Supprimer un contenu stocké dans une variable

Posté : 14 avr. 2016, 20:37
par yoann38
Heu....lol
Je n'arrive pas à commencé à écrire mon script là.... :/

Re: Supprimer un contenu stocké dans une variable

Posté : 14 avr. 2016, 21:47
par moogli
salut,

regarde la doc de la preg_replace il y a des exemples http://php.net/preg_replace
<?php
$string = 'April 15, 2003';
$pattern = '/(\w+) (\d+), (\d+)/i';
$replacement = '${1}1,$3';
echo preg_replace($pattern, $replacement, $string);
?>
En remplacent le motif par celui indiqué par Ryle et la chaîne par ton url tu as auras déjà un belle exemple ;)


@+

Re: Supprimer un contenu stocké dans une variable

Posté : 15 avr. 2016, 07:26
par yoann38
J'ai donc pour l'instant :
// Phase Test
	$url_en_cours = "http://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
        $pattern = "#page-\d*\.html$#i ";
        $replacement = '${1}1,$3';
	$url_modifier = preg_replace($pattern, $replacement, $url_en_cours);
	echo $url_modifier;
et mon lien:
$pagination .= '<a href="'.$url_modifier.'page-'.$next.'.html" class="page" data-page="'.$next.'" data-du="'.$du.'" data-au="'.$au.'"><i class="fa fa-angle-right"></i>
</a> ';
Donc si l'url à déjà une page d'attribuer soit par exemple:
http://monsite.fr/actu-de-la-ville-de-g ... age-2.html
le lien pour la page 3 est correct


Cependant si on est sur la page 1 à savoir: ( sans -page-(0-9) )
http://monsite.fr/actu-de-la-ville-de-grenoble.html

Le lien est faux car il retourne:
http://monsite.fr/actu-de-la-ville-de-g ... age-2.html

Merci à vous

Re: Supprimer un contenu stocké dans une variable

Posté : 15 avr. 2016, 10:04
par Ryle
Avec la découverte des expressions régulières, c'est tout un nouveau monde qui va s'ouvrir à toi :)

Le plus simple à mon sens c'est d'utiliser preg_match pour tester si ton url contient un numéro de page (tu peux utiliser la même expression). Si oui, alors traitement, sinon rien à changer :)


Edit : tu peux même envisager d'utiliser preg_match pour récupérer le numéro de la page demandée avec les parenthèses capturantes autour du (\d*) et coller ça dans une variable $page. Et tu peux ensuite construire tes liens simplement à base de if/else
if ($page < 2) {
  $lienPrecedent = "grenoble.html";
  $lienSuivant = "grenoble-page-2.html";
}
else{
  $lienPrecedent = "grenoble-page-" . ($page - 1) . ".html";
  $lienSuivant = "grenoble-page-" . ($page + 1) . ".html"; // avec éventuellement un test pour savoir si la page+1 existe :)
}

Re: Supprimer un contenu stocké dans une variable

Posté : 15 avr. 2016, 18:21
par yoann38
Re,
Je pensé pas autant galérer avec une pagination franchement.
Je vous fait part de mon code en entier pour la pagination (surement plus clair )
//traitement pagination
		$nbre_annonces_par_page = 10;
		$nbre_pages_max_gauche_et_droite = 2;
		$last_page = ceil($nb / $nbre_annonces_par_page);
		if(isset($_GET['page']) && is_numeric($_GET['page'])){
		$page_num = $_GET['page'];
		} else {
		$page_num = 1;
		}
		if($page_num < 1){
		$page_num = 1;
		} else if($page_num > $last_page) {
		$page_num = $last_page;
		}
		$limit = 'LIMIT '.($page_num - 1) * $nbre_annonces_par_page. ',' . $nbre_annonces_par_page;
		
		$pagination = '';
		if($last_page != 1){
		if($page_num > 1){
		$previous = $page_num - 1;
		$pagination .= '<a href="sortie.php?page='.$previous.'" class="page" data-page="'.$previous.'" data-du="'.$du.'" data-au="'.$au.'"><i class="fa fa-angle-left"></i>
</a> &nbsp; &nbsp;';
		for($i = $page_num - $nbre_pages_max_gauche_et_droite; $i < $page_num; $i++){
		if($i > 0){
		$pagination .= '<a href="sortie.php?page='.$i.'" class="page" data-page="'.$i.'" data-du="'.$du.'" data-au="'.$au.'">'.$i.'</a> &nbsp;';
		}
		}
		}
		$pagination .= '<span class="active">'.$page_num.'</span>&nbsp;';
		for($i = $page_num+1; $i <= $last_page; $i++){
		$pagination .= '<a href="sortie.php?page='.$i.'" class="page" data-page="'.$i.'" data-du="'.$du.'" data-au="'.$au.'">'.$i.'</a> ';
		if($i >= $page_num + $nbre_pages_max_gauche_et_droite){
		break;
		}
		}
		if($page_num != $last_page){
		$next = $page_num + 1;
		$pagination .= '<a href="sortie.php?page='.$next.'" class="page" data-page="'.$next.'" data-du="'.$du.'" data-au="'.$au.'"><i class="fa fa-angle-right"></i>
</a> ';
		}
		}

		$sql .= " ORDER BY loisirs.id_loisirs DESC LIMIT ".intval(($page-1)*$parPage).", ".$parPage;

Les urls peuvent être:
http://monsite.fr/actu-de-la-ville-de-grenoble.html
http://monsite.fr/actu-de-la-region-rhone-alpes.html
....

Et coté code on a donc pour l'instant:
// Phase Test
		$url_en_cours = "http://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
		$pattern = "#page-\d*\.html$#i ";
		$replacement = '${1}1,$3';
		$url_modifier = preg_replace($pattern, $replacement, $url_en_cours);
		//echo $url_modifier;