iframe div php include object Comment faire ? - HTML/CSS - Programmation
Marsh Posté le 11-06-2011 à 18:39:03
Tu pourrais utiliser de l'ajax ou les websocket pour loadé de contenu que tu veux dans tes div
Marsh Posté le 11-06-2011 à 19:08:46
gueuledange a écrit : Tu pourrais utiliser de l'ajax ou les websocket pour loadé de contenu que tu veux dans tes div |
Je ne connais pas ces technique. Je me débrouille avec le html et le CSS mais dès qu'il s'agit de PHP, Ajax, xml, url rewriting, etc, je ne suit plus du tout.
Je sais que Ajax est basé sur du Javascript mais ne connais pas du tout son usage.
Les websoket je n'en avais pas encore entendu parler... d'après Wiki c'est un protocole de com entre le serveur et le client. Les pages html de mon site étant traité par le navigateur en local, je vois pas la relation avec websoket... En tout cas ça ne me semble pas simple du tout ça !
Si il y a des tutos pour newbee en Ajax pour contourner les frames, je veut bien regarder s'il y as des exemples concrets.
Si vous avez d'autre idées ... ou des exemples... Merci !
Marsh Posté le 11-06-2011 à 19:29:21
En exemple pour comprendre l'ajax.
Pour résumé le protocole synchrone classique:
-1 Envoi d'une requete au serveur (avec ou sans parametre)
-2 reponse du serveur
-3 affichage de la page par le navigateur
L'ajax c'est un protocole asynchrone qui permet d'eviter de rafraichir toute une page lors de l'arriver de nouvelle information:
-1 Envoi d'une 1ere requete (comme en synchrone)
-2 reponse du serveur
-3 affichage de la page
// jusqu'ici c'est pareil
-4 l'utilisateur clique sur suivant
-5 Du code JS est utilisé pour envoyer une nouvelle requete au serveur
-6 Le serveur repond en renvoyant juste le contenu specifique demander
-7 Le JS intercepte cette réponse et l’insère dans la page
Voila, tu a modifier le contenu de ta page dynamiquement sans qu'elle est été rechargé.
Les web socket: http://slides.html5rocks.com/#web-sockets
C'est sensiblement la même chose que l'ajax, sauf que tu n'est pas obligé d’insérer le header http.
Marsh Posté le 11-06-2011 à 20:31:24
gueuledange a écrit : En exemple pour comprendre l'ajax. |
Ok, je comprend le principe de l'Ajax (théorie décrite) mais de la à la maitriser...
Si on transpose l'idée à mon site, il faut que les liens de mon menu fasse des appels à une fonction javacript en y passant un paramètre pour chaque rubrique du menu... Cette fonction pourras alors demander au serveur mes fichiers html de contenu. Mais il faudrait que ça ne prenne que se qu'il y as dans le <body> et que le contenu récupéré par le script s'intercal dans le DIV contenu a la place de l'iframe... C'est ainsi que ça doit se passer ? Je me demande si les liens dans mes pages html renvoyant sur d'autres pages vont fonctionner... S'il n'y as plus la notion de cadre nommé comme avec les frames, les liens entre les pages seront-il redirigés dans mon div conteneur (exploitation de l'ID de div peut-être) !
Je me demande si cette technique Ajax peu s'adapter a mon cas ?
Marsh Posté le 11-06-2011 à 20:42:23
En exemple pour comprendre ce qu'est l'ajax.
Pour résumé le protocole synchrone classique:
-1 Envoi d'une requete au serveur (avec ou sans parametre)
-2 reponse du serveur
-3 affichage de la page par le navigateur
L'ajax c'est un protocole asynchrone qui permet d'eviter de rafraichir toute une page lors de l'arriver de nouvelles informations:
-1 Envoi d'une 1ere requete (comme en synchrone)
-2 reponse du serveur
-3 affichage de la page
// jusqu'ici c'est pareil
-4 l'utilisateur clique sur suivant (par exemple, les domaine d'application sont nombreux)
-5 Du code JS est utilisé pour envoyer une nouvelle requete au serveur
-6 Le serveur repond en renvoyant juste le contenu specifique demander
-7 Le JS intercepte cette réponse et l’insère dans la page
Voila, tu a modifier le contenu de ta page dynamiquement sans la rechargé.
C'est un procéder qui rend la navigation beaucoup plus agréable. Et c'est pas trés comliqué a mettre en place.
http://www.xul.fr/xml-ajax.html
Les web socket: http://slides.html5rocks.com/#web-sockets
C'est sensiblement la même chose que l'ajax, sauf que tu n'est pas obligé d’insérer le header http. Coté serveur je sais pas trop ce que ça implique par contre, j'ai jamais testé encore mais j'imagine que c'est pas plus compliqué.
Sinon tu peu toujours utiliser une BDD pour stocker le HTML en raw et l'afficher dans le div selon la variable $GET que t'aura dans l'url. La plupart des sites fonctionnent comme ça maintenant, les .html n'existe plus vraiment "physiquement" sur le serveur.
Marsh Posté le 11-06-2011 à 23:04:50
gueuledange a écrit : En exemple pour comprendre ce qu'est l'ajax. |
Je peux essayer de voir ce lien et essayer de comprendre...
Citation : |
Après 10 ans le site a grossi et comporte des galeries photos, ce qui amène à plus de 1000 pages html. J'imagine que je ne peux pas stocker l'ensemble des pages du site dans une base. Il faut que je puisse mettre à jour mes pages... Ca revient un peu a construire un CMS.
Toutes ces solution me semble complexes pour remplacer un simple iframe... On ne peut pas dire que le w3c facilite les choses... Peut-être que le HTML5 permettra de combler ces difficultés !!! on peut rêver
Marsh Posté le 12-06-2011 à 18:22:32
Oh désolé, j'ai voulu editer mon message mais je me suis planté on dirai -_-
En fait ce qu'il fraudais que tu fasse, ce que ton menu soit full JS et charge les pages selon l'input reçu avec de l'ajax. Ton site est online la? Je peux avoir l'url pour mieux comprend ce qu'il y a a faire parce que la ça reste un peu flou ^^
Ps: Oui c'est vrai que c'est un peu complexe, sinon si t'a un accès direct au serveur tu peu quand même les mettre en BDD et les garder en "physique" quand même, comme ça quand tu a besoin de faire une modif tu l'a fait en "dur" et ensuite tu utilise un script pour refresh la BDD, sinon tu le fais a la main mais bon faire un script te gagnera du temps pour tout les futur modif. Et comme ça pas besoin de te codé un mini CMS.
ça parait lourd comme ça mais c'est pas si compliqué Pareil pour l'ajax, moi aussi au debut je me disai "bordel c'est quoi ce truc", mais en fin de compte c'est facile a maitrisé
Mais j'avou que pour un simple problème sémantique ça fais un peu mal ^^
Marsh Posté le 12-06-2011 à 20:53:57
gueuledange a écrit : Oh désolé, j'ai voulu editer mon message mais je me suis planté on dirai -_- |
Pour le menu c'est aussi compliqué car, c'est déjà du Javascript généré par logiciel. J'aurais pu le reprendre en CSS avec des <Ul> et des <li> pour construire mes rubriques, mais comme je suis habitué au logiciel ça va pas mal. Puisque le site a une partie [FR] et [EN] j'ai deux menu à gérer.
Le site est online et je ne veut pas me lancer à le bidouiller et tout planter. Je peux juste m'en faire une copie local pour tester offline. Voici le lien : http://www.rallyedesvinsmacon.com
Citation : |
Coté serveur, j'ai une base qui me permet d'afficher des listes sur le site, le seul code PHP que je me suis autorisé avec beaucoup de patience ... et un form2mail en piochant un peu partout !
Je peux juste me créer des tables supplémentaire avec phpMyadmin.
Je me vois pas mettre toutes mes pages en BDD d'autant que j'exploite 90% me mon espace autorisé.
Citation : |
Pour l'ajax, faudrait que je m'entraine sur des exemple faciles sans toucher à la structure du site pour le moment.
Y a probablement moyen de "parser" le code de mes pages pour ne récupérer que ce qu'il y a dans le body et le récupérer dans le DIV contenu ? Ca ferait un include partiel... sauf que ça ne fonctionnerai plus pour des sous pages appelés en cascade par des liens.
Y a bien l'idée de faire un "Template" avec des includes sur toutes les pages du site pour ramener les autre DIV (header, footer etc). Mais faut que je modifie toutes les pages et les passenet en PHP... Gros boulot et peut-être pas judicieux coté construction...
Marsh Posté le 12-06-2011 à 23:46:04
bpfonline a écrit : |
T'as pas besoin de passer test .html en php, tu peu les include directement.
Il y a bien sur moyen de parser avec un sed, ou autre regexp.
Par contre si tu le fais a chaque fois pour chaque page et chaque client ça fais un peu lourd pour le serveur... Aprés s'il n'y a pas beaucoup de traffic pourquoi pas.
Sinon tu peu toujours enlever ce qui te derange avec un sed de façon permanente, un petit script PHP en recursif sur tout les dossier (20min a coder) et pouf c'est fini
Pour les liens en cascade par contre oui tu a un problème...
S'ils ont tous une forme similaire du genre:
src="/path/path/file.html"
tu peux les remplacer par une url qui ramene sur un script PHP qui fera l'include, avec un sed/regexp et les transformer en ça:
src="file.php?p=/path/path/file.hmtl" (urlencoded bien sur)
ATTENTION a la big faille include là par contre, il faudra bien securisé ça.
Entraine toi avec la regexp sur des fichiers copier quand même avant Quoi qu'elle devrai pas être trop compliqué.
Marsh Posté le 13-06-2011 à 10:17:36
gueuledange a écrit : T'as pas besoin de passer test .html en php, tu peu les include directement. |
Donc coté serveur le PHP interprête les .html !!!
Citation : Il y a bien sur moyen de parser avec un sed, ou autre regexp. |
J'ai déjà entendu le terme regexp mais pas le sed. Même si je sait à quoi ça peu servir, je ne sait pas le faire.
Citation : Par contre si tu le fais a chaque fois pour chaque page et chaque client ça fais un peu lourd pour le serveur... Aprés s'il n'y a pas beaucoup de traffic pourquoi pas. |
Difficile de savoir sur du mutualisé. Trafic variable car événementiel.
Citation : Sinon tu peu toujours enlever ce qui te derange avec un sed de façon permanente, un petit script PHP en recursif sur tout les dossier (20min a coder) et pouf c'est fini |
Oui pour les codeurs qui maitrisent PHP. Pour faire un simple recordset et lister le contenu de ma table BDD, j'ai mis 15j à coder ma page PHP, le temps de d'apprendre a connecté à la base, a lire dedans a écrire le tableau ligne à ligne etc...
Citation : Pour les liens en cascade par contre oui tu a un problème... |
Oui des liens relatifs avec parfois beaucoup de ../../ pour passer d'une branche de dossier à l'autre.
Citation : |
Je comprend l'idée, et sais qu'il y a des problème de réinjection de code par les url... Qu'il faut sécuriser les variables (je sais plus comment) ! Quand j'ai touché un peu au PHP, c'est le genre de chose qui m'as un peu refroidi.
Citation : Entraine toi avec la regexp sur des fichiers copier quand même avant Quoi qu'elle devrai pas être trop compliqué. |
Pour moi je fais du "regexp" en utilisant Rechercher/Remplacer dans mon code et en traitement par lot sur plusieurs fichiers ouvert pour aller plus vite. Ca peut être utile pour ajouter un ou des includes à toutes mes pages qui y ajouteraient les div header et footer dedans... Voir l'idée : http://www.siteduzero.com/tutoriel [...] -page.html ( c'est sur ce site que j'ai essayé de commencé avec le PHP). Ca pourrait être plus facile ? mais pas sûre que ce soit bon pour le trafic et la sécu...
L'approche est tout de même pas simple et implique pas mal de changements. Pour ça que depuis des années j'ai conservé mon iframe. Le w3c aurait pu proposer une solution de remplacement aux frames, je sais pas avec nouvelles catégorie de balises.
On va pas refaire le monde dans notre coin, mais c'est comme les différences entre IE et FF, ça nous arrange pas au final pour nos sites. On as l'impression de devoir combler les failles des petits arrangements entre ennemies.
Marsh Posté le 13-06-2011 à 14:49:41
Non c'est pas compliquer franchement:
une ligne pour virer le header par exemple:
sed -i "s/\<head\>.*\<head\/\>//" en recursif sur *.html
Ca modifiera tous tes pour html definitivement, tu vire tout ce que tu veux avec un sed dans le meme genre, globalement toutes les balises qui seront deja presente dans le template, pour au final ne garder que le "contenu".
Et ensuite tu fais tes include avec PHP et pouf probleme resolu...
pour les url la regexp est un plus compliquer par contre, il faudra y reflechir, je suis pas un pro du sed, je l'utlise pour des truc basiques comme remplacer un nom de variable dans tout mes fichiers sources par exemple (beaucoup plus rapie que de les ouvrir un par un ^^)
Franchement c'est une solution plutot simple je trouve.
Marsh Posté le 14-06-2011 à 20:22:51
Citation : Non c'est pas compliquer franchement: |
J'ai un petit peu regardé sur les sites, c'est à l'origine de la ligne de commande Linux avec un portage GNU pour l'avoir sur windows. Si j'ai tout compris c'est un SUPER "Rechercher/Remplacer" qui ne traite qu'une ligne à la fois.
Il faut tout de même s'y pencher longuement pour appréhender la syntaxe.
Citation : Ca modifiera tous tes pour html definitivement, tu vire tout ce que tu veux avec un sed dans le meme genre, globalement toutes les balises qui seront deja presente dans le template, pour au final ne garder que le "contenu". |
L'idéal serait de ne pas dire ce qu'il faut enlever mais de pouvoir garder ce qu'il y a entre les balises <BODY>et</BODY>
Citation : Et ensuite tu fais tes include avec PHP et pouf probleme resolu... |
En fait il faut que je fasse des includes dans chaque liens de mon menu ?
Citation : pour les url la regexp est un plus compliquer par contre, il faudra y reflechir, je suis pas un pro du sed, je l’utilise pour des truc basiques comme remplacer un nom de variable dans tout mes fichiers sources par exemple (beaucoup plus rapie que de les ouvrir un par un ^^) |
Quand je fais en traitement par lot, je les sélectionne tous les fichiers et ils s’ouvrent en même temps. C'est vrai que ça as ses limites au delà de 50 ça devient moins gérable.
Citation : Franchement c'est une solution plutôt simple je trouve. |
Admettons que je m'en sorte avec le SED pour nettoyer les fichiers, la gestion des liens appelant une fonction pour renvoyé le contenu de toutes les sous pages dans le DIV, là je vois pas.
Marsh Posté le 15-06-2011 à 12:40:15
Ok alors pour garde que le contenu du body:
sed -i "s/.*<body>//" *.html
sed -i "s/</body>.*//" *.html
pouf fini !!
La solution que je te proposai pour les liens c'est de passe par php pour faire l'include dans la page dynamiquement.
-1 Avec un sed tu remplace tout les liens par: "include.php?path=LELIENDORIGINEICI"
-2 ensuite tu code ton include .php:
// affichage header + menu
include $_GET['path'] // attention ne surtout pas faire comme ca, c'est juste pour l'exemple
// affichage footer &co
Et voila le probleme des liens est resolu
Marsh Posté le 18-06-2011 à 15:46:03
Ok alors pour garde que le contenu du body:
Citation : sed -i "s/.*<body>//" *.html |
J'ai installé le SED de GNU pour win32 il est sur C:\Program Files (x86)\GnuWin32\bin\sed.exe avec 3 dll dans le dossier.
Mes fichiers htm sont sur un autre lecteur que C:, j'ai donc copier les 4 fichier du SED dans la racine du dossier de mon site (copie du site).
le SED me retourne une erreur :
Code :
|
Autre réflexion, certaines de mes pages comportent des styles CSS spécifiques à leur page htm, donc à conserver. Mais comme elle sont en dehors du <BODY>...</BODY> le code ne sera pas gardé avec le SED...
Bref j'en suis pas au "Pouf fini" !
Citation : La solution que je te proposai pour les liens c'est de passe par php pour faire l'include dans la page dynamiquement. |
Pour les liens avec un target qui renvoi sur le nom de l'Iframe, faudra enlever le target et pour les liens qui ont un target _blank ils ne doivent pas passer par la fonction php...
Marsh Posté le 18-06-2011 à 16:02:32
bpfonline a écrit : Ok alors pour garde que le contenu du body:
J'ai installé le SED de GNU pour win32 il est sur C:\Program Files (x86)\GnuWin32\bin\sed.exe avec 3 dll dans le dossier.
Pour les liens avec un target qui renvoi sur le nom de l'Iframe, faudra enlever le target et pour les liens qui ont un target _blank ils ne doivent pas passer par la fonction php... |
Ah c'est galère de faire un sed sous windows, c'est pas natif
t'utilise ça: http://gnuwin32.sourceforge.net/packages/sed.htm ?
Je vais tester pour voir.
D'ailleur je viens de faire que la 2eme expression n'est pas correcte
sed -i "s/<\/body>.*//" *.html
ou
sed -i "s/<\\/body>.*//" *.html
je suis pas sur.
Sinon on peu faire une règle plus spécifique, qui conservera les includes css.
Pour le probleme de target blank je vois pas trop ou tu veux en venir, t'aurai un exemple précis, ou un sample de code?
Marsh Posté le 18-06-2011 à 17:42:36
Citation : Ah c'est galère de faire un sed sous windows, c'est pas natif |
Oui c'est bien ça !
Citation : D'ailleur je viens de faire que la 2eme expression n'est pas correcte |
J'ai refait l'essai ! Ca a semble t-il fonctionner en supprimant les balises BODY du fichier index. Après sondage les sous dossiers ne sont pas impacté. Ca m'a effacer les balises. Le but étant de les conservées avec ce qu'il y a au milieu.
Citation : Sinon on peu faire une règle plus spécifique, qui conservera les includes css. |
C'est l'idée mais les styles sont encapsulé dans le HEAD. Car en plus des Includes globaux de la feuille de style, j'ai du CSS spécifique pour quelques pages qui n'est pas dans un fichier CSS externe. Au final le script du SED va devenir un vrai programe J'en viens a me demander si il y a des exemples similaire, car le problème de l'Iframe doit être récurrent... Y a ça sur le sujet : http://www.alsacreations.com/actu/ [...] frame.html , mais ça semble pas aller avec IE.
Citation : Pour le problème de target blank je vois pas trop ou tu veux en venir, t'aurai un exemple précis, ou un sample de code? |
Les liens avec des blank ouvrent nouvel onglet donc les pages appelés par ces liens ne s'afficheront pas dans le DIV contenu... Donc doivent pas passer par le PHP !!!
Marsh Posté le 18-06-2011 à 21:18:08
Hmm ça te vire les balises, oui en effet c'est normal j'avais pas pensé a ça ^^
sed -i "s/.*<body>/<body>/" *.html
et
sed -i "s/<\\/body>.*/<\\/body>/" *.html ou sed -i "s/<\/body>.*/<\/body>/" *.html
je me rapel plus s'il faut échappe le backslash avec la synthax sed, je peu pas testé la j'ai pas de boot linux sous la main.
C'est normal que les sous dossier n'est pas été affecté, la commande est pas en recursif regarde dans le man, il doit y avoir une option, surement -r ou -R
Ok pour les liens blank, faudra faire en sorte que le sed les remplace pas.
Pour garder les feuille de style oui c'est galere, mais en même temps la structure du site bride un peu nos possibilité de transition "simple".
La regexp pour faire, va pas être évidente.... Faudra que je fasse des tests sur fedora dans la semaine.
Pour l'histoire sur alsacreation, ça me parait bizar le coup de la balise magique... ça t'enlevele le <head> & co, automatiquement? Sinon ça résout en rien ton problème de semantique.
Marsh Posté le 19-06-2011 à 10:43:09
[quotemsg=2083101,18,659085]Hmm ça te vire les balises, oui en effet c'est normal j'avais pas pensé a ça ^^
Citation : sed -i "s/.*<body>/<body>/" *.html |
Ok, je teste
1er syntaxe : ne semble pas avoir d'effet.
2eme syntaxe : Renvoi sed: -e expression #1, char 15: unknown option to `s'
3eme syntaxe : ne semble pas avoir d'effet.
Le -i c'est pour dire que tu travail sur le fichier lui même.
Les " détermine le script exécute
Le s/ La fonction qui fait quoi ?
Le . Je ne sais pas, il n'y ait pas toujours.
La commande qui m'efface la première balise body est celle là : sed -i "s/.*<body>//" *.html
Citation : C'est normal que les sous dossier n'est pas été affecté, la commande est pas en recursif regarde dans le man, il doit y avoir une option, surement -r ou -R |
Pour le moment, je m'y lance pas, faut fiabiliser le script avant de touché a toutes les pages.
Citation : Ok pour les liens blank, faudra faire en sorte que le sed les remplace pas. |
Ok Merci pour ton implication, prend le temps.
Citation : Pour l'histoire sur alsacreation, ça me parait bizar le coup de la balise magique... ça t'enlevele le <head> & co, automatiquement? Sinon ça résout en rien ton problème de semantique. |
Effectivement, ce n'est pas précisé et je pense que ça n'enlève rien. Est-ce que le code est interprété en double par le navigateur ? Il peut dans ce cas parser lui même la page puisque l'on déclare dans la balise que c'est du HTML !!!
Marsh Posté le 19-06-2011 à 22:44:29
Bon en faite l'expression est pas du tout adapté... j'ai du cherché un peu pour trouver la bonne, ça m'a rafraichit mon sed ^^:
sed -i -n "/<body/,/<\/body>/ p" *.html
testé et approuvé
Marsh Posté le 20-06-2011 à 20:50:12
gueuledange a écrit : Bon en faite l'expression est pas du tout adapté... j'ai du cherché un peu pour trouver la bonne, ça m'a rafraichit mon sed ^^: |
Ok, j'ai fait l'essai sur 2 fichiers ça fonctionne. Cela conserve les balises BODY et ce qu'il y a dedans.
Plus qu'a passer un des premier SED (Je sais plus quel est le bon) pour supprimer juste les BODY, il ne restera que le contenu.
Le plus difficile est sans doute de dire au SED de garder ce qu'il y as dans <style type="text/css">...</style>. Je ne sais pas si on peu y définir de tels conditions comme dans une requête.
Il y as aussi la modifications des liens sauf pour les target _Blank. Cela fait une condition supplémentaire. Je sais pas si on peu faire un script SED unique que l'on peu passer qu'en une seule commande. Je crois que l'on peu mettre le script dans un fichier et le charger au lancement de la commande...
Pour quelques pages seulement, j'ai du Javascript et du PHP à conserver. Même si c'est supprimé par le SED, je pourrais les recopier manuellement. Ça veut dire aussi que mon fichier index devrai ,prendre l’extension .php pour que le code soit interprété coté serveur.
Marsh Posté le 20-06-2011 à 22:19:14
Pour virer les body:
c'est "s/<body>//" et "s/<\/body>//" celles la sont facile.
Pour conserver les styles on pourrait faire un petit script qui extrait d'abord les css avec un sed ou autre puis ensuite on concatène le résultat du sed qui garde juste le body et pour finir on re-write le fichier. en bash, PHP, c/c++ ou python peu importe.
Marsh Posté le 21-06-2011 à 00:23:51
gueuledange a écrit : Pour virer les body: |
s/ je pense que c'est supprimer
les // en fin de balise ?
Citation : Pour conserver les styles on pourrait faire un petit script qui extrait d'abord les css avec un sed ou autre puis ensuite on concatène le résultat du sed qui garde juste le body et pour finir on re-write le fichier. en bash, PHP, c/c++ ou python peu importe. |
Ca peut se faire tout en SED dans un seul script ? Je pense pas si y a pas moyen de mémoriser avant concaténation.
bash c'est batch (commandes dans un fichier .bat) par exemple avec plusieurs commande SED dedans ?
PHP je pense pouvoir suivre par contre le C et Pyton connais vraiment pas et je pense qu'il faut compiler donc a mon avis trop compliqué.
Marsh Posté le 21-06-2011 à 19:26:51
Ouais le bash c'est pour UNIX donx on oublie.
s c'est pour remplacer en gros s/le pattern a remplacer/le pattern de remplacement/ vu qu'ici on veut supprimer on le laisse vide.
Je voudrai faire un script justement pour pouvoir memoriser parceque sinon j'ai pas le niveau pour faire le sed, je sais même pas si c'est possible. on est obliger d'en faire plusieur.
Bon on va le faire un PHP alors.
Soit on fait une fonction recursive qui fera tout d'un coup soit on fais une fonction plus simple qui marche dossier par dossier, tu sera obliger de lancé le script dans chaque dossier par contre.
En pseudo code:
Ouverture du repertoire courant "." (opendir)
Lecture du contenu du dossier (readdir)
Pour chaque fichier on lis le contenu et on le bufferise, on applique un sed pour les style css et on bufferise le resultat, ensuite le 2eme sed pour garder que le contenu du body. on concatene les deux.
On supprime et on récreer le fichier d'origine (on on peu aussi réecrire) en y inserant le contenu du buffer.
Marsh Posté le 21-06-2011 à 19:58:11
Citation : Ouais le bash c'est pour UNIX donx on oublie. |
Ok
Citation : s c'est pour remplacer en gros s/le pattern a remplacer/le pattern de remplacement/ vu qu'ici on veut supprimer on le laisse vide. |
Ok
Citation : Je voudrai faire un script justement pour pouvoir memoriser parceque sinon j'ai pas le niveau pour faire le sed, je sais même pas si c'est possible. on est obliger d'en faire plusieur. |
A mon avis pas possible c'est un traitement sur le flux !!! Mais comme connais pas, suis mal placé.
Bon on va le faire un PHP alors.
Citation : Soit on fait une fonction recursive qui fera tout d'un coup soit on fais une fonction plus simple qui marche dossier par dossier, tu sera obliger de lancé le script dans chaque dossier par contre. |
Je comprend, j'ai juste plus de 400 dossier, ça refroidi un peu de faire sans le récursif.
Citation : En pseudo code: |
Tu pense mélanger le PHP et le SED !!! Si tu stock le "buffer" dans une variable global ou écrire dans un .txt temporaire, tu concatène en PHP non ? Pas plus simple que d'appeler le SED et de lui passer les script en paramètres ?
Si tu fait du récursif, tu va stocker la structure des dossier / sous dossiers dans un "tableau virtuel en mémoire" ... comme un Scan de la structure !
Ensuite tu applique pour chaque fichier ouvert, la récup de ce qu'il faut garder, le nettoyage du reste, le ré assemblage, le traitement des <a href...> ne contenant pas target _blank, donc analyse de la chaine en amont...
A mon avis faisable mais gros chantier tout de même.
Marsh Posté le 22-06-2011 à 14:27:29
Non, 30 lignes max.
Je veux bien faire le script derectement avec sed mais en PHP ca me parait beaucoup plus simple, on peu faire un coup deguelasse, de toute facon il ne servira qu'une fois. On peut faire le sed en PHP, preg_replace en gors c'est la meme chose (2-3 diff sur les caracteres de la reg-exp peu etre).
Tu peu commencer a faire le script et je corrigerai et completerai avec ce qu'il manque.
Commence par faire le opendir, readdir, open(file), read(file), deja.
Fais la sans recursivite, ce sera juste une condition a rajouter et un stat sur le fichier. Je m'en occuperai si c'est obscure pour toi.
Marsh Posté le 23-06-2011 à 18:15:03
gueuledange a écrit : Non, 30 lignes max. |
Bien je vais me pencher la dessus ce week-end...
Marsh Posté le 23-06-2011 à 19:01:26
Wahou, j'ai écris comme un porc et avec plein de fautes.... hmmm dsl...
ok, ce WE j'aurais pas le temps de m'occuper de ça par contre.
Marsh Posté le 26-06-2011 à 18:45:12
gueuledange a écrit : Wahou, j'ai écris comme un porc et avec plein de fautes.... hmmm dsl... |
Voici mon essai
Code :
|
Ca ne semble pas faire d'effet, ça me renvoi mon texte "Rien Lu"
Marsh Posté le 26-06-2011 à 19:06:00
fopen *.html....
hmm tu confond un peu tout la
c'est plutot
while ($file = readdir($dir))
fopen($file, "rw" )
Tu peu pas mettre une etoile, ca ne passe pas par un shell et donc il n'y a pas de globbing, le globbing c'est ce qui fais que le shell remplace l'etoile par tout les nom de fichier se terminant par .html.
Bon. As-tu un boot Linux sous la main? je vais faire un prog en c++ avec un appel system sur sed, ca va etre plus simple.
Si non, DL un live CD ubuntu.
Marsh Posté le 26-06-2011 à 19:35:40
Citation : fopen *.html... |
Je sais pas, while tu fait une boucle ; et pour tes variable $file, $dir, tu les déclarent pas avant... Faut bien lui dire de ne traiter que les fichier htm du dossier. Bref suis pas doué en prog.
Citation : Tu peu pas mettre une etoile, ca ne passe pas par un shell et donc il n'y a pas de globbing, le globbing c'est ce qui fais que le shell remplace l'etoile par tout les nom de fichier se terminant par .html. |
La, je ne comprend pas du tout ce que tu me dis, globbing, connais pas le terme.
Citation : Bon. As-tu un boot Linux sous la main? je vais faire un prog en c++ avec un appel system sur sed, ca va etre plus simple. |
J'ai retrouvé un BootCD d'une Knoppix Linux... Tu pense que ça peu faire l'affaire ? J'ai regardé pour Ubuntu, c'est le même CD qui sert de session Live et d'installation. Si la Knopix vas pas je peu télécharger Ubuntu. Mais pour ce qui est de Linux, je connais pas plus que ça ! Y a pas des utilitaires Windows qui feraient comme le sed, genre traitement par lot avec remplacement de code dans les fichiers ? Visiblement non ! Je n'en ais pas trouvé.
Marsh Posté le 26-06-2011 à 20:12:10
Alors le globbing, en gros uand dans un shell tu ecris:
*.html
Le shell cherche dans le repertoire tout les fichier que se terminent par .html et donc il transofme la chaine en:
toto.html titi.html tutu.html etc...
Prend une version recente de ubuntu: http://ubuntu-fr.org/telechargement
Ca me fais chier de coder sous windows c'est tout, et ce sera plus pratique pour moi de faire des appel system sous linux.
Marsh Posté le 26-06-2011 à 20:19:34
gueuledange a écrit : Alors le globbing, en gros uand dans un shell tu ecris: |
Je comprend bien, je parlait de freeware windows qui auraient été tout fait pour t'éviter de refaire quelque chose à part.
Bien je récupère Ubuntu. Je prend la x64 ça pose pas de soucis ?
Marsh Posté le 26-06-2011 à 21:02:12
Non x86 stp, je code sous fedora x86 donc ca me fera moins galerer surtout que je vais surement faire ca a la va vite alors la portabilite hein, osef
Marsh Posté le 26-06-2011 à 22:35:23
gueuledange a écrit : Non x86 stp, je code sous fedora x86 donc ca me fera moins galerer surtout que je vais surement faire ca a la va vite alors la portabilite hein, osef |
Ok pour X86... Je me demandais pourquoi tu été sur Fédora en cherchant un peu sur les distrib linux, suis tombé sur ce shèma : http://upload.wikimedia.org/wikipe [...] meline.png
J'imaginais pas qu'il en existait autant avec des tas de déclinaisons d'années en années. Déroutant pour le commun des mortels Je pensait pas qu'un iframe nous mènerais jusque là !
Fedora contient peut-être les outils de dev dont tu as besoin en natif, plus adapté aux programmeurs... En tout cas faut s'accrocher pour suivre avec une version de l'Os tous les 6 mois.
J'ai booté sur le CD ; il faudra que je déplace les fichiers du site sur un autre lecteur, car le DD ou il sont ne semble pas être détecté par Ubuntu... Mais mon autre DD est bien visible.
Marsh Posté le 28-06-2011 à 07:58:21
C'est l'OS fournis mon école, c'est pas mal. Avant on était sous FreeBSD.
Je le vois même pas sur le schéma hmmm
Edit: ah si, j'ai trouvé je pensai pas que c’était si recent... Je vois que j'ai encore beaucoup de chose a apprendre sur les systeme unix
Je coderai ça dans la semaine.
Marsh Posté le 30-06-2011 à 00:55:10
ReplyMarsh Posté le 30-06-2011 à 20:59:13
gueuledange a écrit : T'as pris le liveCd ou le liveDVD? |
J'ai pris le Live CD, je peux booter dessus après je sais pas ce qu'il faut faire...
Marsh Posté le 01-07-2011 à 13:44:52
Ouvre un terminal et tape: g++
S'il te renvoi: command not found c'est que tu ne l'a pas, si c'est le cas tape: gcc
si t'as pas gcc non plus il faudra prendre le DVD.
g++ = compilo C++
gcc = compilo C
Faudra que tu compile le programme, c'est pour ça que je demande ça. Mais tkt je te ferai un makefile, t'aura juste a taper: make
Marsh Posté le 01-07-2011 à 17:48:59
gueuledange a écrit : Ouvre un terminal et tape: g++ |
J'ai fait l'essai avec le live CD :
Pour g++ et gcc, le message renvoyé est : no input files
Je croyait que tu allait compiler sur Fédora ?
Mais comme ça, je verrais comment on le fait. Le g++ compile juste pour linux ou peut le faire aussi en win32 ?
Marsh Posté le 11-06-2011 à 18:14:01
Bonjour,
Je reviens sur le débat de l'accessibilité et de l'usage des frames qu'il ne faudrait plus utiliser.
J'essaye donc de trouver une solution pour me passer de l'iframe. En regardant un peu partout on conseil souvent le PHP et d'utiliser la fonction include dans un conteneur DIV. Hors les includes sont conseillés pour des petites parties de code. Dans mon cas l'iframe est utilisé pour afficher toutes les pages .html du site et il y en as beaucoup. Comme il est expliqué, les includes PHP, récupèrent l'intégralité du code html dans le div avec les balises html, head, meta, doc type etc. Ce qui fait une redondance avec la structure de la page index principale qui contient déjà ces balises. La solution des include souvent proposé n'est donc idéal !
De plus mon menu est déjà dans un DIV en dehors de mon iframe qui n'est utilisé que pour la zone de contenu ! Les liens du menu utilisent comme cible le nom de mon iframe. Dans le cas de l'include, les liens du menu doivent utiliser des includes différent pour chaque rubriques du menu.
Je ne sais pas si je suis très clair dans mon explication, voici la structure de ma page index pour aider:
On parle aussi d'une balise Object pour remplacer l'include du php mais je me demande si ça ne pose pas les même problème d'incorporation des pages html complétes dans un div et pour les liens du menu.
Voila je me demande donc s'il y as des solution simples pour se passer de l'iframe dans mon cas, sans devoir refaire touts le site ?
Merci !