Inclure une page php dans une page HTML [Résolu/Fermé]

Signaler
Messages postés
102
Date d'inscription
jeudi 26 mai 2011
Statut
Membre
Dernière intervention
18 novembre 2011
-
Messages postés
1481
Date d'inscription
samedi 7 mai 2005
Statut
Membre
Dernière intervention
20 décembre 2014
-
Bonjour,
Voilà, j'ai une page principale qui se compose d'un ensemble d'onglets.
Chaque onglets contient une page en php. Je fais donc des includes pour chaque onglets.
Le hic, c'est qu'au chargement de ma page principale, le navigateur charge le contenu de tous les onglets. Cela ne m'arrange pas beaucoup car les onglets contiennent beaucoup de code; et cela prend du temps (enfin, tout est relatif, une seconde seulement en local, mais c'est déjà énorme, et je n'ai même pas envi d'essayer avec un serveur distant ^^).

Donc, j'ai cherché d'autres moyens d'inclure des pages dans une page. J'ai trouvé l'iFrame Loading (un simple script JavaScript qui me permet de charger chaque onglet à la fois (par exemple, si je veux aller sur l'onglet 'Ressource', je clique sur l'entête 'Ressource' et ma page ressource.php est chargée puis affichée.
Voilà la source: https://openclassrooms.com/fr/courses/245710-ajax-et-lechange-de-donnees-en-javascript/245253-iframe-loading

Cela m'ennuie un peu pour plusieurs raisons:
1) Mes pages php (comme ressource.php) générait seulement des morceaux de page HTML et pas des pages entières, or, ça n'a pas trop l'air de marché à la perfection (j'ai pas pu vraiment testé mais bon, j'ai bien peur qu'il me faille faire des <html>,<head> et autre <body>, ce qui ne m'enchante guère.

2) Mon iFrame prend une taille fixe (si la page php affiche quelque chose de plus grand, il y a une barre de défilement). Je n'aime pas trop ça, car je ne connait pas la taille de chaque page, certaine peuvent être très longue et d'autres contiennent seulement une seule ligne.
3) Ca doit être du à autre chose, mais mon code html est lu comme du texte, j'ai des balises <p> qui s'affiche un peut partout, je crois que cela est du au fait que j'ai d'autres scripts JavaScript qui doivent être lu pour que ces <p> soit lu comme du code HTML, mais cela me renvoie à mon (1), j'ai pas envi de refaire une page HTML pour juste un petit script php...

Donc voilà ma question, existe-il un script JavaScript, PHP (ou autre, AJAX me parait être la solution dans ce cas là), pour que ma page principale se charge sans charger le contenu des onglets, et que sur le clique de l'entête d'un onglet, son contenu soit chargé (sachant qu'elle contiennent quasi systématiquement du code php) ?
PS: Il ne faut pas oublier que ces pages doivent être affichée dans une div ou autre à taille variable...

Merci de vos réponses ;)


7 réponses

Messages postés
1481
Date d'inscription
samedi 7 mai 2005
Statut
Membre
Dernière intervention
20 décembre 2014
282
Bonjour,

je ne comprends pas trop, pourquoi ne pas faire un système de liens classiques?

si tu ne veux pas que le contenu des autres onglets soit chargé et que tu ne veux pas avoir à rafraichir la page pour en avoir une autre, il n'y qu'ajax qui pour toi.

Et attention, une page comportant du php doit porter l'extension .php et non .html.
Messages postés
102
Date d'inscription
jeudi 26 mai 2011
Statut
Membre
Dernière intervention
18 novembre 2011
3
Voilà, je n'ai pas envi que la page se rafraîchisse.
Donc, effectivement, AJAX est ce qu'il me faut, mais il permet d'échanger du texte (ou du XML) et pas du code HTML+PHP, donc, existe-il autre chose que le système d'iFrame Loading mais qui fonctionne avec des bouts de pages au lieu de page entière.

Mon plus gros soucis, n'est pas de refaire des pages pour chaque onglet, mon problème est surtout que la zone où est affiché mon script php est de taille fixe et pas de taille variable
J'ai donc des barres de défilement qui ne rendent pas très bien à l'écran...
Donc, entre temps, j'avais pensé faire une variable widht par exemple qui se placera dans mon iFrame (par exemple: <iFrame name='Ressources' width='<?php echo $width ?>'></iFrame>

Le problème, c'est que je ne connais pas tout le temps la taille de mon iFrame, donc, parfois, j'aurais une boîte qui est trop grande (1000px pour afficher une seule ligne) et parfois j'aurais ces barres de défilement.
Existe-t-il une propriété CSS qui me permette de mettre la taille en 'auto' par exemple ?
Dsl mais GOOGLE est le meilleur Ami de l'homme donc essai de chercher a fond ne tiens pas compte de la primière page google!!vas sur la 20ème si il le faut n'abandonne pas!!!
Messages postés
1481
Date d'inscription
samedi 7 mai 2005
Statut
Membre
Dernière intervention
20 décembre 2014
282
Attention à ne pas tout confondre. php est un langage coté serveur qui se "transforme" en html avant d'arriver chez le client.
Le client ne voit que du html et pas de php.

C'est au script php appelé par le moteur ajax de générer dynamiquement le code html destiné à e^tre affiché à l'écran.
Le reste n'est que mise en page avec du css.
Messages postés
102
Date d'inscription
jeudi 26 mai 2011
Statut
Membre
Dernière intervention
18 novembre 2011
3
Ca, je suis d'accord...
Le soucis, c'est qu'avec l'iFrame Loading, la taille de mon <iFrame> (là où se place le résultat de mon script PHP) n'a pas la taille du résultat. Exemple:
Si mon script PHP renvoie une liste , selon l'heure du serveur (drôle d'idée, mais c'est un exemple). Un coups, le script renvoie 14 résultats, un autre, elle en affiche 1024...
L'iFrame sera quoi qu'il arrive de 500px; donc, dans le premier cas, l'iFrame sera trop grand pour son contenu, dans le second, elle sera trop petit. Donc, comment palier à ce problème ?
Messages postés
102
Date d'inscription
jeudi 26 mai 2011
Statut
Membre
Dernière intervention
18 novembre 2011
3
Ma question est mal posée en fait, je crois que l'iFrame Loading ne soit pas ce qu'il me faut tout compte fait...
Messages postés
1481
Date d'inscription
samedi 7 mai 2005
Statut
Membre
Dernière intervention
20 décembre 2014
282
oui, et un div prends une hauteur automatiquement en fonction de son contenu lorsque son positionnement est en absolut ou en relatif.