question adressage menu

question adressage menu - PHP - Programmation

Marsh Posté le 15-10-2006 à 17:47:30    

je developpe un site avec un menu, chaque bouton dirige grace a la commande <A HREF> </A> vers une nouvelle page
quand je me deplace sur le site, l'adresse de chaque page est de la forme www.monsite.com/page2.php
j'ai lu qu'il etait possible/preferable/obligatoire(?) d'avoir des adresses de type www.monsite.com/page?=page2 ou qqe chose de ce type
 
je ne comprend pas comment obtenir ce type d'adresse, pouvez vous m'eclairer  ?
 
merci

Reply

Marsh Posté le 15-10-2006 à 17:47:30   

Reply

Marsh Posté le 15-10-2006 à 17:52:51    

Bonjour,
je ne vois pas en quoi c'est préférable... Mais si tu y tiens vraiment :
http://fr.php.net/include
http://fr.php.net/require
 
Eventuellement :
http://www.google.fr/search?hl=fr& [...] %3Dlang_fr
 
Sinon ya toujours l'url rewriting aussi :
http://www.google.fr/search?hl=fr& [...] %3Dlang_fr

Reply

Marsh Posté le 15-10-2006 à 18:04:33    

ah merci, ça s'appelle le rewriting alors
c'est le mot qui me manquait pour la recherche
je n'y tient pas specialement mais j'ai cru comprendre que c'etait preferable

Reply

Marsh Posté le 15-10-2006 à 18:06:55    

non, page.php?page=page2 n'est pas de l'url rewriting.
 
C'est juste l'appel de la page page.php avec un parametre page qui a la valeur page2 .. rien d'autre :)

Reply

Marsh Posté le 15-10-2006 à 18:20:27    

ok
de tte façon pour les 2 c'est un peu trop compliqué pour le moment, j'y reviendrais en temps voulu
mais d'apres ce que j'ai compris ça peut permettre d'eviter des vilains bots de visiter certaines pages

Reply

Marsh Posté le 15-10-2006 à 19:37:02    

En fait ca depend du contenu de tes pages.
 
Imaginons un site avec 3 categories, les données de ses categories sont stockées en base et la presentation des données est la même.
 
En gros pour l'acces aux infos tu n'a besoin que d'un identifiant, celui de la categorie que tu desire afficher.
 
donc au lieu d'avoir 3 fichier .php cat1.php cat2.php cat3.php tu en as qu'un seul auquel tu va passer un parametre (disons id pour faire simple). cat.php?categorie_id=1 (ou 2 ou 3) etc... et tu y gagne en ligne de code, en temps de mise a jours, résolution de bugs, corrections diverses etc... :)

Reply

Marsh Posté le 15-10-2006 à 19:45:36    

c'est le type de page que je compte utiliser en effet
seulement apparemment il va falloir que je fasse une configuration d'un fichier .htaccess
 
ensuite comment definir l'id de chaque page ? un id fixe ? ou un id relatif enregistré ds ma bdd pour chaque element, un id qui change automatiquement selon la categorie ?

Reply

Marsh Posté le 15-10-2006 à 19:52:17    

non le htaccess c'est pour l'URL rewriting justement, pour le moment laisse ca de coté,  j'imagine que tu debutes en PHP donc vaut mieux avoir des URLS simples et lisibles facilement (et donc explicites).
 
Ben pour tes id, il faudra voir coté BDD ... normalement tu aura un identifiant pour chaque categorie en auto-increment. Il te faut l'utiliser pour ton menu...
 
En fait ton menu sera dynamique, sinon va devoir le modifier a chaque fois que tu fais une modif dans ta BDD.
 
Une premiere requete qui va chopper les nom de categorie avec l'id (pour faire le menu : <a href="$id">$nom</a> )
 
Et une autre dans ta page qui ira chercher les infos de la categorie en question (contenu & co)
 
M'enfin je sais pas comment marche ta BDD ni quels sont tes tables, mais le principe est la.

Reply

Marsh Posté le 15-10-2006 à 20:00:21    

ok merci pour ces infos
pour le moment ma bdd n'est pas encore developpée, j'essaye de comprendre tout ces principes pour la developper correctement
autrement normalement id unique pour chaque element d'une même categorie, donc pourquoi un auto_increment ?
je comptais faire un auto_increment pour un id propre a chaque element, et donc peut etre en plus un id pour chaque categorie
compliqué tout ça


Message édité par Fazer916 le 15-10-2006 à 20:03:06
Reply

Marsh Posté le 15-10-2006 à 20:08:09    

en fait tu as en gros un schema de gestion de contenu HYPRA SIMPLIFIE qui pourrait etre le suivant.
 
Categorie :
id (primary key auto-inc)
Nom
Rang (histoire de les classer comme tu veux facilement)
 
Elements :
id (primary key auto-inc)
Nom
Contenu
Rang
id_categorie (pour savoir a quelle cat il appartient
 
Bref pour ton menu tu afficher toute la table categorie, et ensuite tu filtre la table element avec le parametre que tu va passer a ta page cat.php (si categorie_id=2 tu aura un WHERE id_categorie = 2 en gros ...)
 
C'est pas tres propre tout ca, mais c'est le principe et ca fonctionne.
 
Je te conseil d'aller sur des sites style phpdebutant & co pour apprendre plein de chose tout seul, t'y sera gagnant a tous les niveaux.

Reply

Marsh Posté le 15-10-2006 à 20:08:09   

Reply

Marsh Posté le 15-10-2006 à 20:11:40    

je suis deja allé sur ce site, j'y retournerais, mais j'ai du mal a trouver les infos qui me seront utile
 
je pensais pas qu'il faille faire 2 tables, je pensais faire en gros de cette façon
 
Elements :  
id (primary key auto-inc)  
Nom  
Contenu  
Rang  
categorie
 
mais pour le menu ça doit etre moins pratique
 
merci en tout cas je relirais tout ça, j'en apprend de tous les cotés.

Reply

Marsh Posté le 15-10-2006 à 20:14:53    

bah t'es obligé de sortir categorie de ta table Elements, enfin tu n'y laisse que l'identifiant, mais surement pas un nom!
 
Ta table ne serait plus dutout normalisée, pleine de redondances etc... bref ca serait une tres mauvaise base, même si ca fonctionnerait sur des 10enes/100enes d'entrées.

Reply

Marsh Posté le 21-10-2006 à 16:14:47    

bon je fais du menage dans mes posts, je viens de separer en 2 fichiers, mais j'ai qqes problemes,
 
si je fais un lien vers une adresse de ce type (menu de la page accueil)

Code :
  1. <A HREF="page.php?id=1">  <IMG src="machin.jpg"></A>


dans ma page d'index, il n'y aura pas d'analyse de l'id, celle ci ne se fera pas
 
alors que si je fais une adresse de ce type

Code :
  1. <A HREF="?id=1">  <IMG src="machin.jpg"></A>


je pourrais analyser mon id grace a ce code,

Code :
  1. if ( isset($_GET['id']) && $_GET['id'] >= 1 && $_GET['id'] <= 8 )
  2. {
  3. ...
  4. }


 
par contre j'aurais une adresse du type index.php?id=1
 
alors que je voudrais une adresse du type index.php/page.php?id=1
même si je fais un truc du type

Code :
  1. include('page.php?id='.$_GET['id']);


 
avez vous une solution ?

Reply

Marsh Posté le 21-10-2006 à 16:24:56    

Code :
  1. index.php?page=mapage&id_truc=1


Qui après url rewriting peut très bien devenir

Code :
  1. mapage/index.php?id_truc=1


ou même

Code :
  1. mapage/1/index.php


 
Après le débat sur l'url, t'as ton index qui ne fait que demander le traitement à un autre script :)

Reply

