Construction d'url

Eléphant du PHP | 71 Messages

05 déc. 2005, 22:46

bonjour :)

je voudrait construire mon url grace à php.

j'ai donc ecrit ce bout de code:
$url = $_SERVER['REQUEST_URI']; // qui vaut /site/?page=1

if(isset($_GET['page']))
	{
	$rep = scandir($curdir);
	foreach($rep as $cat=>$p)
		{
		$url .= '&cat='.$cat;
		print "<a href=".$url.">| ".$rep[$cat]." |</a>\n"; //lien que je desire afficher
		}
	}
malheuresement a chaque passage de la boucle j'ajoute &cat=1 puis &cat=2 ..... , ce qui donne /?page=1&cat=2&cat=3.

je voudrait en fait ecraser $url pour obtenir à chaque passage de boucle : /?page=1&&cat=1 , /?page=1&&cat=2 , ......

pouvez vous m'aider ?

Merci d'avance!

Eléphant du PHP | 383 Messages

06 déc. 2005, 00:39

ben il suffit qu'au debut tu cree ta variable avec :

$url_initiale=$_SERVER[...

et dans ta boucle, tu commences par : $url=$url_initiale.

Eléphant du PHP | 353 Messages

06 déc. 2005, 10:44

<?php
$url = $_SERVER['REQUEST_URI'];
if (!empty($_GET['page'])) {
    $rep = scandir($curdir);
    foreach($rep as $cat=>$p) {
        printf ('<a href="%s&cat=%s">|%s|</a>'."\n", $url, $cat, $p);
    }
}
?>

Eléphant du PHP | 71 Messages

06 déc. 2005, 14:55

Merci beaucoup les gars :wink:

malheureusement j'obtient le meme resultat

voici mon code :
$url_initiale = $_SERVER['REQUEST_URI'];

if(isset($_GET['page']))
	{
	$rep = scandir($curdir);
	foreach($rep as $cat=>$p)
		{
		$url = $url_initiale;
		printf ('<a href="%s&cat=%s">|%s|</a>'."\n", $url, $cat, $p); 
		}
	}
php ne fait qu'ajouter un &cat=X à chaque passage de boucle.

par exemble si je clique sur un des liens generé, au 2eme passage $_SERVER['REQUEST_URI'] vaut deja ?page=1&cat=X

du coup $url = ?page=1&cat=1&cat=2

auriez vous une autre idée pour ecraser ce resultat, je suis perdu :(

merci encore

Invité
Invité n'ayant pas de compte PHPfrance

09 déc. 2005, 02:32

j'ai besoin de votre aide, j'ai beau reflechir puis reflechir et reflechir encore je ne trouve aucune solution à mon probleme.

il doit bien avoir un moyen de venir a bout de ce script :?

Eléphant du PHP | 383 Messages

09 déc. 2005, 08:21

vu comme ca forcement... on avais pas pense a ce qui se passait apres le premier clic. dans ce cas, le plus simple a mon avis est d'utiliser une expression reguliere pour virer le ?cat.... au debut. un truc du genre :
//non teste et non garanti, devrait virer tout ce qui suit le ?
$url_initiale = preg_replace('#\?.*#,'',$_SERVER['REQUEST_URI']); 

Eléphant du PHP | 71 Messages

14 déc. 2005, 00:06

merci jobjertz :wink:

c'est tout a fait ce qu'il me fallait :)

j'ai lu quelque tuto sur les expressions regulieres et j'ai donc reussit à coder ceci :
	$rep = scandir($curdir);
	foreach($rep as $cat=>$p)
		{
		print "<a href='?page=".$_GET['page']."&cat=".$cat."&img=1'>| ".$rep[$cat]." |</a>\n";
		if(isset($_GET['cat']))
			{
			$cat = '/cat='.$_GET['cat'].'/';
			$new_cat = 'cat='.$cat;
			$url = preg_replace($cat, $new_cat, $_SERVER['REQUEST_URI']);
			}
		}
ca fonctonne nikel :wink:

merci le coup de pouce.

Eléphant du PHP | 71 Messages

18 déc. 2005, 22:12

desolé pour l'enrmité que j'ai ecrite c'etait normal que cela fonctionnait je n'utilisait pas $url donc preg_remplace non plus :oops:

voici en fait le bon code :
foreach($rep as $cat=>$p)
	{
	if(isset($_GET['cat']))
		{
		$new_cat = 'cat='.$cat;
		$cur_cat = '/cat='.$_GET['cat'].'/';
		$url = preg_replace($cur_cat, $new_cat, $_SERVER['REQUEST_URI']);
		}
	print "<a href='".$url."'>| ".$rep[$cat]." |</a>\n";
	}
Bonne annés a tous :D