Précédent   Forum des professionnels en informatique > PHP > Langage > Fichiers
Fichiers Forum d'entraide sur les fichiers avec PHP. Avant de poster -> FAQ fichiers et Sources fichiers
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 10/09/2008, 22h25   #1
Membre régulier
 
Étudiant
Inscription : mars 2007
Messages : 107
Détails du profil
Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : mars 2007
Messages : 107
Points : 93
Points : 93
Par défaut ecriture/lecture sur le meme fichier

Bonjour,

Un problème incomprehensible... :/
Alors, on va reprendre depuis le debut, j'ai 2 fonctions :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
 
function lister()
	$file= fopen($this->dataFile, 'r');
	$table = fread($file, filesize($this->dataFile));
	$table = unserialize($table);
	fclose($file);
	return $table;
}
 
function add($objet) {
	$file= fopen($this->dataFile, 'r+');
	$table = fread($file, filesize($this->dataFile));
	$table = unserialize($table);
	$table[] = $objet;
 
	fseek($file, 0);
	fwrite($file, serialize($table));
	fflush($file);
	fclose($file);
}
Déroulement normal de l'application, je ne fais qu'afficher la liste. Tout va bien.
Si je fais un ajout, j'appelle d'abord la fonction add et ensuite lister.
Dans add, je recupere d'abord le contenu du fichier, je déserialise, je rajoute l'objet dans le tableau, je re-serialize et je re-enregistre dans le fichier. Une fois tout ca fait, j'appelle lister.

Le probleme : Pour l'affichage tout va bien. Seulement quand j'ajoute, la fonction lister me donne une erreur pour unserialize toujours sur l'avant dernier caractere.
Code :
1
2
 
Notice: unserialize() [function.unserialize]: Error at offset 509 of 510 bytes in /var/www/MyClass.class.php on line 63
J'ai pu remarquer en affichatn le contenu du fichier juste entre les deux fonctions que celui ci se termine par "}i".
Tandis que a la fin de l'execution, le fichier se termine bien par "}}"
J'ai donc tout d'abord pensé a un fflush, mais ca n'a pas l'air de changer quelques chose...

je me tourne donc vers vous, je ne comprends pas... :/
Si vous pouviez éclairer ma lanterne, je vous en serais reconnaissant!

Zenklys
Zenklys est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/09/2008, 23h34   #2
Membre régulier
 
Étudiant
Inscription : mars 2007
Messages : 107
Détails du profil
Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : mars 2007
Messages : 107
Points : 93
Points : 93
Bon... Je ne suis partagé la. J'ai découvert la solution mais elle ne me satisfait pas! Je veux savoir pourquoi ca ne marche pas!

C'est un problème de cache... je pense, enfin!


Solution : remplacer les fread et autres par file_get_contents et file_put_contents!
Zenklys est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 05h37.


 
 
 
 
Partenaires

Hébergement Web