8791 sujets

Développement web côté serveur, CMS

Bonjour à tous !

J'utilise le logiciel JAlbum pour créer des diaporamas, seulement il y avait évidemment des problèmes de liens à renommer pour que le tout fonctionne avec des pseudos-frames PHP (liens du genre : index.php?page=...). Quelqu'un a trouvé la parade pour le skin "Minimal"... si vous êtes intéressés, c'est ici : http://testskin.deruiter.jp/testskin/index.php?page=Home

Le problème c'est qu'il faut ajouter un script PHP sur la page index pour qu'elle repère si la page demandée est un album photo (avec les paramètres "sub1"...) ou une page normale (paramètre "page")... ou si elle est introuvable afficher la page d'accueil. Il y avait un exemple sur le site que j'ai donné plus haut, mais ça ne marche pas chez moi. Et après maints essais, impossible de faire fonctionenr correctement.

Je progresse un peu, mais je me demande si ça ne serait pas plutôt du "bricolage PHP" Smiley lol ... Voilà ce que j'ai :


<?php
             if(isset($_GET['page']) AND file_exists($_GET['page'].'.php')) // Check if 'page' parameter is present (mandatory)
             {
                   $page = $_GET['page'].'.php'; // Store parameter
             }
             if (isset($_GET['sub1'])) // Check if 'sub1' parameter is present (mandatory)
             {
                   $sub1 = $_GET['sub1']; // Store parameter
             }
             if (isset($_GET['sub2'])) // Check if 'sub2' parameter is present
             {
                   $sub2 = $_GET['sub2']; // Store parameter
             }
             if (isset($_GET['sub3'])) // Check if 'sub3' parameter is present
             {
                   $sub3 = $_GET['sub3']; // Store parameter
             }
             if (isset($_GET['albumname'])) // Check if 'albumname' parameter is present (mandatory)
             {
                   $albumname = $_GET['albumname']; // Store parameter
             }
             if (isset($_GET['index'])) // Check if 'index' parameter is present
             {
                   $index = $_GET['index']; // Store parameter
             }
             if (isset($_GET['photo'])) // Check if 'photo' parameter is present
             {
                   $photo =  $_GET['photo']; // Store parameter
             }
             $albumurl=''; // Clear URL
             if (isset($sub1)) // Check if album or photo is requested
             {
                   $albumurl = 'ALB_PHOT/'.$sub1.'/'; // Start URL with "Albums" and add first (mandatory) subfolder
                   if (isset($sub2))$albumurl = $albumurl.$sub2.'/'; // Add second subfolder to URL if present
                   if (isset($sub3))$albumurl = $albumurl.$sub3.'/'; // Add third subfolder to URL if present
                   if (isset($albumname))$albumurl = $albumurl.$albumname.'/'; // Add albumname to URL  if present
                   // If photo is requested add "slides" and photoname, and append html extension
                   if (isset($photo))$albumurl = $albumurl.'slides/'.$photo.'.php';
                   // Else if an album page is requested, add pagename, and append html extension
                   else if (isset($index))$albumurl = $albumurl.$index.'.php';
                   // Else a subfolder rootpage is requested, so add "index", and append html extension
                   else $albumurl = $albumurl.'index.php';
                   include ($albumurl); // include the generated URL
             }
             
             if(isset($_GET['page']) == NULL AND isset($_GET['sub1']) == NULL)
                                     {
                                     include("framedroite.php");}
                                     else
                                     {
                                        include($page);
                                     }                                
      ?> 


Là tout fonctionne : la page "index" s'affiche par défaut, les pages "normales" se lancent et les diaporamas aussi. Si ce n'est que sous le diporama j'obtiens deux messages d'erreur (j'utilise EasyPHP pour la visualisation en local).

Notice: Undefined variable: page in c:\program files\easyphp1-8\www\index.php on line 132

Warning: main(): Failed opening '' for inclusion (include_path='.;C:/Program Files/EasyPHP1-8\php\pear\') in c:\program files\easyphp1-8\www\index.php on line 132


Je suis franchement mauvais en PHP, donc peut-être pourriez-vous m'aider. Je suis sûr que ce n'est grand-chose mais je n'arrive pas à voir où.

Merci d'avance ! Smiley smile
Modifié par Omega 09 (19 Oct 2007 - 20:56)
Salut Omega Smiley cligne ,

ton code serait bien plus lisible s'il était entre des balises [ code] et [ /code] Smiley murf !

Les messages d'erreur viennent de ce que ta variable $page n'existe pas puis d'un essai de faire un include d'une page inexistante...

A noter que isset(condition) ne sera jamais égal à null puisque cela renvoie true ou false.

Essaies peut-être cela :
<?php
$page = (!empty($_GET['page'])) ? $_GET['page'] : '';
$sub1 = (!empty($_GET['sub1'])) ? $_GET['sub1'] : '';
$sub2 = (!empty($_GET['sub2'])) ? $_GET['sub2'] : '';
$sub3 = (!empty($_GET['sub3'])) ? $_GET['sub3'] : '';
$albumname = (!empty($_GET['albumname'])) ? $_GET['albumname'] : '';
$index = (!empty($_GET['index'])) ? $_GET['index'] : '';
$photo = (!empty($_GET['photo'])) ? $_GET['photo'] : '';

if (($page != '') && (file_exists($page.'.php'))) {
	$page .= '.php';

	$albumurl=''; // Clear URL
	if ($sub1 != '') { // Check if album or photo is requested
		$albumurl = 'ALB_PHOT/'.$sub1.'/'; // Start URL with "Albums" and add first (mandatory) subfolder
		if ($sub2 != '') {
			$albumurl = $albumurl.$sub2.'/'; // Add second subfolder to URL if present
		}
		if ($sub3 != '') {
			$albumurl = $albumurl.$sub3.'/'; // Add third subfolder to URL if present
		}
		if ($albumname != '') {
			$albumurl = $albumurl.$albumname.'/'; // Add albumname to URL if present
		}
		// If photo is requested add "slides" and photoname, and append html extension
		if ($photo != '') {
			$albumurl = $albumurl.'slides/'.$photo.'.php';
		}
		// Else if an album page is requested, add pagename, and append html extension
		else if ($index != '') {
			$albumurl = $albumurl.$index.'.php';
		}
		// Else a subfolder rootpage is requested, so add "index", and append html extension
		else {
			$albumurl = $albumurl.'index.php';
		}
		include ($albumurl); // include the generated URL
	}
}

if(($page == '') && ($sub1 == '')) {
	include("framedroite.php");
}
else {
	include($page);
} 
?>

A+ Smiley smile
Salut,

Merci beaucoup pour la réponse si rapide Smiley smile .
Désolé pour le [code], c'est corrigé.

Je viens d'essayer, il n'y a qu'un problème lorsque le paramètre d'url "sub1" est détecté et qu'il essaye d'ouvrir le diaporama. J'obtiens alors ce message :

Warning: main(): Failed opening '' for inclusion (include_path='.;C:/Program Files/EasyPHP1-8\php\pear\') in c:\program files\easyphp1-8\www\index.php on line 129
Et à la ligne 129, c'est ça : include($page);

Bizarre... c'est peut-être parce qu'il comprend ceci : s'il n'y a ni le paramètre "page" et ni "sub1", inclure "framedroite.php", sinon s'il y a le paramètre "page" et "sub1", inclure "$page". Il faudrait que ce soit pour l'une ou l'autre. En somme, inclure "$page" si on a le paramètre "page" dans l'url et inclure "$albumurl" si on a le paramètre "sub1"...
C'est possible d'utiliser un "ou" en PHP ?

Merci encore Smiley cligne .
Ah oui... exact ! J'ai repris le test de ton code mais ça ne va pas Smiley murf !

Tu peux remplacer :
else {
	include($page);
}
par
elseif ($page != '') {
	include($page);
}

En fait le test disait :
SI $page est vide ET $sub1 est vide
ALORS inclure framedroite.php
SINON inclure $page

maintenant c'est :
SI $page est vide ET $sub1 est vide
ALORS inclure framedroite.php
SINON
SI $page n'est pas vide
ALORS inclure $page

pour le OU tu peux utiliser || ou OR (pour plus d'infos, voir les opérateurs logiques).
Modifié par Heyoan (19 Oct 2007 - 22:01)
Je réponds un peu tard... Smiley smile

Je ne comprends pas du tout d'où peut venir le problème. Le diaporama ne s'affiche pas. L'include ne marche pas a priori. Il n'y a aucun message d'erreur. Pourtant après ce que tu as expliqué, ça paraît logique et ça devrait fonctionner Smiley ohwell .

Merci pour toutes les infos Smiley smile .
Salut Omega,

je viens de jeter un œil au site de JAlbum et en relisant ton premier post je comprends mieux comment ça doir fonctionner :
- si page est renseignée dans l'url et qu'elle existe on l'include et on sort.
- si page est renseignée dans l'url mais qu'elle n'existe pas on include la page d'accueil (framedroite.php ?) et on sort.
- si sub1 est renseigné dans l'url on include un album et on sort.
- si ni page ni sub1 ne sont renseignés dans l'url on include la page d'accueil (framedroite.php ?) et on sort.

Ce qui donne :
<?php
$page = (!empty($_GET['page'])) ? $_GET['page'] : '';
$sub1 = (!empty($_GET['sub1'])) ? $_GET['sub1'] : '';
$sub2 = (!empty($_GET['sub2'])) ? $_GET['sub2'] : '';
$sub3 = (!empty($_GET['sub3'])) ? $_GET['sub3'] : '';
$albumname = (!empty($_GET['albumname'])) ? $_GET['albumname'] : '';
$index = (!empty($_GET['index'])) ? $_GET['index'] : '';
$photo = (!empty($_GET['photo'])) ? $_GET['photo'] : '';

if ($page != '') {
	if (file_exists($page.'.php')) {
		$page .= '.php';
		include($page);
	}
	else
	{
		include("framedroite.php");
	}
}
elseif ($sub1 != '') { // Check if album or photo is requested
	$albumurl = 'ALB_PHOT/'.$sub1.'/'; // Start URL with "Albums" and add first (mandatory) subfolder
	if ($sub2 != '') {
		$albumurl = $albumurl.$sub2.'/'; // Add second subfolder to URL if present
	}
	if ($sub3 != '') {
		$albumurl = $albumurl.$sub3.'/'; // Add third subfolder to URL if present
	}
	if ($albumname != '') {
		$albumurl = $albumurl.$albumname.'/'; // Add albumname to URL if present
	}
	// If photo is requested add "slides" and photoname, and append html extension
	if ($photo != '') {
		$albumurl = $albumurl.'slides/'.$photo.'.php';
	}
	// Else if an album page is requested, add pagename, and append html extension
	else if ($index != '') {
		$albumurl = $albumurl.$index.'.php';
	}
	// Else a subfolder rootpage is requested, so add "index", and append html extension
	else {
		$albumurl = $albumurl.'index.php';
	}
	include ($albumurl); // include the generated URL
}
else { // Si ni page ni sub1
	include("framedroite.php");
} 
?>

A+
Tout marche à merveille ! Smiley smile
Je te remercie pour toute ton aide, très précieuse, je n'aurais jamais trouvé seul. C'est vraiment sympa de t'être penché sur mon problème. Et en même temps ça m'a permis de comprendre un peu mieux comment tout cela fonctionnait.

Merci encore Smiley biggrin .