Génerer un fichier statique à partir d'un script

ventouse
Invité n'ayant pas de compte PHPfrance

26 juil. 2006, 16:26

Bonjour,

je suis pas encore une lumière avec PHP mais j'arrive à me débrouiller. Je vais essayer d'exposer mon problème :

- j'ai un script agenda.php qui liste des évènements en allant piocher ce qu'il faut dans une petite base MySQL. Jusque là tout va bien.

- je voudrais créer un autre script qui va aller copier le résultat de agenda.php (du HTML donc, plus rien de dynamique) pour l'écrire dans un fichier .html

Est-ce que quelqu'un peut me dire comment je peux faire ça ? Je cherche depuis quelques heures là et je bloque. Merci !

Eléphanteau du PHP | 38 Messages

26 juil. 2006, 16:47

Il faut utiliser les fonctions :
fopen()
fwrite()
fclose()

Eléphant du PHP | 177 Messages

26 juil. 2006, 16:50

Salut utilise
 fopen()
fwrite()
fclose()
ou fait une recherche sur manipulation de fichier avec php par exemple.
Arg désolé je peux éditer mais pas supprimer mon message ou je suis bigleux ^^
Modifié en dernier par aelurus le 26 juil. 2006, 16:55, modifié 1 fois.

ventouse
Invité n'ayant pas de compte PHPfrance

26 juil. 2006, 16:52

Merci de vos réponses. Cela signifie-t-il que si j'ouvre mon fichier PHP avec fopen, que j'écris avec fwrite un .html, le contenu de ce .html sera le code interprété plutôt que le code PHP source ?
Merci.

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

26 juil. 2006, 16:53

Question : pourquoi veux-tu passer par un fichier intermédiaire ?

Puisque agenda.php va chercher les infos et générer du HTML, à quoi va servir le nouveau fichier ?

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

26 juil. 2006, 16:54

Merci de vos réponses. Cela signifie-t-il que si j'ouvre mon fichier PHP avec fopen, que j'écris avec fwrite un .html, le contenu de ce .html sera le code interprété plutôt que le code PHP source ?
Merci.
Non justement, là tu vas récupérer le code source.

ventouse
Invité n'ayant pas de compte PHPfrance

26 juil. 2006, 16:54

Dans le contexte du site sur lequel je travaille, malheureusement je n'ai pas le choix. Il faut que toutes les pages soient du html car on utilise Aurweb...

Si j'avais le choix je m'en serais débarassé vite fait pour ne gérer que du php comme tu le proposes !

ventouse
Invité n'ayant pas de compte PHPfrance

26 juil. 2006, 16:55

Ah et bien je veux surtout pas récupérer le code source, mais le code interprété ! Je pensais qu'il existait une méthode ou mm une fonction simple pour gérer ce genre de chose.

Eléphanteau du PHP | 38 Messages

26 juil. 2006, 17:06

dans ton script agenda :
// ouverture du fichier à créer
$fichier=fopen("fichier.html","w");

// écriture des infos, tu peux appeler autant de fois que tu veux cette fonctions, dans des boucles etc...
fwrite($fichier,"plein de truc");

// On ferme le fichier, le fichier HTML existe
fclose($fichier);
Voila, c'est tout ;)

ventouse
Invité n'ayant pas de compte PHPfrance

26 juil. 2006, 17:12

Oui ça je pense que je sais faire, le truc que je me demande c'est comment remplacer "plein de truc" par le résultat interprété d'un script php !
Je suis pas clair ou bien ? :D

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

26 juil. 2006, 17:19

Il faudrait effectivement être plus clair maintenant sur des détails :

tu as ton fichier agenda.php, qui récupère des infos en base et les affiche en HTML, avec des echos et tout. C'est ça ?

Ce qu'il te propose, c'est de remplacer les echo par des fput() pour stocker les sorties dans un fichier.

Est-ce que tu as besoin à la fois d'avoir une page dynamique qu'on peut appeller par HTTP ET du résultat de cette page stockée dans un fichier à part ?

=> NON : tu peux prendre la méthode qu'il t'a donnée
=> OUI : tu peux ouvrir un fichier via fopen() en passant l'url et tu devrais ainsi récupérer le résultat

Donc précise ce que tu veux faire et pourquoi, perso je ne sais pas ce que c'est que Aurweb

ventouse
Invité n'ayant pas de compte PHPfrance

26 juil. 2006, 17:33

Oui j'ai besoin de la page dynamique visible ET du résultat de cette page stockée dans un fichier à part.

Mais je galère à expliquer alors que ça me paraît assez simple... En gros pour résumer, dans un navigateur mettons que je visualise la page agenda.php. Elle est toute clean, toutes les informations que je veux y sont etc. Ce que je voudrais réussir à faire par un script, c'est l'équivalent de :

- copier / coller la source générée par agenda.php dans un fichier html
- fourrer ce mm fichier sur mon serveur web pour post-processing

Aurweb est un moteur de recherche assez performant mais un peu à l'ancienne.

http://www.auracom.fr/

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

26 juil. 2006, 17:41

Si si maintenant c'est très clair, il y avait juste ce petit point à éclaircir :)

Tu peux faire :
// récupération du contenu généré par ta page
$sourceHTML = file_get_contents("http://www.example.com/agenda.php");

// écriture dans le fichier HTML à stocker
file_put_contents("agenda.html", $sourceHTML);
A tester, il y a peut-être d'autres méthodes.

ventouse
Invité n'ayant pas de compte PHPfrance

26 juil. 2006, 17:59

Merci de ta réponse ouckileou

J'ai donc essayé de faire ça ici même :

http://www.blumaise.org/test/

test.php contient seulement :
<?php
phpinfo();
?>
process.php :
<?php
// récupération du contenu généré par ta page
$sourceHTML = file_get_contents("http://www.blumaise.org/test/test.php");

// écriture dans le fichier HTML à stocker
file_put_contents("test.html", $sourceHTML);
?>
Mais voila le résultat que j'ai quand je clique sur process.php :

Fatal error: Call to undefined function: file_put_contents() in /home/blumais/public_html/test/process.php on line 6

ventouse
Invité n'ayant pas de compte PHPfrance

26 juil. 2006, 18:03

En fait c'est pas grave parceque $sourceHTML contient bien le code INTERPRETE de phpinfo(); donc c'est tout bon !

je vais adapter ça à ma page un peu plus complexe demain en arrivant au taf. D'ici là je considère ce post comme résolu. Merci infiniment !