Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2047 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Probleme pour écrire dans un fichier avec la fonction fwrite

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Probleme pour écrire dans un fichier avec la fonction fwrite

n°1520129
lespagnol9​393
Technology addict !
Posté le 26-02-2007 à 14:40:20  profilanswer
 

Bonjour à tous.

Je voudrai lister le contenu d'un repertoire local. Ce repertoire est un dossier (presentation_amc/Pieces/) contenant plein de fichiers *.jpg.
Pour cela, je ne semble pas avoir trop de soucis, ça marche :)
 
Et je voudrai écrire dans un fichier (administration_base/liste_image.txt) le résultat de cette commande. Et là ça coince...  :kaola:  
L'erreur retournée est:

Citation :

Warning: fwrite(): supplied argument is not a valid stream resource in c:\program files\easyphp1-8\www\site\accueil_general\presentation_amc\administration_base\add.php on line 136


 
Voici la portion de mon code PHP:

Citation :


124  $file_image = "liste_image.txt" ;
125  $fichier = fopen($file_image,"a" ) ;
126  $fichier_a_modif = "liste_image.txt" ;
127  $data = $file_image.'<br>test<br>' ;
128  
129  if ($handle = opendir("../Pieces/" ))
130  {
131          while (false !== ($file_image = readdir($handle)))
132   {
133           if ($file_image != "." && $file_image != ".." )
134    {
135     echo $file_image." / " ;
136     fwrite( $file_image, $data );
137  }
138   }
139  }
140  fclose($fichier);


 
Si quelqu'un pouvais m'apporter un peu de ces connaissances, je lui en serait reconnaissant  :hello:
 
Merci !


Message édité par lespagnol9393 le 26-02-2007 à 14:49:43

---------------
Mon FeedBack
mood
Publicité
Posté le 26-02-2007 à 14:40:20  profilanswer
 

n°1520268
sielfried
Posté le 26-02-2007 à 16:31:04  profilanswer
 

fwrite prend un identifiant de ressource (le truc retourné par fopen), pas un nom de fichier. :spamafote:


---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
n°1520389
lespagnol9​393
Technology addict !
Posté le 26-02-2007 à 18:03:22  profilanswer
 

fwrite( $fichier , $data );  ?
 
:)


---------------
Mon FeedBack
n°1520404
anapajari
s/travail/glanding on hfr/gs;
Posté le 26-02-2007 à 18:18:39  profilanswer
 

mais lis la doc s'tout expliqué [:w3c compliant]
http://fr.php.net/fwrite:

Code :
  1. $filename = 'test.txt';
  2. $somecontent = "Ajout de chaîne dans le fichier \n";
  3. // Assurons nous que le fichier est accessible en écriture
  4. if (is_writable($filename)) {
  5.    // Dans notre exemple, nous ouvrons le fichier $filename en mode d'ajout
  6.    // Le pointeur de fichier est placé à la fin du fichier
  7.    // c'est là que $somecontent sera placé
  8.    if (!$handle = fopen($filename, 'a')) {
  9.          echo "Impossible d'ouvrir le fichier ($filename)";
  10.          exit;
  11.    }
  12.    // Ecrivons quelque chose dans notre fichier.
  13.    if (fwrite($handle, $somecontent) === FALSE) {
  14.        echo "Impossible d'écrire dans le fichier ($filename)";
  15.        exit;
  16.    }
  17.  
  18.    echo "L'écriture de ($somecontent) dans le fichier ($filename) a réussi";
  19.  
  20.    fclose($handle);
  21.                  
  22. } else {
  23.    echo "Le fichier $filename n'est pas accessible en écriture.";
  24. }


n°1520409
lespagnol9​393
Technology addict !
Posté le 26-02-2007 à 18:20:32  profilanswer
 

En effet, merci de ton aide anapajari :)
Finalement c'était bien de la forme  fwrite( $fichier , $data );
 
;)


---------------
Mon FeedBack
n°1520684
lespagnol9​393
Technology addict !
Posté le 27-02-2007 à 09:28:01  profilanswer
 

Et avant de finir ce post, j'aurai une toute petite question.
 
J'aurai voulu savoir comment faire pour vérifier si un fichier image porte bien une extension correcte, ou porte bien une extention tout court :)
 
Par exemple si
$nom_image == imagetest => Erreur/Sortir
$nom_image == imagetest.blabla => Erreur//Sortir
$nom_image == imagetest.jpg => OK/Continuer
 
Pour la syntaxe, j'ai pensé a des choses comme

Citation :

if( $nom_image !== %"."% )

mais evidément ça serai trop beau si ça pouvais marcher :D
 
(je ne sais pas si j'ai été bien clair :) )


Message édité par lespagnol9393 le 27-02-2007 à 09:28:38

---------------
Mon FeedBack
n°1520692
anapajari
s/travail/glanding on hfr/gs;
Posté le 27-02-2007 à 09:39:39  profilanswer
 

tu splittes sur le caractère point et tu prends le dernier element du tableau, hop ça te donne l'extension.
 
 

n°1520698
nORKy
Grmmph...
Posté le 27-02-2007 à 09:43:39  profilanswer
 

tu peux utiliser pathinfo, ou bien des fonction sur les chaines.
Par exemple avec strrchr et substr, tu peux y arrivé.
Cherche un peu

n°1520716
sielfried
Posté le 27-02-2007 à 10:00:22  profilanswer
 

(Ne pas se fier qu'à l'extension pour juger du type d'un fichier, ceci dit...)


---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
n°1520718
anapajari
s/travail/glanding on hfr/gs;
Posté le 27-02-2007 à 10:03:20  profilanswer
 

sielfried a écrit :

(Ne pas se fier qu'à l'extension pour juger du type d'un fichier, ceci dit...)


( pas dit le contraire ... :o )

mood
Publicité
Posté le 27-02-2007 à 10:03:20  profilanswer
 

n°1520731
sielfried
Posté le 27-02-2007 à 10:12:17  profilanswer
 

anapajari a écrit :

( pas dit le contraire ... :o )


 
(pas dit que t'avais dit le contraire... :o :o)
 
:)


---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
n°1520741
lespagnol9​393
Technology addict !
Posté le 27-02-2007 à 10:19:54  profilanswer
 

anapajari a écrit :

tu splittes sur le caractère point et tu prends le dernier element du tableau, hop ça te donne l'extension.


 
Merci a anapajari pour ton aide, mais pourrais-tu un tout petit peu développer ?
Je suis encore bien trop novice en PHP.
 
Merci aussi aux autres pour leur aide.

Message cité 1 fois
Message édité par lespagnol9393 le 27-02-2007 à 10:20:56

---------------
Mon FeedBack
n°1520751
anapajari
s/travail/glanding on hfr/gs;
Posté le 27-02-2007 à 10:38:46  profilanswer
 

lespagnol9393 a écrit :

Merci a anapajari pour ton aide, mais pourrais-tu un tout petit peu développer ?


Que voudrais tu que je developpe? Je t'ai filé le lien vers la page de la doc où il y a un exemple, je t'ai dit comment l'utiliser... Je vois pas trop ce que je peux faire de plus!  
Te donner le code tout fait?

lespagnol9393 a écrit :

Je suis encore bien trop novice en PHP.


j'aurais pas dit novice ...

n°1520767
sielfried
Posté le 27-02-2007 à 10:55:21  profilanswer
 

Au fait, si y a pas besoin d'expressions régulières comme ici, utiliser plutôt explode qui est plus rapide.
 
Les exemples sont encore plus simples d'ailleurs :
http://fr.php.net/manual/fr/function.explode.php
 
Si avec ça tu piges pas... :spamafote:


---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
n°1520771
lespagnol9​393
Technology addict !
Posté le 27-02-2007 à 10:57:23  profilanswer
 

Merci vous deux pour votre patience.
Je vais jeter un coup d'oeil sur ce pti lien.


---------------
Mon FeedBack
n°1520919
lespagnol9​393
Technology addict !
Posté le 27-02-2007 à 13:06:23  profilanswer
 

Impeccable, tout marche impecc....
 
Merci bien a vous et bonne continuation sur le forum ;)


---------------
Mon FeedBack
n°1520990
lespagnol9​393
Technology addict !
Posté le 27-02-2007 à 14:39:11  profilanswer
 

Si je peux aussi me permettre de vous solliciter encore une fois, je me trouve devant un autre probleme.
 
J'aimerai pouvoir ajouter du code html dans une page, mais à une ligne bien précise.
 
J'ai chercher un peu partout et j'ai trouvé ça, mais là encore, je n'arrive pas a m'en sortir...

Citation :

# Accès direct
On peut placer le pointeur directement à une position précise dans le fichier
 
    * rewint( $f ); pour se placer en début de fichier
    * fseek( $f , $offset); déplace le pointeur interne du fichier de $offset (Attention, cette fonction retourne 0 en cas de succès, et sinon -1)
    * ftell( $f ); renvoie la position actuelle du pointeur


 
Merci de votre aide une fois de plus :)


---------------
Mon FeedBack
n°1521219
sielfried
Posté le 27-02-2007 à 18:28:58  profilanswer
 

Ta "ligne bien précise", c'est genre "la ligne 28" ou plutôt "la ligne qui contient 'truc'" ?


---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
n°1521230
anapajari
s/travail/glanding on hfr/gs;
Posté le 27-02-2007 à 18:46:06  profilanswer
 

Au plus simple, tu vides ton fichier et tu le remplis avec son nouveau contenu!

Message cité 1 fois
Message édité par anapajari le 27-02-2007 à 18:46:17
n°1521250
lespagnol9​393
Technology addict !
Posté le 27-02-2007 à 20:06:00  profilanswer
 

sielfried a écrit :

Ta "ligne bien précise", c'est genre "la ligne 28" ou plutôt "la ligne qui contient 'truc'" ?


C'est plutot la ligne numéro 28. C'est un numéro de ligne que je recherche.
Ou pour etre encoreplus précis, 5 lignes avant la fin de fichier.


---------------
Mon FeedBack
n°1521251
lespagnol9​393
Technology addict !
Posté le 27-02-2007 à 20:07:42  profilanswer
 

anapajari a écrit :

Au plus simple, tu vides ton fichier et tu le remplis avec son nouveau contenu!


C'est plutot délicat, car je ne sais pas comment je pourrai me débrouiller pour recopier l'ancien code, inserer le nouveau code qques lignes avant la fin de fichier, et recopier la fin de l'ancien code.
 
ça me parait plus compliké que la solution d'inserer directement le code dans la page initiale, non ?


---------------
Mon FeedBack
n°1521362
lespagnol9​393
Technology addict !
Posté le 28-02-2007 à 08:06:17  profilanswer
 

Pour etre plus clair, le nouveau code doit s'integrer dans une <table></table> deja existante dans la page html.
 
Or si ce code s'insere à la fin du fichier, il ne sera pas compris dans la table, étant donné que la balise de fin </table> aura déja été fermée.
 
J'ai été clair ? :D


---------------
Mon FeedBack
n°1521376
anapajari
s/travail/glanding on hfr/gs;
Posté le 28-02-2007 à 09:09:05  profilanswer
 

non tu récupères tout ton fichier danbs une string, tu utilises les fonctions sur les chaines pour trouver l'endroit, tu rajoutes du texte et tu sauves tout ça en ré-écrivant ton fichier [:spamafote]

n°1521390
lespagnol9​393
Technology addict !
Posté le 28-02-2007 à 09:30:12  profilanswer
 

Merci pour ta réponse. Je pense creuser de ce coté là alors :)
 
Par contre tu me conseilles d'utiliser les chaines, mais je dois récuperer un numéro de ligne, et non pas une suite de caracteres, pour inserer mon code au bon endroit.


Message édité par lespagnol9393 le 28-02-2007 à 09:31:28

---------------
Mon FeedBack
n°1521393
sielfried
Posté le 28-02-2007 à 09:34:41  profilanswer
 

Code :
  1. $file_name = 'mon_fichier.txt';
  2. $lines = file($file_name);
  3. // ... Traitement de $lines[28] ...
  4. file_put_contents($file_name, $lines);


Message édité par sielfried le 28-02-2007 à 09:35:01

---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
n°1521395
lespagnol9​393
Technology addict !
Posté le 28-02-2007 à 09:36:45  profilanswer
 

Whaaa... C'est gentil ça :)
 
Et si maintenant je souhaite inserer mon code, non pas à la ligne 28 (par exemple), mais à 5 lignes de la fin du fichier (encore par exemple) ?
 
Aurais-tu une idée ? ;)


---------------
Mon FeedBack
n°1521400
sielfried
Posté le 28-02-2007 à 09:47:41  profilanswer
 

Si tu sais comment calculer la taille de tableau, tu sais répondre à ça... et j'espère bien que tu sais. :spamafote:


---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
n°1521401
anapajari
s/travail/glanding on hfr/gs;
Posté le 28-02-2007 à 09:50:05  profilanswer
 

plutot que de te baser sur les numeros de lignes, je te conseillerais de t'inspirer des systeme de template en mettant dans ta page html une "balise" te permettant de rapidement identifier l'endroit ou ajouter le texte.
Et si tu as peur que cela apparaisse , suffit de le mettre en commentaire html, quelque chose comme:

Code :
  1. <!--JE_VEUX_MON_TABLEAU_LA-->


ensuite tu n'as plus qu'a faire un str_replace

n°1521405
sielfried
Posté le 28-02-2007 à 09:55:05  profilanswer
 

Ah ben ouais, si tu peux faire ça c'est mieux.


---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
n°1521406
lespagnol9​393
Technology addict !
Posté le 28-02-2007 à 09:58:48  profilanswer
 

Quand tu parles de "balise", tu veux dire "ancre" ?
 
Edit: Haaaa je crois avoir compris ton idée !
La page html qui va recevoir la portion de code est en fait une liste de pièces de magasin.
Donc un autre probleme va se poser :
 
Si je modifie la balise comme tu le dis, ça marchera pour la première pièce ajoutée a la page, mais non pas pour les suivantes, tu comprends ?
C'est pour ça que dans le meilleur des cas, il aurait été génial de rajouter le code, soit par exemple à 5 lignes de la fin du fichier, histoire de se placer avant la balise </table>, ou soit directement une ligne avant </table>


Message édité par lespagnol9393 le 28-02-2007 à 10:16:49

---------------
Mon FeedBack
mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Probleme pour écrire dans un fichier avec la fonction fwrite

 

Sujets relatifs
archiver des fichier .jar sous unixfonction de recherche sur page web
Problème Fenetre modaleProblème avec sous dossier...
ouvrir un fichier son avec javascriptHELP! Parser un fichier de conf et renvoyer vers struct
probleme de z-index ???probleme d'affichage avec internet explorer
Problème de code VBASynchro table sql server et fichier xls
Plus de sujets relatifs à : Probleme pour écrire dans un fichier avec la fonction fwrite


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR