Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
906 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Lire un bloc de texte, le modifier, et le sauvegarder !

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Lire un bloc de texte, le modifier, et le sauvegarder !

n°1966688
jmb74
Miaou
Posté le 17-02-2010 à 01:40:35  profilanswer
 

Bonjour à tous,
 
j'ai besoin rapidement d'un bout de code (depuis le temps que je me dis qu'il faut que je me mette au PHP  :whistle: )
 
La finalité : Lire un bloc de texte dans un fichier .txt, l'afficher dans un TEXTAREA où je pourrais le modifier, et ensuite réécrire le texte modifié dans le fichier .txt
 
J'ai commencé à me renseigner sur le PHP, ca a l'air facilement faisable, mais je n'ai plus le temps de potasser, il me faut une solution rapidement :/
 
Si une bonne âme voulait bien me venir en aide.. thanx  [:fpe]


---------------
old feedback
mood
Publicité
Posté le 17-02-2010 à 01:40:35  profilanswer
 

n°1966690
AJW256
Posté le 17-02-2010 à 02:02:51  profilanswer
 

Code :
  1. <?
  2. $fname = 'filename.txt';
  3. if($_POST['edit']==1){
  4.     $fhandle = fopen($fname,"w" );
  5.     fwrite($fhandle,$_POST['text']);
  6.     fclose($fhandle);
  7. }else{
  8.     echo '<textarea id="textbox" cols="50" rows="20">';
  9.     readfile($fname);
  10.     echo '</textarea><br/><button onclick="post_to_url(\'#\', {\'edit\':\'1\', \'text\':document.getElementById(\'textbox\').value})">Save</button>';
  11. }
  12. ?>
  13. <script>
  14. function post_to_url(path, params, method)
  15. {
  16.     method = method || "post"; // Set method to post by default, if not specified.
  17.     // The rest of this code assumes you are not using a library.
  18.     // It can be made less wordy if you use one.
  19.     var form = document.createElement("form" );
  20.     form.setAttribute("method", method);
  21.     form.setAttribute("action", path);
  22.     for(var key in params) {
  23.         var hiddenField = document.createElement("input" );
  24.         hiddenField.setAttribute("type", "hidden" );
  25.         hiddenField.setAttribute("name", key);
  26.         hiddenField.setAttribute("value", params[key]);
  27.         form.appendChild(hiddenField);
  28.     }
  29.     document.body.appendChild(form);    // Not entirely sure if this is necessary
  30.     form.submit();
  31. }
  32. </script>


 
Vous aurez besoin d'obtenir la permission d'écrire dans le fichier. Je ne prends pas le mérite de le fonction "post_to_url" (J'ai oublié où je l'ai trouvé).


Message édité par AJW256 le 17-02-2010 à 13:04:07

---------------
J'apprends parler en français alors je ferai des erreurs. S'il vous plaît corrigez-moi :)
n°1966811
rufo
Pas me confondre avec Lycos!
Posté le 17-02-2010 à 11:53:49  profilanswer
 

en même temps, je vois pas l'intérêt de gérer le formulaire avec du javascript alors que du html suffit :/


Message édité par rufo le 17-02-2010 à 11:54:22

---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°1966845
jmb74
Miaou
Posté le 17-02-2010 à 12:36:43  profilanswer
 

Merci pour ton script AJW256, je testerai ca ce soir :jap:


---------------
old feedback
n°1966857
AJW256
Posté le 17-02-2010 à 13:02:27  profilanswer
 

Oui, vous pouvez le faire avec l'HTML au lieu du Javascript mais je préfére le faire ce chemin.


---------------
J'apprends parler en français alors je ferai des erreurs. S'il vous plaît corrigez-moi :)
n°1966859
AJW256
Posté le 17-02-2010 à 13:07:15  profilanswer
 

C'est une meilleure alternative:
 

Code :
  1. <?
  2. $fname = 'filename.txt';
  3. if(!$_POST['textbox']){
  4.      $fhandle = fopen($fname,"w" );
  5.      fwrite($fhandle,$_POST['text']);
  6.      fclose($fhandle);
  7. }else{
  8.      echo '<form method="post" action="#"><textarea id="textbox" cols="50" rows="20">';
  9.      readfile($fname);
  10.      echo '</textarea><br/><INPUT type="submit" value="Save"></form>';
  11. }
  12. ?>


 
En fait, je ne sais pas pourquoi je ne le fais pas ce chemin :lol:

Message cité 1 fois
Message édité par AJW256 le 17-02-2010 à 13:39:30

---------------
J'apprends parler en français alors je ferai des erreurs. S'il vous plaît corrigez-moi :)
n°1966889
kao98
...
Posté le 17-02-2010 à 14:05:00  profilanswer
 

AJW256 a écrit :

C'est une meilleure alternative:
 
 
En fait, je ne sais pas pourquoi je ne le fais pas ce chemin :lol:


[HS]
"this way", quand on parle de quelque chose que l'on fait, se traduit par "de cette façon".
 
To do it this way => le faire de cette façon.
 
[/HS]


---------------
Kao ..98 - Uplay (R6S) : kao98.7.62x39 - Origin (BF4, BF1) : kntkao98
n°1966906
stealth35
Posté le 17-02-2010 à 14:41:53  profilanswer
 

[HS] way = voie [/HS]

n°1966913
kao98
...
Posté le 17-02-2010 à 14:49:10  profilanswer
 

stealth35 a écrit :

[HS] way = voie [/HS]


C'est tellement réducteur de traduire "way" par un seul et unique terme que c'est tout simplement faux. C'est un terme qui a tellement de signification possible que d'il n'est tout simplement pas possible de le traduire sans aucun contexte, sans mise en situation.


---------------
Kao ..98 - Uplay (R6S) : kao98.7.62x39 - Origin (BF4, BF1) : kntkao98
n°1966916
AJW256
Posté le 17-02-2010 à 15:00:43  profilanswer
 

Je n'ai pas pensé que c'était correcte. Merci beaucoup :)
 
"En fait, je ne sais pas pourquoi je ne le fais pas de cette façon"


---------------
J'apprends parler en français alors je ferai des erreurs. S'il vous plaît corrigez-moi :)
mood
Publicité
Posté le 17-02-2010 à 15:00:43  profilanswer
 

n°1966920
kao98
...
Posté le 17-02-2010 à 15:08:22  profilanswer
 

AJW256 a écrit :

Je n'ai pas pensé que c'était correcte. Merci beaucoup :)
 
"En fait, je ne sais pas pourquoi je ne le fais pas de cette façon"


:jap:


---------------
Kao ..98 - Uplay (R6S) : kao98.7.62x39 - Origin (BF4, BF1) : kntkao98
n°1966921
stealth35
Posté le 17-02-2010 à 15:09:12  profilanswer
 

kao98 a écrit :


C'est tellement réducteur de traduire "way" par un seul et unique terme que c'est tout simplement faux. C'est un terme qui a tellement de signification possible que d'il n'est tout simplement pas possible de le traduire sans aucun contexte, sans mise en situation.


 
sauf que dans se contexte là c'est que ca veux dire littéralement et en français.

n°1966926
kao98
...
Posté le 17-02-2010 à 15:17:35  profilanswer
 

stealth35 a écrit :


 
sauf que dans se contexte là c'est que ca veux dire littéralement et en français.


Non.
Dans ce contexte, la traduction littérale, c'est "façon", ou "manière". Pas "voie".


---------------
Kao ..98 - Uplay (R6S) : kao98.7.62x39 - Origin (BF4, BF1) : kntkao98
n°1966996
jmb74
Miaou
Posté le 17-02-2010 à 21:20:17  profilanswer
 

@AJW256 > j'ai copié/collé ton code dans une page .htm puis j'ai créé un fichier filename.txt avec 3 lignes de texte, mais le résultat est une page blanche :/
 
Quel est le problème?
 


---------------
old feedback
n°1966999
AJW256
Posté le 17-02-2010 à 21:32:43  profilanswer
 

C'est PHP, vous avez besoin d'un espace web avec PHP installé. Aussi, le fichier a besoin d'une extension de .php.


---------------
J'apprends parler en français alors je ferai des erreurs. S'il vous plaît corrigez-moi :)
n°1967003
jmb74
Miaou
Posté le 17-02-2010 à 21:41:10  profilanswer
 

J'ai placé mes fichier sur un espace web avec PHP.
 
J'ai renommé mon fichier .htm en .php mais cela me donne toujours une page blanche :??:


---------------
old feedback
n°1967006
AJW256
Posté le 17-02-2010 à 21:45:31  profilanswer
 

Mon code avait des erreurs, voici la bonne version:
 

Code :
  1. <?
  2. $fname = 'filename.txt';
  3. if(!isset($_POST['text'])){
  4.     echo '<form method="post" action="#"><textarea name="text" id="text" cols="50" rows="20">';
  5.     readfile($fname);
  6.     echo '</textarea><br/><INPUT type="submit" value="Save"></form>'; 
  7. }else{
  8.     $fhandle = fopen($fname,"w" );
  9.     fwrite($fhandle,$_POST['text']);
  10.     fclose($fhandle);
  11.     echo 'fichier sauveguard&eacute;';
  12. }
  13. ?>


 
