Creation de pages "index.php?page=1"

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Creation de pages "index.php?page=1"

par Invité » 22 oct. 2006, 16:04

Je vous remercie pour toutes ces reponses.
J'en prends note.

par Mim » 22 oct. 2006, 13:30

La liste de mes pages étant devenue assez longue, j'ai opté pour la solution BDD. ;-)
Un aperçu de ma classe Page :
class Page {

	var $nom;
	var $nom2;	
	
	function Page($nom) {
	
		global $db;

		// Cas des pages d'erreur : 403, 404...
		if ( is_numeric( $this->nom = $nom ) ) {
			$this->forcerInclusion();
			return true;
		}
				
		// On execute la requete et on verifie qu'elle a fourni un resultat	(tableau)
		if ( is_array( $this->nom2 = $db->requete("SELECT", " exec FROM pages WHERE call = '$nom'") ) )
			$this->nom2 = $this->nom2['exec'];
		
		// Si on a un entier c'est que le resultat de la requete est vide (cf. classe Db)
		// donc on force l'affichage de la page 404
		else if ( is_int( $this->nom2 ) )
			$this->Page("404");
		
		// ... sinon une erreur s'est produite dans la BDD
		// donc on force l'affichage de la page d'accueil (ou autre...)
		else {
			$this->nom = "bdd";
			$this->forcerInclusion();
			return true;
		}
			
	}
	
	
	function forcerInclusion() {
		
		$this->nom2 = $this->nom . ".php";
		
	}
	
}
À partir de là, il me suffit d'écrire dans mon index :
$p = new Page( $page ? $page : "accueil" );
include_once($p->nom2);
Où $page contient la valeur récupérée dans la barre d'adresse.

par Cyrano » 22 oct. 2006, 11:12

Élégant et effectivement plus court. :)

par naholyr » 22 oct. 2006, 11:07

Pour continuer dans le listing des méthodes disponibles, en général mon index.php ressemble à ça :
<?php

// configuration des pages acceptées
$pages = array(
  'accueil' => 'accueil',
  'recep' => 'reception',
  'envoi' => 'envoi',
  'ecrire' => 'ecrire'
);

// page par défaut
$page_par_defaut = 'accueil';

// pré-exécution commune à tout le site
// ...

// inclure la bonne page
$page = isset($_GET['page']) ? $_GET['page'] : $page_par_defaut;
$script = isset($pages[$page]) ? $pages[$page] : $pages[$page_par_defaut];
include 'pages/' . $script . '.php';

// post-exécution commune à tout le site
// ...

?>
L'avantage c'est que tu n'as qu'à modifier le tableau du tout début (et créer la page correspondante dans le dossier 'pages/') pour ajouter/supprimer une page reconnue.

par agité » 22 oct. 2006, 09:21

yep j'ai percuter après coup :oops:

par Cyrano » 22 oct. 2006, 09:21

@agité, Le "isset($_GET['mode'])" n'est pas nécessaire...
<?php
if ($_GET['mode'] == "reception") {
 include("recep.php");
} elseif ($_GET['mode'] == "envoie") {
 include("envoie.php");
} elseif ($_GET['mode'] == "ecrire") {
 include("mail.php");
} else {
 include("recep.php");
}
?>
Faux : si il n'y a pas de paramètre dans l'url, ce code va retourner une erreur : "undefined index xyx in .... line ..."

Voici la méthode que j'utilise personnellement

par version2 » 22 oct. 2006, 09:10

@agité, Le "isset($_GET['mode'])" n'est pas nécessaire...
<?php
if ($_GET['mode'] == "reception") {
 include("recep.php");
} elseif ($_GET['mode'] == "envoie") {
 include("envoie.php");
} elseif ($_GET['mode'] == "ecrire") {
 include("mail.php");
} else {
 include("recep.php");
}
?>

par agité » 22 oct. 2006, 05:58

Pour reprendre ton exemple, sur le script que j'ai utiliser pour des pseudo frame comme ce que tu veux faire j'ai mis ceci :
<?php 

if (isset($_GET['mode']) && $_GET['mode'] == "reception") {

	include("recep.php");

 }elseif (isset($_GET['mode']) && $_GET['mode'] == "envoie")

	include("envoie.php");

}elseif (isset($_GET['mode']) && $_GET['mode'] == "ecrire"){

	include("mail.php");

}else{
														        include("recep.php");

}

?>

utiliser la fonction include pour ajouter la page correspondant et si aucune d'elle n'est a afficher mettre par ta page principal.

Re: Creation de pages "index.php?page=1"

par version2 » 22 oct. 2006, 01:54

Bonsoir

J'ai trouvé quelques topics abordant mon problème mais je n'arrive pas à le resoudre.
Etant debutant en php, je souhaite creer plusieurs pages du style :
Je ne sais pas du tout comment faire.
Si quelqu'un pouvait m'aider, ce serait sympa.
Merci d'avance

P.S : Desolé si mon sujet a déja été abordé.
Comme ca?:
<?php
if ($_GET['page'] == "chapitres") {
 echo "Mettre le texte ici.";
} else if ($_GET['page'] == "1") {
 echo "Mettre le texte ici.";
} else {
 echo "Page non trouvée.";
}
?>

Creation de pages "index.php?page=1"

par kiss20 » 22 oct. 2006, 00:12

Bonsoir

J'ai trouvé quelques topics abordant mon problème mais je n'arrive pas à le resoudre.
Etant debutant en php, je souhaite creer plusieurs pages du style :
Je ne sais pas du tout comment faire.
Si quelqu'un pouvait m'aider, ce serait sympa.
Merci d'avance

P.S : Desolé si mon sujet a déja été abordé.