Marsh Posté le 21-10-2006 à 16:38:33    

en gros mon index charge la page d'accueil, qui contient un menu, tout ça a l'adresse index.php
quand je clique sur le menu, qui renvoi un id different selon le bouton cliqué, je voudrais me retrouver sur la page

Code :
  1. index.php/page.php?id=1


 
j'y arrive uniquement si je fais depuis ce bouton un lien du type  

Code :
  1. <A HREF="page.php?id=1"><IMG src="machin.jpg"></A>


Mais dans mon index pour eviter la faille de securité, je verifie si le id est correct, mais celui-ci veut bien se verifier seulement si je fais un lien du type

Code :
  1. <A HREF="?id=1"><IMG src="machin.jpg"></A>


 
Ou alors 2e solution, j'utilise ce que tu dis, qui semblerais me correspondre, c'est a dire

Code :
  1. index.php?page=mapage&id_truc=1


 
avec ce type de lien je pourrais analyser id et page c'est bien ça ?
seulement 'page', j'aimerais que ça reste de façon fixe en page.php, donc je ne sais pas si c'est vraiment utile d'en faire une variable
 
et en plus de cela, il semblerait qu'avec ce type de lien on reste dans la page index.php, donc je vais me retrouver en superposition avec mes menus et tout le reste, ce qui arrive justement quand je fais

Code :
  1. index.php?id_truc=1


 
A vrai dire 'page' n'a pas besoin d'etre un argument, puisque pour les autres pages, hors menu, j'utilise les liens direct du type contact.php

Reply

Marsh Posté le 21-10-2006 à 16:43:44    

en gros si je fais un lien du type

Code :
  1. index.php?page=mapage&id_truc=1


 
je vais rester sur ma page index mais avec des arguments 'page' et 'id_truc', c bien ça ?
 
c'est ça qui me gene, j'aimerais changer de page clairement
 
ou alors c'est mon include qui doit me permettre de changer de page ?
dans ce cas de quelle façon puisque

Code :
  1. include('page.php?id='.$_GET['id']);

ne fonctionne pas


Message édité par Fazer916 le 21-10-2006 à 16:45:46
Reply

Marsh Posté le 21-10-2006 à 16:47:45    

J'ai pas bien compris, t'as juste une page page.php ou tu seras amené à en avoir plusieurs :??:
 
Le concept général c'est qu'il vaut mieux n'avoir qu'un point d'entrée dans ton application, qui lui dispatche après aux différents scripts :)
 
Donc t'es obligé de définir les actions que tu veux utiliser et leur associer un script.
 
Rien ne t'empêche en faisant simple de faire un truc genre:
 

Code :
  1. $page=$_GET['page']; //+ vérifications
  2. switch($page){
  3.    case 'mapage1':
  4.      include 'mapage1.php';
  5.    break;
  6.    case 'mapage2':
  7.     ...
  8.    break;
  9. ...
  10. }


ET dans mapage1.php tu récupères les paramètres dont tu as besoin, ils seront toujours accessibles via  $_GET['variable'] :)

Reply

Marsh Posté le 21-10-2006 à 16:54:36    

en gros j'ai une page d'accueil, avec des liens dans des coins du type 'contact.php', 'aide.php', etc... en lien direct
et j'ai en plus de ça un menu, avec chaque bouton correspondant a une categorie de ma base de donnee, et quand on clique sur un bouton, cela charge une page unique du type page.php (qui charge des elements de la base de donnee), avec un id correspond a la categorie voulue, et cette page.php modifiera son contenu en fonction de cet id justement
 
pour cette raison j'aimerais passer du menu de accueil.php, avec verification de l'id sur index.php, verifier que cet id n'est pas une categorie inconnue, si c'est bon, charger la page page.php?id=un_numero
 
c'est peut etre pas possible
 
mais en gros, y a 2 choses qui me bloque,
si je fais un lien du type

Code :
  1. <A HREF="?id=1"><IMG src="machin.jpg"></A>

je reste dans la page index, donc ça fait une superposition pas belle, et si je fais

Code :
  1. <A HREF="page.php?id=1"><IMG src="machin.jpg"></A>

il n'y aura pas de verification de l'id depuis la page index, donc faille de securité tout ça
 
arf, je suis dans une impasse

Reply

Marsh Posté le 21-10-2006 à 17:05:31    

en fait apres reflexion je n'aurais pas de faille de securité si je ne fais pas de test de l'id, et si je reste dans ma page page.php
 
donc plus aucun pb
 
merci a toi

Reply

Marsh Posté le 21-10-2006 à 17:11:51    

Ce qui fait ton index à l'heure actuelle c'est surement la page d'accueil, il suffit de modifier ça pour que la page d'accueil soit un des états attendus :)
 
Et ainsi tu as une page index qui gère le gabarit identique à chaque page de ton site (entête, menu, pied...) et tu fais simplement un include dans un div pour chaque "page" que tu voudrais :)
 
Avantage, t'as le code de tes pages indépendant du reste mais pas besoin de te soucier du code entier de la page dans la mesure où c'est le même partout et géré par l'index ;)

Reply

Marsh Posté le 21-10-2006 à 18:52:12    

c un peu ce que j'ai fait, sauf que tout est ds la page index, et je fais un include pour certaine partie, du css pour d'autre, etc
et pas de liens dynamiques pour les pages de bases, j'en vois pas trop l'interret, et il faudrait tout remodifier
dans chaque page je fais un include pour la partie superieure par exemple, c'est moins bien que de modifier que la partie du bas ?
 
EDIT. ok j'ai tout refait en lien dynamique, ça fait plus net


Message édité par Fazer916 le 21-10-2006 à 19:24:58
Reply

Marsh Posté le 21-10-2006 à 19:35:31    

en fait de faire tout le site de cette façon ça me crée des erreurs avec l'ouverture de session
dès que je suis logué c le basard
je vais revenir comme avant je pense

Reply

Marsh Posté le 21-10-2006 à 20:57:19    

quand on utilise des pseudos-frames, dans quelle page faut-il mettre session_start() ?
 
faut-il modifier les liens des pages appelées par les formulaires ?
 
car chez moi je n'ai que des plantages


Message édité par Fazer916 le 21-10-2006 à 20:57:58
Reply

Marsh Posté le 22-10-2006 à 15:11:05    

Faut voir qu'au final comme ça t'as qu'une page, ton index :) Donc c'est uniquement en tête de celui là qu'il faut gérer ta session ;)
 
Après tu fais que inclure du code dans ta page (php ou html) ;) Donc ta page est faite dans l'index avec la gestion des différents éléments: session, cookie, entête (comprendre <html><head>...</head><body> ), le corps et le pied(...</body></html> ). Plus besoin de gérer ça ailleurs, c'est là que ça se simplifie, pour modifier un truc sur tes pages, t'as que l'index à modifier et ça modifie partout ;)
 
Pour les formulaires oui, cf l'autre topic :)

Reply

Marsh Posté le 22-10-2006 à 17:08:48    

j'ai le droit d'ouvrir le <BODY> sur l'entete, et de le fermer </BODY></HTML> sur le pied de la page ?
 
car jusqu'a present je l'ouvre et ferme plusieurs fois par page (une fois pour l'entete, une autre fois pour le contenu
 
pas encore de pied de page puisque je ne sais pas comment faire pour qu'il reste en dessous de tout le reste de façon dynamique suivant la hauteur du contenu

Reply

Marsh Posté le 24-10-2006 à 04:02:33    

:ouch:  
Tu veux tuer le w3c  :heink:  
 
Un body et un seul par page, justement tu l'ouvres dans ton entete et tu le ferme dans le pied de page et comme ça pas besoin de t'en soucier ailleurs: tu codes que le corps par convention entre toi et toi même :d

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed