résultat du php en html

Eléphanteau du PHP | 10 Messages

20 nov. 2006, 14:27

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

ViPHP
ViPHP | 1961 Messages

20 nov. 2006, 14:42

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.
Deux choses sont infinies, l'Univers et la sottise humaine!!
Mais je ne suis pas sur de ce que j'affirme au sujet de l'Univers.

A. Einstein

Mammouth du PHP | 19672 Messages

20 nov. 2006, 14:42

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.
Modifié en dernier par Cyrano le 20 nov. 2006, 15:36, modifié 1 fois.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphanteau du PHP | 10 Messages

20 nov. 2006, 15:30

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

ViPHP
ViPHP | 1961 Messages

20 nov. 2006, 15:34

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.
Deux choses sont infinies, l'Univers et la sottise humaine!!
Mais je ne suis pas sur de ce que j'affirme au sujet de l'Univers.

A. Einstein

Eléphanteau du PHP | 10 Messages

20 nov. 2006, 15:47

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

Mammouth du PHP | 19672 Messages

20 nov. 2006, 15:54

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.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

ViPHP
ViPHP | 1961 Messages

20 nov. 2006, 15:57

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.
Deux choses sont infinies, l'Univers et la sottise humaine!!
Mais je ne suis pas sur de ce que j'affirme au sujet de l'Univers.

A. Einstein

Eléphanteau du PHP | 10 Messages

20 nov. 2006, 16:43

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: