Ecriture dans fichier texte

Eléphanteau du PHP | 20 Messages

08 juin 2005, 02:08

Bonjour !
je cherche à résoudre un probléme de saisie par FORMulaire...
puis a l'écrire dans un fichier texte du serveur qui est en CHGMOD 777

Mon PHP fonctionne comme ceci:
(le fichier existe déjas et a un contenu en texte brut)

1) dans mon PHP je controle si mon Formulaire m'a renvoyé un nouveau texte
SI OUI je voudrais remplacer le texte existant et ça je ne sais pas la formule c'est ma question
Je ne connait pas la syntaxe pour réécrire du texte
Je ne sais pas comment déceler dans le texte reçu les retours chariot ??
Bref je serais gourmand et vous demande auriez vous un exemple type simple ?
2) si NON la je sais faire, je lis mon fichier par

Code : Tout sélectionner

<?php $TabLivre=file("illustre.txt"); $NbrLig=count($TabLivre)-1; for($compt=1;$compt<=$NbrLig;$compt++) { $commentaire[$compt]=$TabLivre[$compt]; } ?>
Et je le réinjecte le contenu dans le TEXTAREA
de mon formulaire.

Voila et merci d'avance.

zzzzZZZZ
Invité n'ayant pas de compte PHPfrance

08 juin 2005, 08:14

pour le test si il s'agit d'un nouveau texte c'est pas indispensable... seulement tu ecrasera ce que contient le fichier .txt par la même chose
fseek pour revenir au debut du fichier .txt
fputs pour ecrire dans le fichier .txt
fget pour lire le fichier .txt
fopen ouvre un fichier
fclose ferme un fichier

tu a les termes tu peux rechercher plus d'infos sur leur syntaxe sur la doc officiel... nexen.net c'est pas mal non plus je trouve

Eléphanteau du PHP | 20 Messages

08 juin 2005, 09:43

Merci d'avoir pris le temps, tu vois mon probléme est que la lecture que je fait du fichier marche simplement avec aucun des verbes que tu indique
ce qui m'étonnse.

<?php
$TabLivre=file("illustre.txt");
$NbrLig=count($TabLivre)-1;
for($compt=1;$compt<=$NbrLig;$compt++)
{
$commentaire[$compt]=$TabLivre[$compt];
}
?>

Alors je pensait qu'il y avait un terme que justement je ne trouves pas en lisant le site PHP ...

Et aussi je n'arrives pas à maitriser les retour de lignes venant de l' Area.

Voila pourquoi je pose la question ici, par par "fléme" de chercher ;-)

Modérateur PHPfrance
Modérateur PHPfrance | 2575 Messages

08 juin 2005, 10:19

En fait, toi tu utilise la fonction file qui retourne un tableau rempli à partir du fichiers lu. Cette fonction effectue automatiquement donc tous ce que tu peux faire manuellement avec les commande que t'as présenté notre ami zzzZZZZ (le renfleur).
Donc t'as deux méthodes la tienne (file et le tableau) et la sienne (fopen, fgets, fclose)
Voici un programme qui fait la même chose que celui que tu a présenté en utilisant les fonction d'accès au fichiers :
//Ton code 
$TabLivre=file("illustre.txt"); 
//L'équivalent
     $f = fopen("illustre.txt", "r"); //le "r" pour l'ouverture en lecture (read) 
	$TabLivre= null; //initialiser le tableau résultat 
	while (! feof($f)) { //boucle tantque pas fin du fichier $f 
     	$ligne = fgets($f); //Lire une ligne 
		if ($ligne != null) $TabLivre[] = $ligne; //et la stocker dans une nouvelle case du tableau 
	}//fin de while 
	fclose($f); //fermer le fichier 
	//Affichage
	$message = "<table><legend>Contenu du fichier</legend>";
	if ($TabLivre != null){
		foreach ($TabLivre as $ligne)
			$message .= "<tr><td>$ligne</td></tr>";
	}else $message .= "<tr><td>Fichier vide!</td></tr>";
	$message .= "</table>";
Après la lecture du fichier le tableau $TabLivre est soit nul ou rempli.
La fonction file fait la même chose. Moi je la préfère pour simplifier la programmation à condition qu'on ne souhaite pas filtrer le contenu lu. Dans ce cas la méthode séquentielle (lecture ligne par ligne) est prévilègiée.

Ô concernant ton textearea : saches que ce dernier ajoute automatiquement les retours à la ligne dans le texte saisi. Le problème est quand tu utilise file pour lire le fichier, cette fonction supprime les retours à la ligne puisqu'elle renvoi chaque ligne dans une case du tableau.
C'est à toi d'écrire le contenu du textearea ligne par ligne à partir du tableau.
Exemple :

Code : Tout sélectionner

echo "<textarea name=texte>"; if ($TabLivre != null){ foreach ($TabLivre as $ligne) echo $ligne; } echo "</textarea>";
--------//////----//---//----//////
-------//---//----//---//----//---//
------//////----//////-----//////
-----||--------||--||---||
Prendre le recul n'est pas une perte de temps.


ps: Affrontez moi dans l'arène

Eléphanteau du PHP | 20 Messages

08 juin 2005, 12:29

Salut sadeq

Tu sais quoi ?? c'est trop génialement clair ...
Mille mercis à toi et a tout ce temps passé à aider les autres ;-)

Merci encore à toi zzzzZZZZ pour les fonctions essentielles !

A++
(je clos donc le débat en résolu :lol: