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 09/05/2008, 18h33   #1
Nouveau Membre du Club
 
Inscription : avril 2004
Messages : 153
Détails du profil
Informations forums :
Inscription : avril 2004
Messages : 153
Points : 34
Points : 34
Par défaut Modifier un enregistrement dans un fichier texte

Bonjour,
comment puis-je faire pour modifier un enregistrement dans un fichier.

J'ai un fichier avec disons 5 lignes dedans.
Je souhaite modifier le 1er champ "champ" de la 4eme ligne.
Comment puis-je faire ?
Avec quelle fonction ?

Merci d'avance.
Ludo75 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/05/2008, 18h45   #2
Rédacteur
 
Avatar de RideKick
 
Homme
Directeur technique
Inscription : septembre 2006
Messages : 5 959
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Directeur technique
Secteur : High Tech - Produits et services télécom et Internet

Informations forums :
Inscription : septembre 2006
Messages : 5 959
Points : 10 889
Points : 10 889
Il faut que tu lise le fichier et que tu change manuellement la chaine que tu veux remplacer !
__________________
Pas de questions techniques en MP please

Mon site perso
RideKick est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/05/2008, 19h18   #3
Nouveau Membre du Club
 
Inscription : avril 2004
Messages : 153
Détails du profil
Informations forums :
Inscription : avril 2004
Messages : 153
Points : 34
Points : 34
ui mais je ne veux pas le faire manuellement,
jvoudrais le faire avec un formulaire.
J'ai le numero de ligne, il me reste a parcourir le fichier pour modifier je pense.
Mais comment je fais çà ?
Ludo75 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/05/2008, 20h08   #4
Rédacteur
 
Avatar de RideKick
 
Homme
Directeur technique
Inscription : septembre 2006
Messages : 5 959
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Directeur technique
Secteur : High Tech - Produits et services télécom et Internet

Informations forums :
Inscription : septembre 2006
Messages : 5 959
Points : 10 889
Points : 10 889
il faut lire le contenu du fichier et le placer dans un tableau , de la tu sais donc dans quel index du tableau tu dois modifier , il te reste plus qu'a faire la modif et réécrire ton tableau dans ton fichier :

LA fonction file() devrait t'aider !
__________________
Pas de questions techniques en MP please

Mon site perso
RideKick est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/05/2008, 00h05   #5
Nouveau Membre du Club
 
Inscription : avril 2004
Messages : 153
Détails du profil
Informations forums :
Inscription : avril 2004
Messages : 153
Points : 34
Points : 34
voila ou j'en suis !
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
	if ( !empty($_GET[supp]) )
	{
		if ( ($_COOKIE['tsukai_statutchatbox'] == "admin") || ($_COOKIE['tsukai_statutchatbox'] == "modo")
				|| $_SESSION['statut']=="admin" || $_SESSION['statut']=="modo")
		{					
 
			$fd = ouverture();//recherche du fichier à ouvrir
			$bloc = file($fd);
 
			$j = 0; $carac = 0;$k=0;
			for ( $i = (count($bloc)-1) ; $i >= 0 ; $i-- )
			{
				$carac =$carac + strlen($bloc[$i]);
				echo $carac;echo "<br />";
				$verif = explode(" | ", $bloc[$i], 2);
				if ( $verif[0] == "1" )//si le msg est validé, on met lal ligne dans un tableau
				{
					//echo "OK";echo "<br />";
					$tab_mess[$j] = $bloc[$i];
 
					//on parcourt maintenant le fichier jusqu'à qu'on trouve la ligne a modifier
						for ( $k = 0 ; $k < count($tab_mess) ; $k++ )
						{
 
							//$contenu = explode(" | ", $tab_mess[$i], 8);
							list($valid,$num_msg,$idmb,$pseudo,$statut,$datemsg,$ip,$message)=explode(" | ", $tab_mess[$k]);
 
							if ( $num_msg == $_GET[supp] )//si le message correspond à celui qu'on veut supprimer
							{			
								//echo "trouvé";echo "<br />";
								$lignetrouve=$tab_mess[$k];//on met la ligne dans une variable et on arrete la boucle
								break;
							}
 
					$j++;
				}
				/*elseif ( $verif[0] == "0" )
					echo "pas OK";echo "<br />";
					$k++;*/
			}
 
 
			}
			//echo $lignetrouve;
			echo $carac;
			if ( $lignetrouve )
			{
				$fdd = fopen($fd, "r+");
				fseek($fdd, -($carac), SEEK_END);
				fwrite($fdd, "0");
				fclose($fdd);
				$chaine_information = $config_info_mess_supp;
			}
 
		}
J'arrive a trouvé la ligne que je veux modifier.
Une ligne correspond a ceci :
Code :
1 | 473 | 8 | £ùdo | admin | 1210348599 | 127.0.0.1 | plop
Je voudrais mettre a la place du 1, un 0.
une fois la ligne trouvé, il faut que j'utilise fseek pour me positionner au bon endroit mais j'arrive pas à bien calculer l'octet. J'ai utilisé une variable mais çà prend pas. Il me modifie toujours la 1ere ligne du fichier et me met un 0.
Qqn pour m'aider svp ??
Ludo75 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 16h08.


 
 
 
 
Partenaires

Hébergement Web