Forum Clubic

Lire/Ecrire un textarea

Bonjour à tous,

Voila mon problème (vous trouverez mes fichier à cette adresse : kravmaga-champagne.fr…) :
j’essaye de créer un petit codage qui me permet, à partir d’une page (index.php) d’enregistrer dans un fichier (donnees.txt) le contenu d’un champ de type “textarea”, afin de l’afficher sur une autre page (2dex.php).

J’arrive à lire le contenu de donnees.txt pour l’afficher sur 2dex.php, mais j’ai 3 problèmes que je souhaiterai que vous m’aidiez à résoudre :

Premièrement, je n’arrive pas à enregistrer le contenu du textarea dans le fichier donnees.txt

Ensuite, première petite subtilité : j’aimerais que le contenu du fichier donnees.txt s’affiche automatique dans mon textarea, pour pouvoir le modifier, sans avoir à tout retaper.

Enfin, seconde subtilité, je voudrais que le contenu du fichier (donnees.txt) soit réinitialisé si le visiteur de ma page n’a pas modifier ce fameux fichier donnees.txt.
je sais que ça doit se faire par cookie, mais je ne sais pas comment.

Je vous remercie bien d’avance de m’aider !

<?php
session_start();

$defaultValue = 'contenu du fichier';

if( ! isset( $_SESSION['alreadyVisited'] ) ) {
   file_put_contents( 'donnees.txt', $defaultValue );
}

if( isset( $_POST['texte'] ) ) {
   file_put_contents( 'donnees.txt', $_POST['texte'] );
   $_SESSION['alreadyVisited'] = TRUE;
}
?>
<form action="" method="post">
   <textarea name="texte"><?php echo file_get_contents( 'donnees.txt' ); ?></textarea><br/>
   <input type="submit" value="ecrire" />
</form>

Edité le 21/06/2008 à 19:54

Merci beaucoup de t’être intéressé à mon problème.

Apparemment ton code intègre le fait que le visiteur soit déjà venu ou pas, c’est formidable ! :super:
Cependant, comme tu pourra le constater en visitant la page ( kravmaga-champagne.fr… ) il semble y avoir une erreur dans la ligne suivante :

 file_put_contents( 'donnees.txt', $defaultValue );

Je ne connais pas du tout cette fonction, donc je suis incapable de trouver l’erreur.
Est-ce que tu veux bien y jeter un coup d’œil et me dire quelle correction faire ?
Merci d’avance.

Ton serveur ne connait pas la fonction, ancienne version donc ca marche pas.


function file_get_contents( $filepath ) {
	if( file_exists( $filepath ) ) {
		if( $fo = fopen( $filepath, 'rb' ) ) {
			if( $contents = fread( $fo, filesize( $filepath ) ) ) {
				fclose( $fo );
				return $contents;
			} else {
				return FALSE;
			}
		} else {
			return FALSE;
		}
	} else {
		return FALSE;
	}
}

function file_put_contents( $filepath, $contents ) {
	if( file_exists( $filepath ) ) {
		if( $fo = fopen( $filepath, 'wb' ) ) {
			if( $size = fwrite( $fo, $contents ) ) {
				fclose( $fo );
				return $size;
			} else {
				return FALSE;
			}
		} else {
			return FALSE;
		}
	} else {
		return FALSE;
	}
}

Met ca au debut du fichier, c’est des fonctions de remplacement des celle que j’ai utilisé, ca à vraiment rien à voir en therme d’efficacité ou de fonctionalité par raport au vrai, mais ca devrai faire l’affaire pour tes utilité.
file_get_contents(), la doc pour cette foncfion “normal”
file_put_contents(), la doc pour cette foncfion “normal”
Edité le 21/06/2008 à 21:51

Heu… demande une mise à jour de ton serveur PHP pour php5 voire 4. Si y a pas, c’est qu’il utilise encore soit php3 soit php4 ce qui est grave dans les deux cas.

Je le met où exactement ? dans le head ?
Je conserve le code que tu m’as indiqué avant ?
Où je le remplace par autre chose ?


[quote=""] demande une mise à jour de ton serveur PHP pour php5 [/quote] Si je met l'extension .php5 a mon fichier index, j'obtiens le message d'erreur suivant :
Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at /homepages/17/d176188118/htdocs/tore/index.php5:16) in /homepages/17/d176188118/htdocs/tore/index.php5 on line 31

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /homepages/17/d176188118/htdocs/tore/index.php5:16) in /homepages/17/d176188118/htdocs/tore/index.php5 on line 31

La ligne 31 contien le code suivant :

session_start();

Est-ce normal d’avoir cette erreur ? ou est-ce que j’ai fait une fausse manip ? ou oublié quelque chose ?

Le problème se situe à la ligne 16 du fichier “index.php5”

Tu es sûr ?
voila le code de la ligne 16

<table border="0" align="center" width="750"  class="grdback">

Je ne vois pas ce qu’il y a là dedans qui puisse gêner le PHP ?!?

Le problème est que tu envoies du contenu au client (en l’occurrence : du code HTML) avant ton appel à session_start(). Il est impératif qu’il soit fait en premier (la déclaration de la session se fait dans le header de la page. Si PHP envoie du code HTML, il est forcé d’envoyer le header, donc il est déjà trop tard quand tu fais ensuite appel à session_start).
Edité le 23/06/2008 à 09:59

J’ai essayé de modifier le code de la page :
J’ai inscrit ceci :

<? session_start(); ?>

<html>

<head>
<title>oOo Tore oOo</title>

<link rel="stylesheet" href="style.css">

Ainsi, je n’ai plus de message d’erreur sur ma page index.php5, cependant, dès que je clique sur le bouton “ecrire”, je suis automatiquement redirigé vers la racine du site (le site d’une association), et le contenu du ficher donnees.txt n’est pas modifié.
A la rigueur, je préférerai réussir à écrire dans le fichier et ne pas avoir ma “seconde subtilité”, à savoir que le contenu du fichier soit inchangé si le visiteur ne l’a pas personnalisé.

Encore merci à vous tous qui vous êtes intéresse à mon problème :super:

UP
Personne ne peut plus m’aider ?