Se connecter avec
S'enregistrer | Connectez-vous

Editer un fichier

Dernière réponse : dans Programmation
Lassé par la pub ? Créez un compte

Meilleure solution

J'espère avoir saisi ce que tu voulais faire.

  1. <form action="" name="url" method="post">
  2. <input type="text" name="chainearemplacer" value="" />
  3. <input type="submit" name="envoi" value="Remplacer" />
  4. </form>
  5.  
  6. <?php //début code php
  7.  
  8. if (isset($_POST['envoi'])){
  9. $recherche = '1qfafazjlkhoisdfjljklqdfoi'; // La chaine a chercher
  10. $remplace = isset($_POST['chainearemplacer'])?$_POST['chainearemplacer']:""; // La chaine a remplacer
  11. $fichier = 'test.html'; // Le fichier
  12.  
  13. file_put_contents($fichier, str_replace($recherche, $remplace, file_get_contents($fichier)));
  14.  
  15. //ici -> ton script qui permet de déplacer le fichier
  16.  
  17. $chemin = $rep_aleatoire.'/'.$fichier; //$fichier est "test.html"
  18. ?>
  19. <a href="<?php echo $chemin; ?>">Voir le fichier</a>
  20. <?php } //fin if
  21. ?>
Expert Programmation

Oui, mais c'est plus compliqué ! L'idée globale est d'ouvrir le fichier (fopen), de lire son contenu (plusieurs fonctions possibles selon les cas et les besoins), de travailler dessus le contenu avec un script php qui répond à ce que tu veux faire (là il faut que tu le crées), d'écrire le contenu dans le fichier en écrasant ce qui y était avant (plusieurs fonctions aussi selon les cas et les besoins), fermer le fichier (fclose).

Un type m'a donné ça comme code:

  1. <?
  2. $chainerecherche= // Ce que tu recherche
  3. $fichier= "nom_du_fichier"; // Nom du fichier
  4.  
  5.  
  6. $chaine= fichier($fichier);
  7. if (ereg($chainecherche,$chaine)){
  8. $chaine=str_replace($chainerecherche,$chaine);
  9. ajouttxt($fichier,$chaine);
  10. }
  11.  
  12.  
  13. function ajouttxt($fichier,$txt=''){
  14. if ($txt==""){ // Lit le fichier
  15. $fp = fopen ($fichier, "r");
  16. $contenu_du_fichier = fgets ($fp);
  17. return $contenu_du_fichier;
  18. }else{ //Ecris dans le fichier
  19. $fp = fopen($fichier, 'w');
  20. fwrite($fp, $txt);
  21. }
  22. close $fp;
  23. }
  24.  
  25. ?>


Qu'en penses-tu?
Car ici je ne vois pas comment faire pour modifier le contenu ciblé du fichier avec les données du formulaire d'envoi de type "post"
(comme le script initial que j'avais donné: celui-ci modifier le fichier en ajoutant les données du formulaire de type post)
Expert Programmation

Ce code est un bon début. $chaine est le contenu d'une variable POST et $chainerecherche est le texte de ton fichier que tu veux modifier.

En gros il faut que tu fasses un boucle sur le tableau associatif $POST et que tu remplaces par exemple dans le fichier html le nom de la variable post par sa valeur (c'est ce que fait ereg dans le code qu'on t'a donné).

Par exemple, si tu as $_POST['nom_membre'] = 'dupont', le code va remplacer le mot 'nom_membre' de ton fichier html initial par la valeur 'dupont'.

Le type a changé son script car apparement celui-ci ne répondait pas aux attentes: il ne prenait pas en compte le formulaire d'envoi.

Donc voici le code:

  1. <?
  2. $chainerecherche= // Ce que tu recherche
  3. $chaineremp= // Chaine à mettre à la place de la précédente
  4. $fichier= "nom_du_fichier"; // Nom du fichier
  5.  
  6.  
  7. $chaine= fichier($fichier);
  8. if (ereg($chainecherche,$chaine)){
  9. $chaine=str_replace($chainerecherche,$chaineremp,$chaine);
  10. ajouttxt($fichier,$chaine);
  11. }
  12.  
  13.  
  14. function ajouttxt($fichier,$txt=''){
  15. if ($txt==""){ // Lit le fichier
  16. $fp = fopen ($fichier, "r");
  17. $contenu_du_fichier = fgets ($fp);
  18. return $contenu_du_fichier;
  19. }else{ //Ecris dans le fichier
  20. $fp = fopen($fichier, 'w');
  21. fwrite($fp, $txt);
  22. }
  23. close $fp;
  24. }
  25.  
  26. ?>



Il a notamment dit:

ex:
  1. $chainerecherche='<form name=form0 method="post">';
  2. $chaineremp='<form name=form1 method="post">';



En faite je connais rien en php. Mais à force d'en voir je commence à comprendre :D  .
J'aimerais que tu m'aides à comprendre ce script.

Si j'ai ça comme formulaire d'envoi de données:

  1. <form method="post" action="1.php" enctype="multipart/form-data">
  2. <input maxlength="300" name="text">
  3. <input type="submit" name="submit" value="Valider" />
  4. </form>


Comment modifier le script qu'il m'a donné pour faire en sorte de modifier la partie du fichier html (le fichier cible) par les données du formulaire ?

ça avance!

Quand il écrit:
  1. $chainerecherche='<form name=form0 method="post">';

C'est un exemple que veut dire qu'il recherche
  1. '<form name=form0 method="post">';
?

Et quand il écrit:
  1. $chaineremp='<form name=form1 method="post">';

Cela veut dire qu'il remplace ce qui est recherché par ce qu'à écris le type dans le formulaire ?

Donc j'ai testé le script:
  1. $chainerecherche='1';// Ce que tu recherche
  2. $chaineremp='<form name=xxx method="post">'; // Chaine à mettre à la place de la précédente
  3. $fichier= "test.html"; // Nom du fichier
  4.  
  5.  
  6. $chaine= fichier($fichier);
  7. if (ereg($chainecherche,$chaine)){
  8. $chaine=str_replace($chainerecherche,$chaineremp,$chaine);
  9. ajouttxt($fichier,$chaine);
  10. }
  11.  
  12.  
  13. function ajouttxt($fichier,$txt=''){
  14. if ($txt==""){ // Lit le fichier
  15. $fp = fopen ($fichier, "r");
  16. $contenu_du_fichier = fgets ($fp);
  17. return $contenu_du_fichier;
  18. }else{ //Ecris dans le fichier
  19. $fp = fopen($fichier, 'w');
  20. fwrite($fp, $txt);
  21. }
  22. fclose($fp);
  23. }


Je l'ai modifié à ma guise comme vous pouvez le voir. (déja il y avait une faute: c'était
  1. fclose($fp);
à l'avant dernière ligne)

Mais là, ça ne fonctionne pas. Il est écrit: Fatal error: Call to undefined function fichier() in /home/arbilus/public_html/1.php on line 35

Et la ligne 35 c'est:
  1. $chaine= fichier($fichier);


Pouvez-vous m'aider à régler le problème ?

Problème résolu à la ligne 35:
Il fallait mettre $chaine= ajouttxt($fichier);

Mais maintenant j'ai un autre problème:
ça me met:

"Warning: ereg() [function.ereg]: REG_EMPTY in /home/arbilus/public_html/1.php on line 36"

et la ligne 36 = if (ereg($chainecherche,$chaine)){

J'ai des nouvelles:

Le code serait plutôt:

  1. $recherche = 'H3llo W0rld!'; // La chaine a chercher
  2. $remplace = 'Hello World!'; // La chaine a remplacer
  3. $fichier = 'test.html'; // Le fichier
  4.  
  5. file_put_contents($fichier, str_replace($recherche, $remplace, file_get_contents($fichier)));


Seulement cela modifie les données mais sans passer par le formulaire.
Donc comment faire pour modifier en passant par mon formulaire ?

J'ai essayé de faire ça:
  1. $recherche = '1qfafazjlkhoisdfjljklqdfoi'; // La chaine a chercher
  2. $remplace = '<form name=xxx method="post">;' // La chaine a remplacer
  3. $fichier = 'test.html'; // Le fichier
  4.  
  5. file_put_contents($fichier, str_replace($recherche, $remplace, file_get_contents($fichier)));

Mais ça interprète
  1. '<form name=xxx method="post">;'
comme un message et non comme un code pour formulaire

J'entend par message que c'est <form name=xxx method="post"> qui est l'expression remplaçant l'expression d'origine dans le fichier (dans mon exemple: "1qfafazjlkhoisdfjljklqdfoi" devient "<form name=xxx method="post">" .

Alors que je veux que ce soit <form name=xxx method="post"> qui fasse en sorte que "1qfafazjlkhoisdfjljklqdfoi" soit remplacé par l'expression que le type aura tapé dans le formulaire.

edit: si je fait comme tu dit:
ça fonctionne pas: pas de message d'erreur et ça modifie bien la ligne demandé...
Mais il y a un problème:


Exemple: j'ai pris un fichier que j'ai nommé test.html, ce fichier a pour code:
  1. sqdlfkqsdfklj<br><br>1qfafazjlkhoisdfjljklqdfoi<br><br><br>DSFLJKDFQF<br>



Ce qui donne à l'affichage:

sqdlfkqsdfklj

1qfafazjlkhoisdfjljklqdfoi


DSFLJKDFQF


Et une fois le script mis en marche, le fichier a pour code:
  1. sqdlfkqsdfklj<br><br><form name=xxx method="post"><br><br><br>DSFLJKDFQF<br>


Ce qui affiche:
sqdlfkqsdfklj




DSFLJKDFQF


En faite avec le script que tu m'a donné ça interprète
  1. <form name=xxx method="post">

comme un nouveau "message" et non comme une commande pour interpréter les données transmises par le formulaire d'envoi.

Ah d'accord je n'avais pas compris ce que tu voulais faire!

Voilà un exemple qui devrait marcher:
  1. <form action="" name="url" method="post">
  2. <input type="text" name="chainearemplacer" value="" />
  3. <input type="submit" name="envoi" value="Remplacer" />
  4. </form>
  5.  
  6. <?php //début code php
  7.  
  8. if (isset($_POST['envoi'])){
  9. $recherche = '1qfafazjlkhoisdfjljklqdfoi'; // La chaine a chercher
  10. $remplace = isset($_POST['chainearemplacer'])?$_POST['chainearemplacer']:""; // La chaine a remplacer
  11. $fichier = 'test.html'; // Le fichier
  12.  
  13. file_put_contents($fichier, str_replace($recherche, $remplace, file_get_contents($fichier)));
  14.  
  15. } //fin if
  16. ?>


Tous ça à placer dans un fichier .php et tu peux changer les noms que j'ai utilisé bien sûr, mais attention à la cohérence.

ENORME !!!!


ça fonctionnneee !!!!


COMMENT DIRE... MERCCIIIIIII !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

Vous êtes super sympas sur ce forum ! Je sais pas comment vous remercier. Mais si je peux par exemple faire la promo d'un de vos sites sur mon site. N'hésitez pas, ce sera VRAIMENT un plaisir.

Merci encore

Dommage, parce que tu t'en sortirai très bien avec une bonne idée .

Autrement, avec le script que tu m'a donné, cela modifie un fichier. Mais comment faire pour qu'une fois le script exécuté cela affiche le lien menant au fichier édité.
En sachant que ce fichier édité appartient à un dossier où le nom a été créé "au hasard".

... ça se complique hein :D  ?

(je veux faire une service où le type peut créer "sa page perso")

ça marche ! Et si je veux faire en sorte que sur une page html ce lien s'ajoute dans une div ? (si je deviens lourd tu me le dis. Je veux pas ennuyer qui que ce soit. J'irais demander sur d'autres forums ça me gênerais pas)

Simplement comme ça
  1. <?php
  2. //ici -> Tout le code php
  3. ?>
  4. <html>
  5. ...
  6. <head>...</head>
  7. <body>
  8. <div id=contenu">
  9. <?php if (isset($_POST['envoi'])){ ?>
  10. <a href="<?php echo $chemin; ?>">Voir le fichier</a>
  11. <?php } ?>
  12. </div>
  13. </body>
  14. </html>

Non, c'est pas vraiment ça.

En faite je voudrais cela:

formulaire complété -> création du dossier avec nom au hasard -> edition du fichier que contient ce nouveau dossier créé avec les données du formulaire.

Tout ça c'est ok (grace à vous). Mais seulement ce que je voudrais c'est qu'une fois sur la page membre, le type puisse lancer le procédé en amont et que sur sa page membre soit inscrit dans une div tous "ses espaces" perso (les dossiers qu'il aura créé grace au script) par les liens de ceux-ci.

Ainsi ça lui ferai un compte où il aurait accès à tous ces espaces persos.
Mais en ce qui concerne l'espace membre j'ai vu un tuto sur internet très bien expliqué. Seulement je prépare le terrain avant de le créer :)  .

Si j'ai bien compris, tu veux que dans l'espace membre de chaque utilisateur il voie les chemin des dossiers qu'il a créé ($rep_aleatoire).
Dans ce cas, le plus simple est de stocker ces chemins dans une base de données (il faut en posséder une chez ton hébergeur) et ensuite tu affiches simplement le contenu de la base...

Ok, donc je créé l'espace membre avec tout ce qui concerne la base de donnée. Mais après je vois vraiment pas comment faire ce que tu dis: c'est en rapport avec du php ?

Edit: c'est bon, j'ai cherché et trouvé un truc intéressant à ce sujet. J'essai de comprendre par moi-même puis je te demande si j'ai un ptit problème (si tu voudras encore m'aider -> J'ai besoin de toi :D , et ça m'enerve car je préfère toujours me débrouiller par moi-même... Mais là, apprendre vraiment le php j'ai pas le temps)

Oui, sans rien n'y connaître, c'est un peu chaud!
Le plus simple est que tu lises un petit cours/tuto (il y en a plein sur le net) pour savoir comment faire dans les grandes lignes, ensuite il y a quelques fonctions php indispensables à la manipulation des bases (+ requêtes SQL) à connaître, mais ce n'est pas si difficile et assez vite compris.
Une fois que tu t'es lancé, si tu as des questions assez précises je suis là ;) 

ça risque d'être plein de rebondissement :)  . Mais c'est justement ça qui fait la différence: ceux qui tiennent tête et qui arrivent à faire un superbe site ; puis ceux qui veulent leur site en 24h et si c'est en 25h ils arretent tout.
Lassé par la pub ? Créez un compte