SELFHTML

Forum SELFHTML: Archives:
fwrite() (contenu de $fichier1 dans $fichiers2)

Page d'information: vue d'ensemble
vers le bas 

(PHP) fwrite() (contenu de $fichier1 dans $fichiers2)

Le message suivant est de: Christophe, Adresse électronique christophe.brass@free.fr, 19. 08. 2005, 13:31

Aprés avoir lu et relu le code suivant je ne trouve toujours pas l'erreur et le message (Parse error: parse error, unexpected ',') ne m'aide en rien car je ne vois pas en quoi une "," incriminée dans la ligne

($nom,$prenom) = split(",",$tab_clients[$i]);

 serait fautive...

<?php

$fichier1 = fopen("clients.cache", "r");
$fichier2 = fopen("clients2.cache", "w+");
$clients = fread($fichier1, filesize ("clients.cache"));

$tab_clients = split("\n",$clients);
while ($tab_clients[$i])
{
// c'est juste pour faire un peu de manip
($nom,$prenom) = split(",",$tab_clients[$i]);
fwrite($fichier2, "$prenom:$nom");
$i++;
}
fclose($fichier2);
fclose($fichier1);
unlink("clients2.cache")
?>


Christophe


 
vers le hautvers le bas 

(PHP) fwrite() (contenu de $fichier1 dans $fichiers2)

Le message suivant est de: Celelibi, Adresse électronique _monpseudosanslamajuscule_@gmail.com, 19. 08. 2005, 21:30

Bonjour

»» Aprés avoir lu et relu le code suivant je ne trouve toujours pas l'erreur et le message (Parse error: parse error, unexpected ',') ne m'aide en rien car je ne vois pas en quoi une "," incriminée dans la ligne
»»
»» ($nom,$prenom) = split(",",$tab_clients[$i]);
»»
»» serait fautive...
»»
»» <?php
»»
»» $fichier1 = fopen("clients.cache", "r");
»» $fichier2 = fopen("clients2.cache", "w+");
»» $clients = fread($fichier1, filesize ("clients.cache"));
»»
»» $tab_clients = split("\n",$clients);
»» while ($tab_clients[$i])
»» {
»» // c'est juste pour faire un peu de manip
»» ($nom,$prenom) = split(",",$tab_clients[$i]);
»» fwrite($fichier2, "$prenom:$nom");
»» $i++;
»» }
»» fclose($fichier2);
»» fclose($fichier1);
»» unlink("clients2.cache")
»» ?>


Ton code (en particulier la ligne incriminé) ressemble fort à un mélange entre perl et php.

En perl on peut faire quequel chose du genre :
@tablo = ("foo", "bar");
($nom, $prenom) = @tablo;

En php il faut passer par la fonction list() :
$tablo = array("foo", "bar");
list($nom, $prenom) = $tablo;

Donc dans ton cas la ligne devient :
list($nom,$prenom) = split(",",$tab_clients[$i]);


Voilà tout. :)


Celelibi
--
  -----BEGIN GEEK CODE BLOCK-----
  Version: 3.12
  GS/M>O d-@>-- s: a--->? C++(+++)>$ UL++>++++$
  P++(+)>++++$  L+++(++)>+++++$  E-?>++@ W+++>$
  N?>++@  o?>+++++$  K->++++@$ !w>$ O? M- V? PS
  PE  Y+(++)>+++@  PGP+@>+++ t?>+@ 5? X+()R->+@
  !tv>$  b(-)  DI?  !D>----@$  G>+++@  e+>+++++
  h!>*$ r-- y>$
  ------END GEEK CODE BLOCK------


 
vers le hautvers le bas 

(PHP) fwrite() (contenu de $fichier1 dans $fichiers2)

Le message suivant est de: Christophe, Adresse électronique christophe.brass@free.fr, 24. 08. 2005, 09:23

»» Donc dans ton cas la ligne devient :
»» list($nom,$prenom) = split(",",$tab_clients[$i]);
»»
effectivment, j´avais oublie list! Merci. Maintenant, il n´y a plus de message d´erreur, le fichier clients2.cache est cree (apres avoir suppmime unlink("client2.cache")

MAIS

rien ne s´ecrit dans ce nouveau fichier cree! (le fichier source est tout a fait regulierement compose de

nom1,prenom1
nom2,prenom2
etc...

Christophe

(NB je n´ai pas acces aux accents francais depuis ce foutu public pc en allemagne)


 
vers le hautvers le bas 

(PHP) fwrite() (contenu de $fichier1 dans $fichiers2)

Le message suivant est de: Celelibi, Adresse électronique _monpseudosanslamajuscule_@gmail.com, 24. 08. 2005, 22:46

»» Merci. Maintenant, il n´y a plus de message d´erreur, le fichier clients2.cache est cree (apres avoir suppmime unlink("client2.cache")

Pour moi ton code à plutôt l'aire de créer un fichier client2.cache puis de l'effacer à la fin.


»» rien ne s´ecrit dans ce nouveau fichier cree! (le fichier source est tout a fait regulierement compose de
Personnellement je te conseillerais de déclarer $i=0; avant ta boucle while.

Puis au niveau optimisation, je te conseillerais d'utiliser file_get_contents qui te retourne directement le contenu entier du fichier sans avoir besoin de faire appel à fread. Ou encore d'utiliser la fonction file qui va te renvoyer directement un tableau.
Et puis dernière chose, n'oublie pas de mettre un retour à la ligne à chaque fois que tu écris dans le fichier, sinon tu risque d'avoir tout ton fichier en une seul ligne.


»» (NB je n´ai pas acces aux accents francais depuis ce foutu public pc en allemagne)

Le manque d'accents n'est pas trop nuisible à la compréhension, mais ce en quoi sont transformés tes appostrophes est déjà plus gênant. :)


Celelibi
--
  -----BEGIN GEEK CODE BLOCK-----
  Version: 3.12
  GS/M>O d-@>-- s: a--->? C++(+++)>$ UL++>++++$
  P++(+)>++++$  L+++(++)>+++++$  E-?>++@ W+++>$
  N?>++@  o?>+++++$  K->++++@$ !w>$ O? M- V? PS
  PE  Y+(++)>+++@  PGP+@>+++ t?>+@ 5? X+()R->+@
  !tv>$  b(-)  DI?  !D>----@$  G>+++@  e+>+++++
  h!>*$ r-- y>$
  ------END GEEK CODE BLOCK------


 
vers le hautvers le bas 

(PHP) fwrite() (contenu de $fichier1 dans $fichiers2)

Le message suivant est de: Christophe, 25. 08. 2005, 09:18

»» Pour moi ton code à plutôt l'aire de créer un fichier client2.cache puis de l'effacer à la fin.
»»

C est le fichier source que je voulais supprimer a la fin du script et non le fichier cible!

»» »» rien ne s´ecrit dans ce nouveau fichier cree! »» Personnellement je te conseillerais de déclarer $i=0; avant ta boucle while.

C est un gros oubli de debutant!Avec cette initialisation, le script fonctionne. (faut il decourager les debutants en se foutant de leur gueule pour qu il y ait encore moins de circulation dans le forum?)

»» Puis au niveau optimisation, je te conseillerais d'utiliser file_get_contents qui te retourne directement le contenu entier du fichier sans avoir besoin de faire appel à fread. Ou encore d'utiliser la fonction file qui va te renvoyer directement un tableau.

Je vais etudier ces deux fonctions.Merci

christophe

»» Et puis dernière chose, n'oublie pas de mettre un retour à la ligne à chaque fois que tu écris dans le fichier, sinon tu risque d'avoir tout ton fichier en une seul ligne.
»»


 
vers le hautvers le bas 

(PHP) fwrite() (contenu de $fichier1 dans $fichiers2)

Le message suivant est de: Celelibi, Adresse électronique _monpseudosanslamajuscule_@gmail.com, 26. 08. 2005, 01:23

»» (faut il decourager les debutants en se foutant de leur gueule pour qu il y ait encore moins de circulation dans le forum?)
Ce n'était pas du tout mon intention. Je suis désolé si tu l'a interprété comme ça.

Celelibi
--
  -----BEGIN GEEK CODE BLOCK-----
  Version: 3.12
  GS/M>O d-@>-- s: a--->? C++(+++)>$ UL++>++++$
  P++(+)>++++$  L+++(++)>+++++$  E-?>++@ W+++>$
  N?>++@  o?>+++++$  K->++++@$ !w>$ O? M- V? PS
  PE  Y+(++)>+++@  PGP+@>+++ t?>+@ 5? X+()R->+@
  !tv>$  b(-)  DI?  !D>----@$  G>+++@  e+>+++++
  h!>*$ r-- y>$
  ------END GEEK CODE BLOCK------


 
vers le hautvers le bas 

(PHP) fwrite() (contenu de $fichier1 dans $fichiers2)

Le message suivant est de: Christophe, 26. 08. 2005, 17:24

Voila, j'ai suivi ton conseil et j'ai essayé de remplacer la fonction fread par file :

<?php

$fichier2 = fopen("clients2.cache", "w+");
$fichier1 = "clients1.cache";
$array = file($fichier1);
$i = 0;

while (array[$i])
  {
  list($nom,$prenom) = split(",",$array[ï]);
  fwrite($fichier2,"$prenom:$nom\n");
  $i++;
  }
fclose($fichier2);

?>

(le fichier1 contient :
nom1,prenom1
nom2,prenom2
etc...)

Le resultat est - à mon niveau de compréhension - inatendu... le fichier "clients2.cache" inverse certes les nom et prenoms, rajoute bien les deux points mais crée un retour à la ligne après le prenom :

prenom1
:nom1
prenom2
:nom2

Je suis curieux de comprendre cette logique...et te serais reconnaissant pour des commentaires
CHristophe


 
vers le haut

© 1998-2004 Adresse électronique selfhtml@fr.selfhtml.org