Page 1 sur 1

résultat du php en html

Posté : 20 nov. 2006, 14:27
par gaeil
bonjour,
j'ai un script php qui retourne du texte issu d'une base sql et affiche des images (en fait l'adresse des images, et ces dernières s'affichent grace à l'instruction <img src=...)
ça peut vous paraître bizarre, mais je souhaiterai mettre le résultat de l'exécution du fichier php dans un fichier html de manière à "figer" dans ce fichier html le résultat, et pouvoir ainsi afficher ce fichier html quand je veux.(et en tout cas ne pas être obligé de relancer le fichier php).
c'est possible ? :roll:
merci

Posté : 20 nov. 2006, 14:42
par Ajoloca
Bonjour,

OUI, c'est possible.
Quand tu fais un 'echo', 'print' tu demandes à PHP d'envoyer le résultat vers la sortie standard, il te suffira donc d'envoyer tes sorties ves un fichier en utilisant les fonctions de manipulation de fichiers.

Posté : 20 nov. 2006, 14:42
par Cyrano
Oui, c'est une forme de ce qu'on appelle la mise en cache.

Pour ça, tu récupères la chaine créée par PHP (code complet de la page en fin de compte) et tu crées un fichier. Pour ça, tu as les fonction fopen(), fwrite() et fclose() qui sont faites pour ça. En parallèle, tu devras avoir un système de détection qui vérifiera si la page existe en HTML ou s'il faut la générer, et éventuellement s'il y a des modifications qui interviennent dans le contenu, il faudra re-générer la page.

Et pour faire ça, au lieu d'afficher le HTML, tu le stockes dans une variable en ajoutant chaque élément HTML. En fin de script, tu fais un echo() de cette variable qui envoie le tout au navigateur après le traitement.

Posté : 20 nov. 2006, 15:30
par gaeil
Bonjour,

OUI, c'est possible.
Quand tu fais un 'echo', 'print' tu demandes à PHP d'envoyer le résultat vers la sortie standard, il te suffira donc d'envoyer tes sorties ves un fichier en utilisant les fonctions de manipulation de fichiers.
OK - je comprend que quand on fait un echo ou un print c'est redirigé vers le périphérique de sortie par défaut, donc l'écran...
dans le bon vieux MSDos, j'aurais su faire print "toto" >monfichier.html.
mais en php, je suis loin d'avoir fait le tour de toutes les fonctions...
et je présume que tu connais la fonction de manipulationde fichiers comme tu dis, qui va bien ? ou tu veux absolument que je me tape les 490 pages ? :cry:
merci

Posté : 20 nov. 2006, 15:34
par Ajoloca
Oui, c'est une forme de ce qu'on appelle la mise en cache.

Pour ça, tu récupères la chaine créée par PHP (code complet de la page en fin de compte) et tu crées un fichier. Pour ça, tu as les fonction fopen(), frwite() et fclose() qui sont faites pour ça. En parallèle, tu devras avoir un système de détection qui vérifiera si la page existe en HTML ou s'il faut la générer, et éventuellement s'il y a des modifications qui interviennent dans le contenu, il faudra re-générer la page.

Et pour faire ça, au lieu d'afficher le HTML, tu le stockes dans une variable en ajoutant chaque élément HTML. En fin de script, tu fais un echo() de cette variable qui envoie le tout au navigateur après le traitement.
Si ça c'est pas suffisament clair, j'ai peur que ta demande s'oriente plus vers "fais moi le code" que vers "comment faire pour" et dans le premier cas les sociétés de services ne demandent que ça.

Posté : 20 nov. 2006, 15:47
par gaeil
Oui, c'est une forme de ce qu'on appelle la mise en cache.

Pour ça, tu récupères la chaine créée par PHP (code complet de la page en fin de compte) et tu crées un fichier. Pour ça, tu as les fonction fopen(), fwrite() et fclose() qui sont faites pour ça. En parallèle, tu devras avoir un système de détection qui vérifiera si la page existe en HTML ou s'il faut la générer, et éventuellement s'il y a des modifications qui interviennent dans le contenu, il faudra re-générer la page.

Et pour faire ça, au lieu d'afficher le HTML, tu le stockes dans une variable en ajoutant chaque élément HTML. En fin de script, tu fais un echo() de cette variable qui envoie le tout au navigateur après le traitement.
donc : imaginons que j'ai des variables $_SESSION['im1g'] et $_SESSION['im2g']qui contiennent le résultat du script PHP, ça peut donner quelque chose comme :

Code : Tout sélectionner

$filename = 'monfichier.html'; $handle = fopen("monfichier.html", "a"); fwrite($handle, $_SESSION['im1g']); fwrite($handle, $_SESSION['im2g']);
il suffira ensuite à n'importe qui d'afficher avec son navigateur le fichier monfichier.html pour voir le résultat.
c'est ça ?
merci

Posté : 20 nov. 2006, 15:54
par Cyrano
En fait, l'idée que j'ai suggéré d'utiliser un test pour vérifier que la page existe en HTML ou pas, c'est que ton internaute vas afficher ta page PHP, mais si la détection trouve la page en HTML, le traitement sera vite fait : récupération du contenu de cette page avec par exemple file_get_contents() et tu envoies ça au navigateur, sinon, tu effectue le traitement de génération avant affichage.

Posté : 20 nov. 2006, 15:57
par Ajoloca
Re,

L'idée est là mais comme te l'a dit Cyrano tu devrais tester l'existence du fichier avant de l'ouvrir en ajout.
Imagine-toi que cette page a déjà été générée, à l'affichage tu auras des surprises.

Posté : 20 nov. 2006, 16:43
par gaeil
En fait, l'idée que j'ai suggéré d'utiliser un test pour vérifier que la page existe en HTML ou pas, c'est que ton internaute vas afficher ta page PHP, mais si la détection trouve la page en HTML, le traitement sera vite fait : récupération du contenu de cette page avec par exemple file_get_contents() et tu envoies ça au navigateur, sinon, tu effectue le traitement de génération avant affichage.
gloup... :?
non, justement, l'internaute, il sait même pas que la page en PHP existe...
cette page PHP, je vais la lancer une fois par jour par un cron, et générer ainsi un fichier HTML contenant le résultat. Seul ce fichier html pourra être lu (et connu) du visiteur.
le nom de fichier HTML c'est moi qui le donne, donc pas de problème.
***************************************************
Donc chers débutants qui liraient un jour ces lignes...voici la solution (et ça ne me pose aucun problème vis à vis de la remarque de Ajoloca). ça me fait plaisir d'aider, même en donnant le code tout cuit..parfois c'est avec des exemples concrets qu'on avance...si on apprenait qu'avec une liste de fonctions et des exemples si pédagogiques qu'ils ont certainement été écrits par Guy Lux (en référence aux jeux qu'il animait avec des règles si compliquées qu'à la fin on ne savait plus rien...), donc si on apprenait avec une liste de fonction, ça se saurait..., donc voici le code !
en début de fichier mettre :
ob_start();
puis à la fin du fichier php, juste avant la ligne ?>
$contents = ob_get_contents();
ob_end_clean();
$filepointer = fopen("monfichier.html", "w");
fwrite($filepointer, $contents);
fclose($filepointer);
maintenant, avec ça, faites le chemin inverse, et voyez les définitions des instructions et leurs rôles dans votre bon vieux manuel PHP.
merci au forum www.alsacreations.com pour la solution.
ha..les bienfaits de la concurrence !
:wink: