Problème : variable dans un fichier texte

Petit nouveau ! | 8 Messages

10 juin 2005, 11:13

Bonjour,

Je débute en php et je ne vois pas comment résoudre un problème.

Voilà, l'idée est : dans un page index.php contenue dans un répertoire de mon site, j'ai deux champs textaera. Dans le premier je voudrais taper l'adresse d'un autre fichier texte de mon site pour que le contenu de celui-ci apparaisse dans le second textaera.

Le but est de modifier le contenu du deuxième textaera en l'appelant avec son adresse dans le premier textaera en validant le tout par un bouton type submit.

Concretement :
- je tape monsite.com/dossier/fichier1.txt dans le textaera 1
- je valide par le bouton submit
- ma page index.php se recharge avec dans le textaera 1 ce que j'ai tapé au début (monsite.com/dossier/fichier1.txt ) et dans le texaera 2 le contenu du fichier fichier1.txt
- je modifie le contenu du texteaera 2
- je valide par le bouton submit
- ma page index.php se recharge avec dans le textaera 1 ce que j'ai tapé au début (monsite.com/dossier/fichier1.txt ) et dans le texaera 2 le contenu du fichier fichier1.txt modifié.

Voilà, j'espère être clair.
Merci pour vos réponses.

Mammouth du PHP | 1776 Messages

10 juin 2005, 11:26

un fopen couplé à fread, fwrite et fclose serait judicieux selon moi...
http://www.nexen.net/docs/php/annotee/f ... .fread.php
:wink:

Mammouth du PHP | 19672 Messages

10 juin 2005, 11:29

Hé ben.... pour un début en PHP, tu y vas fort. C'est effectivement faisable. Mais tu vas pas rigoler.

Il faut établir le schéma de fonctionnement: ça c'est déjà fait. Il faut établir l'ordre des choses: Tu vas devoir faire des tests lors de l'ouverture de la page, par exemple, est-ce qu'un des boutons submit a été cliqué. PArce que ce que je vois pour simplifier, c'est que tu vas devoir faire deux formulaires, un pour chaque textarea et chaque bouton ne concerne que son propre textarea, sinon, on part en galère.

Donc en premier lieu, tester quel bouton a été cliqué et en fonction du résultat:
- pas de bouton cliqué, on affiche la page de base;
- bouton 1 cliqué, on exécute la suite de manipuation que tu as décrite dans ce cas;
- bouton 2 cliqué, on exécute les manipulations correspondantes.

Visualises-tu mieux le schéma et sinon, sur quel point particulier bloques-tu ?
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Petit nouveau ! | 8 Messages

10 juin 2005, 11:48

Oui c'est plus clair comme ça, merci.

Là où je bloque c'est dans l'utilisation des fonctions. J'imagine bien l'utilisation de fopen() et de fclose(). Voilà ce que j'ai déjà:
<textarea name="des1" cols="70" rows="3" id="des1">
<?php
$fp = fopen('adr1.txt','rt');
if ($fp)
{
    fpassthru($fp);
    fclose($fp);
}
?>
</textarea>
avec adr1.txt contenant l'url du fichier texte 2 contenant ce que je veux afficher dans le textaera 2.

Jusque là pas de problème.

Après avoir valider le premier formulaire une page traitement1.php se charge et exécute le script :
if ( isset($_POST['NOM DU BOUTON']) ) 
{ 
    // ouverture en mode écriture, en écrasant l'ancien contenu...
    $fp = fopen('URL DU FICHIER TEXTE 1.txt','wt');
    // on écrit le fichiers...
    // $_POST['txt'] contient le champ TEXTAREA du formulaire
    // stripslashe() enlève les /' superflues...
    fwrite(  $fp, stripslashes( $_POST['TEXTAERA 1'] )  );
    // on ferme le fichier
    fclose($fp);
}
Voilà ce que j'ai pour le formulaire 1. Je ne vois pas comment faire pour le formulaire 2.

Mammouth du PHP | 19672 Messages

10 juin 2005, 11:53

D'abord, au lieu du bouton [ List ], utilise plutot le bouton [ PHP ] pour mettre du code; j'ai édité et corrigé.

Bon, pour le second formulaire, le nom de ton bouton submit doit être différent de celui du premier.

Quand tu fais le test en début de fichier, tu vérifie quel nom est envoyé et si c'est le second formulaire, tu récupère ce qui a été envoyé et tu initialise des variables que tu utilises pour compléter ton textarea
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Modérateur PHPfrance
Modérateur PHPfrance | 2575 Messages

10 juin 2005, 12:30

Voici un exemple :
<?
//Reception des paramètres
$action = isset($_GET["action"])?$_GET["action"]:null;
$texte = isset($_GET["texte"])?$_GET["texte"]:"";
$fichier=isset($_GET["fichier"])?$_GET["fichier"]:"";
$message = "";
$tableau = null;

//Traitement des actions
if ($action == "Ecrire" &&  trim($fichier) != ""  && trim($texte) != ""){
	$f = fopen($fichier, "w"); //le "w" pour l'ouverture en écriture (write)
    fwrite($f,$texte); //Ecrire tout le texte 
	fclose($f); //fermer le fichier 
}

if (trim($fichier) != "" && file_exists($fichier))	$tableau = file($fichier); //lit le fichier 

if ($tableau == null) $message = "Fichier vide ou innexistant!"; else $message = "Fichier chargé!";
//rappel du formulaire
?>
<form>
<p>Fichier <input name=fichier value=<? echo $fichier; ?>></p>
<p><b>Texte</b><br></b>
<? echo  "<textarea name=texte>"; 
if (isset($tableau) && $tableau != null){ 
     foreach ($tableau as $ligne) 
          echo $ligne;
} 
echo "</textarea>"; ?>
</p>
<p><input name=action type=submit value=Lire><input name=action type=submit value=Ecrire></p>
</form>
<Div><? echo $message; ?></Div>
--------//////----//---//----//////
-------//---//----//---//----//---//
------//////----//////-----//////
-----||--------||--||---||
Prendre le recul n'est pas une perte de temps.


ps: Affrontez moi dans l'arène

Petit nouveau ! | 8 Messages

10 juin 2005, 13:05

En fait j'aimerais savoir quel terme PHP je dois utiliser pour que l'url tapé dans un fichier texte soit utilisée dans le code suivant :
<?php
$fp = fopen('URL PRESENT DANS LE FICHIER TXT,'rt');
if ($fp) {
fpassthru($fp);
fclose($fp);
}
?>