Testez ici


Message édité par AJW256 le 17-02-2010 à 21:46:01

---------------
J'apprends parler en français alors je ferai des erreurs. S'il vous plaît corrigez-moi :)
n°1967009
jmb74
Miaou
Posté le 17-02-2010 à 21:53:34  profilanswer
 

Merci, ca marche déjà mieux! Par contre j'ai un souci : la boite de saisie s'affiche toujours vide, sans reprendre le texte contenu dans le fichier :??:
 
Le texte que je saisi s'enregistre bien dans le fichier, mais si je rappele la page, la boite s'affiche toujours vide!
 
Dans ton lien cela marche très bien par contre!


---------------
old feedback
n°1967012
AJW256
Posté le 17-02-2010 à 21:58:26  profilanswer
 

Vous aurez besoin d'obtenir la permission d'écrire dans le fichier. Si votre serveur utilises Linux ensuite la permission du fichier a besoin d'être 777.


---------------
J'apprends parler en français alors je ferai des erreurs. S'il vous plaît corrigez-moi :)
n°1967013
jmb74
Miaou
Posté le 17-02-2010 à 21:58:51  profilanswer
 

J'ai résolu en partie le problème : j'avais mis le paragraphe <script> après le code php!
 
Je l'ai placé avant, et maintenant le texte s'affiche bien dans la boite de saisie!
 
Mais nouveau problème : le texte que je modifie n'est pas sauvegardé, il m'affiche toujours la même chose :/


---------------
old feedback
n°1967014
AJW256
Posté le 17-02-2010 à 22:08:44  profilanswer
 

Quel code utilisez-vous? Vous n'avez pas besoin de <script>.


Message édité par AJW256 le 17-02-2010 à 22:10:13

---------------
J'apprends parler en français alors je ferai des erreurs. S'il vous plaît corrigez-moi :)
n°1967015
jmb74
Miaou
Posté le 17-02-2010 à 22:17:05  profilanswer
 

Ah oui exact, j'avais recopié le <script> de ton 1er post mais je viens de le supprimer en ne gardant que le code php et ca fonctionne très bien :)
 
Pour mon problème de texte j'ai compris le souci : ce que je saisis est bien sauvegardé, mais quand je rappele la page php, l'explorateur va chercher dans son cache et m'affiche la même chose que précédemment.
 
En faisant "actualiser la page" je vois finalement bien le texte que j'avais modifié :love:
 
Existe t'il un code ou une balise à insérer en début de page pour empécher le navigateur d'aller chercher dans le cache? (en quelque sorte, "forcer" le rafraichissement de la page)


Message édité par jmb74 le 17-02-2010 à 22:20:20

---------------
old feedback
n°1967020
AJW256
Posté le 17-02-2010 à 22:35:17  profilanswer
 

Ecrirez ce au-dessus tout le code mais aprés le "<?":

 
Code :
  1. header("Expires: Mon, 26 Jul 1997 05:00:00 GMT" );
  2. header("Last-Modified: " . gmdate("D, d M Y H:i:s" ) . " GMT" );
  3. header("Cache-Control: no-store, no-cache, must-revalidate" );
  4. header("Cache-Control: post-check=0, pre-check=0", false);
  5. header("Pragma: no-cache" );
 

Je pense que il traiterai tous les navigateurs.


Message édité par AJW256 le 17-02-2010 à 22:35:58

---------------
J'apprends parler en français alors je ferai des erreurs. S'il vous plaît corrigez-moi :)
n°1967036
Elmoricq
Modérateur
Posté le 17-02-2010 à 23:39:21  profilanswer
 

C'est très aimable à AJW256 d'aider ainsi. Cependant, les demandes de codes tout faits sont hors charte, à cause de toutes les demandes de résolution d'exercices qui arrivent régulièrement ici.
 
Je ferme donc ce sujet.

mood
Publicité
Posté le   profilanswer
 


Aller à :
  FORUM HardWare.fr
  Programmation
  PHP

  Lire un bloc de texte, le modifier, et le sauvegarder !

 

Sujets relatifs
Texte d'un script en plus petit..probleme referencement (prise en compte balise meta + contenu texte)
Existe-t-il un script JS pour modifier le code source d'une page html?Ombre sur texte
Justifier du texte en html[resolu] Remplacer un lien par du texte une fois cliqué
Injecter/modifier du code HTML dans une pagePeut-on appeler un texte dans une page web ?
[C] Lire un fichier . txt[Python] Supprimer la fin d'un fichier texte
Plus de sujets relatifs à : Lire un bloc de texte, le modifier, et le sauvegarder !


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR