[PHP] Erreur incompréhensible d'accès fichier

Erreur incompréhensible d'accès fichier [PHP] - PHP - Programmation

Marsh Posté le 11-02-2003 à 01:01:42    

Code :
  1. if (!($fp = fopen("query.log", "a+" ))) {
  2.          print("Impossible d'ouvrir le fichier." );
  3.         }
  4. else
  5. {
  6.  rewind($fp);
  7.          $buffer = fgets($fp, 100);
  8.          $pour = (int)$buffer;
  9.          $buffer = fgets($fp, 100);
  10.          $contre = (int)$buffer;
  11.          if ($query == "pour" ) {
  12.             $pour++;
  13.          }
  14.          if ($query == "contre" ) {
  15.             $contre++;
  16.          }
  17.          rewind($fp);
  18.          fputs($fp, $pour. "\n", 100);
  19.          fputs($fp, $contre . "\n", 100);
  20.          fclose($fp);
  21.          print("Pour : " . $pour . " Contre : " . $contre);
  22.       }


 
Pourquoi mes valeurs sont lues correctement mais ECRITES en fin de fichiers ? (malgré le rewind). Il me faut le "a" pour m'assurer de la création du fichier.

Reply

Marsh Posté le 11-02-2003 à 01:01:42   

Reply

Marsh Posté le 11-02-2003 à 01:09:28    

Nan, c'est 'w' ou 'w+' si tu veux pouvoir aussi lire dans ton fichier.
 
RTFM !


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
Reply

Marsh Posté le 11-02-2003 à 01:11:08    

-- grilled --
 
http://www.php.net/manual/en/function.rewind.php

Citation :

Note: If you have opened the file in append ("a" ) mode, any data you write to the file will always be appended, regardless of the file position.


 
si tu ouvres ton fichiers en 'w', il sera aussi créé s'il n'existe pas, mais le rewind fctera (mais ne sera pas nécessaire je suppose)
sinon regarde fseek(), ils ne disent pas sur php.net qu'il a le même comportement.


Message édité par ethernal le 11-02-2003 à 01:11:34
Reply

Marsh Posté le 11-02-2003 à 01:13:22    

merci j'avais pas lu la note sur rewind et "a"...  
 
merci à tous

Reply

Marsh Posté le 11-02-2003 à 01:18:06    

ok mais pour info avec "w+" mes $buffers ne recoivent rien ...

Reply

Marsh Posté le 11-02-2003 à 01:20:27    

'w' Ecrase le fichier s'il existe, et le cré sinon !
 
Si tu veux lire et ecrire, mais pas forcément à la fin, alors c'est 'r+'
 
RTFM again :
 
'r' - Ouvre en lecture seule, et place le pointeur de fichier au début du fichier.  
 
'r+' - Ouvre en lecture et écriture, et place le pointeur de fichier au début du fichier.  
 
'w' - Ouvre en écriture seule; place le pointeur de fichier au début du fichier et réduit la taille du fichier à 0. Si le fichier n'existe pas, on tente de le créer.  
 
'w+' - Ouvre en lecture et écriture; place le pointeur de fichier au début du fichier et réduit la taille du fichier à 0. Si le fichier n'existe pas, on tente de le créer.  
 
'a' - Ouvre en écriture seule; place le pointeur de fichier à la fin du fichier file. Si le fichier n'existe pas, on tente de le créer.  
 
'a+' - Ouvre en lecture et écriture; place le pointeur de fichier à la fin du fichier. Si le fichier n'existe pas, on tente de le créer.  
 
http://www.php.net/manual/fr/function.fopen.php


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
Reply

Marsh Posté le 11-02-2003 à 01:23:11    

je le savais je suis trop con....
 
Comment faire pour ouvrir un fichier sans que l'écriture soit faite en append (comme le fait "a" ) mais que le fichier soit crée si pas présent ? (je crois pas que "R+" le fasse)

Reply

Marsh Posté le 11-02-2003 à 01:28:17    

Ben t'essaye en 'r+', et si çà foire, tu recommence en 'w+' !
 

Code :
  1. if ( ! ( $fp = fopen( "query.log", "r+" ) ) )
  2. {
  3.      if ( ! ( $fp = fopen( "query.log", "w+" ) ) )
  4.      {
  5.         print("Impossible d'ouvrir le fichier." );
  6.      }
  7. else 
  8. ...



---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
Reply

Marsh Posté le 11-02-2003 à 01:30:18    

Désolé de te dire çà, mais j'ai tout comme l'impression que t'es plus en état de programmer là !
 
Vas dormir un peu, sinon, t'auras des tonnes de bugs à corriger demain.
 
 :sleep:


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
Reply

Marsh Posté le 11-02-2003 à 08:44:34    

lol c'est ce que j'ai fait !

Reply

Marsh Posté le 11-02-2003 à 08:44:34   

Reply

Marsh Posté le 11-02-2003 à 10:09:35    

:hello:


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed