OVH Cloud OVH Cloud

Passage frames HTML vers PHP

3 réponses
Avatar
Dominique Ottello
Bonjour,

Étant maintenant à la retraite, j'ai décidé de supprimer les "frames" de
mon site http://dominique.ottello.free.fr pour les remplacer par une
gestion dynamique en PHP, pour le moment en essais sur
http://air.intakes.free.fr.

Je ne me suis mis au PHP que depuis trois jours et, malgré une lecture
attentive des différents tutoriaux présents sur des sites comme
http://lwest.free.fr/doc/php/tutorial.php3, http://www.phpdebutant.org/
ou http://www.phpscripts-fr.net/ et autres et la lecture du livre PHP et
MySQL pour les Nuls, je n'ai pas trouvé de réponses à mes
interrogations.

1 - Première question :
En HTML et frames, l'affichage des différentes pages s'effectuait de
manière "transparente" par un simple clic sur un lien <a href=... qui
comprenait éventuellement une étiquette (#xxxx) pour afficher la page à
partir de cette cible et, si avec les "include", j'arrive à charger la
bonne page au bon endroit, je n'arrive pas à effectuer l'affichage au
bon endroit (étiquette #xxxx) :

- Comment procéder en PHP pour afficher la page chargée par un include à
une étiquette déterminée ?

2- Seconde question :
Toujours en HTML et frames, lorsqu'un lien <a href=... faisait afficher
une page d'un autre dossier, par exemple "toto/page.html", les url de
chargement des images de cette nouvelle page étaient en relatif par
rapport au dossier "toto", ce qui n'est pas le cas avec un include.

- Comment procéder en PHP pour qu'une page affichée par un include à
partir d'un autre dossier voie ses url internes en relatif par rapport à
ce nouveau dossier ?

Si ces questions relèvent du "b-a ba" PHP, veuillez m'en excuser mais
malgré toutes mes recherches (peut-être mauvaises) je n'ai pas obtenu de
réponses pertinentes.

De plus, bien que le livre PHP et MySQL pour les Nuls soit didactique et
intéressant, il ne décrit qu'une petit partie des instructions PHP ; je
recherche un ouvrage papier qui répertorie, si possible en français,
toutes les instructions PHP.

Merci.
--
= Dominique Ottello = http://www.ottello.net
Aujourd'hui, l'idéal du progrès est remplacé par l'idéal de l'innovation :
il ne s'agit pas que ce soit mieux, il s'agit seulement que ce soit nouveau,
même si c'est pire qu'avant et cela de toute évidence. Montherlant

3 réponses

Avatar
Dominique Ottello
Dominique Ottello écrivait :

De plus, bien que le livre PHP et MySQL pour les Nuls soit didactique et
intéressant, il ne décrit qu'une petit partie des instructions PHP ; je
recherche un ouvrage papier qui répertorie, si possible en français,
toutes les instructions PHP.


Ce n'est pas "papier" mais sous forme de fichier pdf, la version
complète, en français, comporte 2195 pages et ça se trouve sur
http://www.nexen.net/docs/php/

--
Ce n'est pas parce que l'erreur se propage qu'elle devient vérité. Gandhi
Site aéronautique : http://ottello.net
Concorde dans la presse de 1965 à 2003 : http://le.pointu.free.fr

Avatar
Guillaume Bouchard
Dominique Ottello wrote:
Bonjour,

Étant maintenant à la retraite, j'ai décidé de supprimer les "frames" de
mon site http://dominique.ottello.free.fr pour les remplacer par une
gestion dynamique en PHP, pour le moment en essais sur
http://air.intakes.free.fr.


Bonne initiative. Le jour ou les frames vont disparaitre de la
circulation, il faudra faire un nouveau jour ferié.

1 - Première question :
En HTML et frames, l'affichage des différentes pages s'effectuait de
manière "transparente" par un simple clic sur un lien <a href=... qui
comprenait éventuellement une étiquette (#xxxx) pour afficher la page à
partir de cette cible et, si avec les "include", j'arrive à charger la
bonne page au bon endroit, je n'arrive pas à effectuer l'affichage au
bon endroit (étiquette #xxxx) :


Oki, tu n'as donc pas saisit la difference entre include et frames.
Les frames c'est une technologie coté client qui va appeler plusieurs
pages et les agencées ensemble. Dans ton cas tu avais surement une page
menu et une page contenu.

Dans cette page contenu, tu faisais un liens vers une nouvelle page
contenu avec une ancre #x.

Dans le cas des frames, en fait cela se produit de la façon suivante:

page truc.html#toto
--> Cela demande la page truc.html au serveur
--> affiche dans le jeu de cadre
--> se rend à l'ancre #toto.

En php, le fonctionement est similaire dans certains point.
Pour comencer, tu demandes une seule page au serveur et non pas 3 comme
dans le cas des frames. Cette page contiendra par contre elle, le menu
et le contenu.
Dans cette page contenu, il peut y avoir des liens vers d'autre page qui
contienent aussi un menu et un contenu. Mais le fonctionement des ancres
est strictement le même

Fonctionement :

page truc.html#toto

--> Cela demande truc.html au serveur
--> Cela affiche truc.html ( qui contient aussi le menu)
--> Se rend à l'ancre #toto.

Tout cela pour dire que ton include se fiche eperdument du #toto. c'est
ton navigateur qui s'en occupe, donc en fait il ne faut strictement rien
changer.

Avant tu appelais tes page via page.html#toto, maitenant c'est
page.php#toto :)


2- Seconde question :
Toujours en HTML et frames, lorsqu'un lien <a href=... faisait afficher
une page d'un autre dossier, par exemple "toto/page.html", les url de
chargement des images de cette nouvelle page étaient en relatif par
rapport au dossier "toto", ce qui n'est pas le cas avec un include.


Normal. Avant le navigateur chargais la page toto/page.html, et chargais
les images en relatif par rapport à lui.

Maitenant tu charges la page truc.php qui inclue toto/page.html mais qui
charge en relatif par rapport à truc.php.

- Comment procéder en PHP pour qu'une page affichée par un include à
partir d'un autre dossier voie ses url internes en relatif par rapport à
ce nouveau dossier ?


<set mode="trool" value="true" />

En procedant d'une autre maniere que les techniques de dingue du siecles
dernier que certains sites expliquent encore.

Je pense que ta technique consiste en une page index qui contient le
menu et que tu appeles en lui faisant passer en parametre la page à
appeler. Non ? (index.php?page=toto/page.html)

Je ne reviendrais pas sur le fait que cette technique est lourdes, dur à
maitenir et non securisé quand elle est codé n'importe comment.

Il faut voir cela d'une autre façon.

Tu appeles ta page toto/page.php et dedans tu inclues le menu.

Plusieurs aventages:

- Respect de l'arboresences, tu peut enfin appeler les images en relatif.
- Nom de fichier plus propre (livre.php plutot que index.php?page=livre.php)
- Maitenance plus simple (pas besoin de bidouiller index.php à chaques
pages que tu ajoutes.
- ...

De plus, bien que le livre PHP et MySQL pour les Nuls soit didactique et
intéressant, il ne décrit qu'une petit partie des instructions PHP ; je
recherche un ouvrage papier qui répertorie, si possible en français,
toutes les instructions PHP.


php precit et concit (chui pas certain que concit s'ecrive comme cela :)
au edition oreilly. 50 francs, tient dans la poche. Oki, il date un peu,
mais bon, je pense que tu ne trouvera pas mieux (si ce n'est dans les
bibles à 500 francs qui sortent tous les mois...)

J'espere avoir été precit, je m'embraque toujours dans de longues
phrases sans sens :) De plus, j'ai la flemme de me relir quand c'est
trop long :(

--
Guillaume.

Avatar
Dominique Ottello
Guillaume Bouchard écrivait :

[couic]
Il faut voir cela d'une autre façon.
Tu appeles ta page toto/page.php et dedans tu inclues le menu.
[couic]


Merci de cette explication que j'ai mise en pratique sans trop de
difficultés, il me manquait juste le "déclic" indispensable pour bien
m'imprégner du concept du PHP pour lequel l'interpréteur est,
contrairement à tous les autres langages que j'ai pratiqué, sur le
serveur et non pas sur le client.

J'espère y être arrivé sans faire d'usine à gaz. (site en signature)
--
Ce n'est pas parce que l'erreur se propage qu'elle devient vérité. Gandhi
Site aéronautique :http://ottello.net (avec frames)
http://aviatechno.free.fr (sans frames et en PHP (en travaux))
Concorde dans la presse de 1965 à 2003 : http://le.pointu.free.fr