Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD
PHP & SGBD Forum d'entraide sur les SGBD avec PHP. Avant de poster : FAQ BDD, toutes les FAQ PHP, cours BDD et sources BDD
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 21/06/2007, 15h23   #1
Candidat au titre de Membre du Club
 
Inscription : mai 2007
Messages : 35
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 35
Points : 10
Points : 10
Par défaut [SQL] problème d'écriture fichier texte

bonjour,

j'ai un fichier texte que je converti en sql, pour cela je voudrais placer un morceau de code sql au début de mon fichier texte.

l'option r+ de fopen devrai me permettre d'écrire au début de ce fichier seulement j'ai une parti de mon fichier qui disparait (en gros au lieu d'insérer du texte j'écrase le début de mon fichier:

avant:

Citation:
Grigoriadis, N.', 'Kimena neoellinikis logotechnias [Texte imprim�] : 3'' Gymnasiou / N. Grigoriadis, D. Karvelis, Ch. Milionis,...[et al.] ; Minist�re hell�nique de l''Education nationale, Institut p�dagogique');
après:

Citation:
Insert into ouvrage (auteur, titre) values('linikis logotechnias [Texte imprim�] : 3'' Gymnasiou / N. Grigoriadis, D. Karvelis, Ch. Milionis,...[et al.] ; Minist�re hell�nique de l''Education nationale, Institut p�dagogique');
voila je laisse mon code au cas ou:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
$f = 'essai.txt';
$text = "Insert into ouvrage (auteur, titre) values('";
$handle = fopen("$f","r+");
 
// regarde si le fichier est accessible en écriture
if (is_writable($f)) {
// Ecriture
    if (fwrite($handle, $text) == FALSE) {
      echo 'Impossible d\'écrire dans le fichier '.$f.'';
      exit;
    }
 
    fclose($handle);
 
}
else {
      echo 'Impossible d\'écrire dans le fichier '.$f.'';
    }
j'espère que vous pourrez m'aider.

merci d'avance
liberty74 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/06/2007, 15h38   #2
Membre Expert
 
Inscription : janvier 2005
Messages : 2 288
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 2 288
Points : 2 287
Points : 2 287
Bonjour

tu ne peux pas "insérer" du texte au début d'un fichier de cette manière, là tu as justement le comportement normal qui est que tu écrases ce qui existe deja.
Pour insérer une partie de texte au début d'un fichier il faut d'abord tout lire dans le script, ajouter le contenu voulu au début (dans le script) et ensuite tout réécrire dans le bon ordre.
koopajah est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/06/2007, 15h40   #3
Membre émérite
 
Avatar de ozzmax
 
Inscription : novembre 2005
Messages : 986
Détails du profil
Informations personnelles :
Âge : 29

Informations forums :
Inscription : novembre 2005
Messages : 986
Points : 863
Points : 863
Envoyer un message via MSN à ozzmax
Bonjour
je crois en fait que c'est normale puisque "r+" ouvre le fichier en lecture et écriture et place le pointeur au début du fichier, or il écrase donc n'est pas capable d'insérer du texte a cette endroit

Ce que tu pourrait faire a mon avis, c'est de lire le fichier, récupérer son contenu et ensuite concatener ta string et réécrire le nouveau fichier
__________________
La perfection n'est pas un but, l'amélioration constante devrait l'être!
La position des Développeurs de developpez avec les explications
ozzmax est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/06/2007, 15h44   #4
Candidat au titre de Membre du Club
 
Inscription : mai 2007
Messages : 35
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 35
Points : 10
Points : 10
merci de ces réponses, pour récupérer le contenu du fichier, je fais quelque chose comme '$contents = file_get_contents($f);' ?

mais comment faire pour rajouter ma chaîne en début?
liberty74 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/06/2007, 15h48   #5
Candidat au titre de Membre du Club
 
Inscription : mai 2007
Messages : 35
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 35
Points : 10
Points : 10
ok j'ai compris par moi même:

$contents = "chaine".file_get_contents($f);'

merci beaucoup
liberty74 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/06/2007, 15h50   #6
Membre émérite
 
Avatar de ozzmax
 
Inscription : novembre 2005
Messages : 986
Détails du profil
Informations personnelles :
Âge : 29

Informations forums :
Inscription : novembre 2005
Messages : 986
Points : 863
Points : 863
Envoyer un message via MSN à ozzmax
Citation:
Envoyé par fr.php.net
string fread ( resource handle, int length )

fread() lit jusqu'à length octets dans le fichier référencé par handle. La lecture s'arrête lorsque length octets ont été lus, ou que l'on a atteint la fin du fichier, ou lorsqu'un paquet devient disponible ou (après avoir ouvert les flux utilisateurs) lorsque 8192 octets ont été lus, le premier des trois survenant.

Retourne la chaîne lue ou FALSE si une erreur survient.
fread

Et tu as ton bout de code que tu place avant
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
 
<?php
// Lit un fichier, et le place dans une chaîne
$filename = "/usr/local/something.txt";
$handle = fopen ($filename, "r");
$contents = fread ($handle, filesize ($filename));
fclose ($handle);
 
 
$text = "Insert into ouvrage (auteur, titre) values('";
$text.=$contents;
 
...
__________________
La perfection n'est pas un but, l'amélioration constante devrait l'être!
La position des Développeurs de developpez avec les explications
ozzmax est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 03h15.


 
 
 
 
Partenaires

Hébergement Web