[php] Calcul sur url

Fermé
damienr Messages postés 11 Date d'inscription vendredi 27 juillet 2012 Statut Membre Dernière intervention 2 août 2012 - 27 juil. 2012 à 20:43
damienr Messages postés 11 Date d'inscription vendredi 27 juillet 2012 Statut Membre Dernière intervention 2 août 2012 - 2 août 2012 à 17:00
Bonjour tout le monde,


Je suis entrain de créer quelques pages en php (par commodité, mes connaissances en php sont très limitées).
Je me heurte à un problème:
Dans un dossier, j'ai beaucoup de pages qui s'apellent "page001.php", "page002.php" etc ...

Je cherche à faire une requête php pour qu'un bouton affiche sur chaque page un lien vers la suivante, et ce en effectuant le calcul "page001" +1 = page002.
J'ai déjà ce qu'il faut pour obtenir le nom de la page courante (en fin de message).
J'imagine que maintenant je dois décomposer mon nom de page en deux variables, une texte et l'autre numérique pour pouvoir effectuer le calcul 001 + 1 = 002 et pour enfin avoir mon lien vers ma page 2.

Le code suivant m'affiche mon nom de page courante, sans l'adresse complète, il faut maintenant que je le modifie et que je l'inclue dans un lien.
$path = $_SERVER['PHP_SELF']; // $path = /home/httpd/html/index.php
$file = basename ($path);
echo"$file"; // index.php


Si quelqu'un a déjà rencontré le même problème, je suis à l'écoute des éventuelles solutions.

à bientôt !
Damien

3 réponses

gilbert1995 Messages postés 414 Date d'inscription samedi 12 septembre 2009 Statut Membre Dernière intervention 30 mai 2013 29
31 juil. 2012 à 06:38
La fonction ci dessous prend en charge tout les 0 ex:01.php,001.php0001.php etc... Elle prend en charge n'importe quel extention aussi.
<?php
function page($act){
		$nom =  substr(basename($_SERVER['PHP_SELF']),0, (strlen(basename($_SERVER['PHP_SELF'])) - (strlen(preg_replace('#[a-z./]#i', '', $_SERVER['PHP_SELF'], -1)) + 4)));
		$nb = strlen(preg_replace('#[a-z./]#i', '', $_SERVER['PHP_SELF'], -1));
	if($act=="next") {
		$n=preg_replace('#[a-z./]#i', '', $_SERVER['PHP_SELF'], -1)+1;
		return $nom . str_pad($n, $nb, '0', STR_PAD_LEFT) . substr(basename($_SERVER['PHP_SELF']), strrpos(basename($_SERVER['PHP_SELF']), '.'));
	} else {
		$n=preg_replace('#[a-z./]#i', '', $_SERVER['PHP_SELF'], -1)-1;
		return $nom . str_pad($n, $nb, '0', STR_PAD_LEFT) . substr(basename($_SERVER['PHP_SELF']), strrpos(basename($_SERVER['PHP_SELF']), '.'));
	}
}
echo page("next");
echo page("prev");
?>
1
gilbert1995 Messages postés 414 Date d'inscription samedi 12 septembre 2009 Statut Membre Dernière intervention 30 mai 2013 29
28 juil. 2012 à 03:37
exemple avec la page001.php
<?php
function next(){$n=preg_replace('#[a-z./]#i', '', $_SERVER['PHP_SELF'], -1)+1;if($n<10){$n='00'.$n;}elseif($n<100){$n='0'.$n;}return $n.".php";}
function prev(){$n=preg_replace('#[a-z./]#i', '', $_SERVER['PHP_SELF'], -1)-1;if($n<10){$n='00'.$n;}elseif($n<100){$n='0'.$n;}return $n.".php";}
echo next(); // page002.php
echo prev(); // page000.php
?>
0
gilbert1995 Messages postés 414 Date d'inscription samedi 12 septembre 2009 Statut Membre Dernière intervention 30 mai 2013 29
29 juil. 2012 à 04:30
Ca marche ?
0
damienr Messages postés 11 Date d'inscription vendredi 27 juillet 2012 Statut Membre Dernière intervention 2 août 2012
30 juil. 2012 à 16:07
Salut Gilbert,

Merci beaucoup pour l'intérêt que tu as porté à mon problème.
Désolé pour le retard de la réponse, j'aurais dû préciser que je n'avais accès à internet que durant la semaine.
J'ai essayé ton code, mais finalement j'utilise un format comme ceci pour mes pages : "pay0001.php" etc, donc ton code ne marche plus avec une décimale de plus.

J'essaye de modifier cela seul pour que ça marche, et sinon je reposterai ici.

Encore une fois, merci de ton aide !
0
damienr Messages postés 11 Date d'inscription vendredi 27 juillet 2012 Statut Membre Dernière intervention 2 août 2012
30 juil. 2012 à 16:17
Hum, je viens d'essayer ceci =>
function next(){$n=preg_replace('#[a-z./]#i', '', $_SERVER['PHP_SELF'], -1)+1;if($n<10){$n='000'.$n;}elseif($n<100){$n='00'.$n;}return $n.".php";}


Mais on me dit :
Fatal error: Cannot redeclare next() in C:\wamp\www\photos\apipil\pay\pay0001.php on line 92

... ai-je loupé ?
0
gilbert1995 Messages postés 414 Date d'inscription samedi 12 septembre 2009 Statut Membre Dernière intervention 30 mai 2013 29
30 juil. 2012 à 22:57
change le nom de la fonction pour autre choses genre page_next() au lieu de next() ;)
0
damienr Messages postés 11 Date d'inscription vendredi 27 juillet 2012 Statut Membre Dernière intervention 2 août 2012
30 juil. 2012 à 23:28
impecc' !!

Ca marche super, avec la modification que j'avais apporté.
Bon par contre j'ai eu un peu de mal à inclure le résultat dans mes liens donc j'ai fait un petit truc un eu moche visible en fin de message.

Par contre j'ai un dernier petit soucis. La formule me rapporte actuellement que le "0002.php" de la fin de l'url par exemple. J'aimerai qu'il me rapporte également la chaine de caractère qui est avant, pour que ça me donne par exemple "pay0002.php". Je ne eux pas inclure ce "pay" avant le code php dans mon lien car ce mot change pour chaque dossier de mon site web.

je bidouille deuis tout à l'heure, pour l'instant sans succès, si je trouve je vous tiens au courant !

encore une fois merci !

<?php
function page_next(){$n=preg_replace('#[a-z./]#i', '', $_SERVER['PHP_SELF'], -1)+1;if($n<10){$n='000'.$n;}elseif($n<100){$n='00'.$n;}return $n.".php";}
function page_prev(){$n=preg_replace('#[a-z./]#i', '', $_SERVER['PHP_SELF'], -1)-1;if($n<10){$n='000'.$n;}elseif($n<100){$n='00'.$n;}return $n.".php";}
?>
<a href="pay<?php echo page_prev();  ?>"><img src="gauche.jpg" width="25" border="1" alt="" /></a>
<a href="pay<?php echo page_next();  ?>"><img src="droite.jpg" width="25" border="1" alt="" /></a>


(je sais c'est pas beau .....)
0
damienr Messages postés 11 Date d'inscription vendredi 27 juillet 2012 Statut Membre Dernière intervention 2 août 2012
31 juil. 2012 à 16:20
Merci beaucoup pour ton aide Gilbert, nous ne nous connaissons pas aussi j'apprécie particulièrement l'aide !

Cette formule paraît bien sympa mais pour autant elle ne marche toujours pas parfaitement, j'ai souvent un "1" qui se rajoute à la fin de la partie alphabétique du nom d'url, et remplace le dernière lettre du nom.

Par ex, si je suis sur la page cory00012.php, le lien suivant s'affiche "cor100013.php"

Quelque chose de bizarre se passe, car certaines url de trois lettres et 4 chiffres se calculent très bien alors que dans d'autres albumsle calcul va mal se faire, et donner par exemple comme résultat "pa10005.php" au lieu de "pay0005.php"
0
gilbert1995 Messages postés 414 Date d'inscription samedi 12 septembre 2009 Statut Membre Dernière intervention 30 mai 2013 29
1 août 2012 à 02:49
as-tu une liste de nom a tester plz
0
gilbert1995 Messages postés 414 Date d'inscription samedi 12 septembre 2009 Statut Membre Dernière intervention 30 mai 2013 29
1 août 2012 à 02:51
Pour moi lorsque je crée une page (pay00099.php) le résultat est pay00100.php pay00098.php
0
damienr Messages postés 11 Date d'inscription vendredi 27 juillet 2012 Statut Membre Dernière intervention 2 août 2012
1 août 2012 à 02:54
Ouaip ! (j'étais justement entrain de m'arracher les cheveux à résoudre ce problème :)

ex de noms de pages au hasard :
cory0008
cory0009
cory00010
cory00011
cory00012
cory00013
pay0001
pay0002
pay0003
echino00015
echino00016
echino00017
echino00018
echino00019
echino00020
echino00021
opuntia0001
opuntia0002
opuntia0003
opuntia0004
opuntia00015
opuntia00016
opuntia00017
opuntia00018
opuntia00019

La chose à prendre en compte c'est que lors du passage de 9 à 10 les trois zéros restent (ce qui n'est finalement pas logique mais toutes mes pages sont comme ça ...)

merci encore !
0
damienr Messages postés 11 Date d'inscription vendredi 27 juillet 2012 Statut Membre Dernière intervention 2 août 2012
1 août 2012 à 02:56
j'essaye de suite également avec pay000100
0
damienr Messages postés 11 Date d'inscription vendredi 27 juillet 2012 Statut Membre Dernière intervention 2 août 2012
1 août 2012 à 03:01
avec pay000100 j'obtiens par exemple pay000099 et pay000101
0