Créer un fichier HTML aprés execution de la page PHP

Créer un fichier HTML aprés execution de la page PHP - PHP - Programmation

Marsh Posté le 10-12-2008 à 09:52:27    

Bonjour,
 
Un fichier php s'occupe de créer une multitude de tableaux (assez long à l'affichage car il doit parser plusieurs fichiers), c'est pourquoi j'aimerais qu'une fois créer, il sauvegarde le résultat dans un fichier HTML. Ainsi, les utilisateurs auront un affichage instantanée vue que l'on va lire le fichier HTML.
 
Ma question est donc comment sauvegarder un fichier HTML après exécution de la page PHP. (J'aimerais que ce soit une commande a la fin du fichier PHP si possible)
 
Merci de votre aide


Message édité par johnson950 le 10-12-2008 à 10:00:06
Reply

Marsh Posté le 10-12-2008 à 09:52:27   

Reply

Marsh Posté le 10-12-2008 à 10:05:43    

Tu peux utiliser l'API php (fopen, fwrite, fclose) pour créer ce fichier, et utiliser une redirection : header("Location: tonfichier.html" ).
 

Reply

Marsh Posté le 10-12-2008 à 10:17:57    

Merci de ta réponse.
Cependant, j'aimerais insérer dans le fichier les tableaux créer par la page PHP.
 
Exemple :
fichier php :
Création tableau 1  
Création tableau 2
Création tableau 3
Création fichier html contenant les 3 tableaux
 
D'après ce que tu me dis je devrais :
fichier php
ouverture du fichier html
création du tableau 1 + écriture sur le fichier html
création du tableau 2 + écriture sur le fichier html
création du tableau 3 + écriture sur le fichier html
fermeture du fichier html
 
 
N'existe 'il pas un moyen de lancer la page php et a la fin l'enregistrer en fichier html ?
 
Merci de ton aide


Message édité par johnson950 le 10-12-2008 à 10:19:15
Reply

Marsh Posté le 10-12-2008 à 10:25:45    

Je ne connais pas un moyen "automatique" de faire çà. Ma solution n'est pas très complexe à mettre en place.  
 
Pour créer tes tableaux, tu fais quelques chose comme

Code :
  1. foreach ($item as $key => $val)
  2. {
  3.   echo "<tr>":
  4.    echo "<td>$key</td>\n";
  5.    echo "<td>$val</td>";
  6.   echo  "</tr>";
  7. }

Reply

Marsh Posté le 10-12-2008 à 10:28:51    

Output Buffering.
 
http://fr.php.net/manual/en/book.outcontrol.php


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 10-12-2008 à 10:29:38    

(sinon un moteur de templates avec fonctionnalités de mise en cache te fera ça très bien et d'une manière bien plus fine qu'en le faisant à la main).


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 10-12-2008 à 10:31:38    

Bah ...
 
Fichier php :
si fichier.html existe:
  afficher fichier.html
sinon :
  créations des tableaux
  créer fichier.html
  insérer code dans fichier.html
  afficher fichier.html
 
 
   [:airforceone]

Reply

Marsh Posté le 10-12-2008 à 10:32:23    


 
si le contenu est dynamique il faut rajouter des règles un poil plus fines que ça...[:joce]


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 10-12-2008 à 11:02:00    

skeye: +1 ! Faut mettre en place un système de cache !
D'ailleurs, y'en a pas un en standard avec php5 ? Pear ?


---------------
Kao ..98 - Uplay (R6S) : kao98.7.62x39 - Origin (BF4, BF1) : kntkao98
Reply

Marsh Posté le 10-12-2008 à 11:10:29    

en standard je pense pas. Moi j'utilise le système du moteur de templates smarty.


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 10-12-2008 à 11:10:29   

Reply

Marsh Posté le 12-12-2008 à 14:00:15    

Bonjour,
 
Merci pour vos réponses !
Cependant j'ai opté pour une autre alternative qui consiste à utiliser php en ligne de commande;
J'obtiens donc

Code :
  1. php -q fichier_source.php > fichier_destination.htm


 
Cependant je me confronte maintenant un nouveau probleme car je veux passer des variables en GET

Code :
  1. php -q fichier_source.php?annee=2008 > fichier_destination.htm


 
La je bloque je ne sais pas comment faire...
Avez vous une idée ou une solution ?
 
Message d'erreur :
Could not open input file :tableau_forfait.php?annee=2008
 
Merci


Message édité par johnson950 le 12-12-2008 à 14:12:46
Reply

Marsh Posté le 12-12-2008 à 14:21:42    

c'est vraiment pas une bonne idée de faire ça en ligne de commande...[:pingouino]


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 12-12-2008 à 14:29:05    

Code :
  1. php tableau_forfait.php 2008


 
Et on récupere :

Code :
  1. $_SERVER['argv'][0] sera le nom du fichier
  2. $_SERVER['argv'][1] vaudra 2008


 
Pourquoi n'est ce pas une bonne idée ?


Message édité par johnson950 le 12-12-2008 à 14:29:54
Reply

Marsh Posté le 12-12-2008 à 14:35:02    

Parce-que ça t'oblige à tout générer d'un coup, probablement en cron. Alors qu'en fait ça ne te sert à rien de les avoir à l'avance.
Et je serais curieux de voir la tronche du résultat, en fait.
Si tu veux un truc bien foutu tu vas recoder tout un système de cache...ce qui existe déjà en tout fait, et probablement meilleur que ce que tu feras.


Message édité par skeye le 12-12-2008 à 14:35:55

---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 12-12-2008 à 14:45:15    

Avec un système en cache, lors de la première connexion, les tableaux vont mettre une plombe pour s'afficher puis lors des connexions suivantes, ils vont être pris en partie dans le cache.
 
C'est comme cela que ça fonctionnera ?
 
Merci encore pour ton aide car si cela peut être bénéfique, je veux bien essayer ta façon de faire.
 
Merci

Reply

Marsh Posté le 12-12-2008 à 14:49:29    

oui, c'est comme ça, grosso modo.


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 12-12-2008 à 14:52:39    

Ha ouais. Donc en fait, on t'a donné plein d'élément de réponse, mais tu n'en n'a même pas étudié une, c'est ça ?
 
Oui, le cache, c'est un peu ça. La première fois, la page va être longue à s'afficher. Les fois suivantes, comme elles auront été enregistrée dans le cache, ce sera quasi-instantané. Il piochera directement dans le cache, la page ne sera pas re-générée.
 
En plus, c'est très facile à mettre en oeuvre.


---------------
Kao ..98 - Uplay (R6S) : kao98.7.62x39 - Origin (BF4, BF1) : kntkao98
Reply

Marsh Posté le 12-12-2008 à 15:09:48    

Le cache j'ai déjà travaillé un peu dessus, le seul probleme c'est que lors de la création de mes tableaux j'ouvre une multitude de fichiers (qui peuvent avoir changer) il faut donc les réouvrir de nouveau lors du chargement de la page.
 
Le cache a ce moment la n'est pas bénéfique pour moi ? Qu'en pensez vous ?

Reply

Marsh Posté le 12-12-2008 à 15:12:18    

Ils sont modifiés comment, ces fichiers? Via ton site? D'une autre manière?


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 12-12-2008 à 15:12:28    

A toi de gérer l'invalidation de ton cache :spamafote:
Quand tu modifies tes fichiers, tu invalides ton cache, comme ça il sera regénéré.
 


Message édité par kao98 le 12-12-2008 à 15:13:09

---------------
Kao ..98 - Uplay (R6S) : kao98.7.62x39 - Origin (BF4, BF1) : kntkao98
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed