Rechercher : dans
Par :

Ouvrir , lire un fichier, stocker ses données

Dernière réponse le 19 oct 2007 à 16:37:20 Ablawa, le 9 oct 2007 à 21:46:59 
 Signaler ce message aux modérateurs

Bonjour à tous,


je suis une débutante en php et oracle. j'ai un fichier "toto.prt" qui est un tableau composé de plusieurs lignes et 5 colonnes. j'aimerais écrire un code qui puisse :
A- ouvrir et lire le fichier ligne par ligne;
B - en constituer un tableau (mais c'est seulement 3 colonnes qui m'intéressent) puis le stocker dans un fichier "toto_modife.prt";
C- scinder ce nouveau tableau en deux autres et les stocker dans les fichiers "toto_min1.prt" et "toto_min2.prt";

Voici ce que j'ai faire: mon code actuel ouvre le fichier, lit ligne par ligne et enregistre tout le contenu dans un fichier " titi.prt" qui n'est rien d'autre que la somme de "toto_min1.prt" et "toto_min2.prt".

<?
$fp = fopen("toto.prt", "r"); //lecture
if (!$fp = fopen("toto.prt", "r")) {
echo "Echec de l'ouverture du fichier";
exit;
} else {
$newfile = "titi.prt";
$fp_modifie = fopen($newfile,"w+"); //w+ pour lecture et ecriture, puis crée le fichier s'il n'existait pas.
while(!feof($fp)) // Tant que l'on n'est pas à la fin du fichier on continue de lire le fichier.
{
$contenu=fgets($fp,255);
//On stocke l'ensemble des lignes dans un nouveau fichier nommé : titi.prt
fputs($fp_modifie,$contenu);
}
}
fclose($fp); //On ferme le fichier

?>


Merci de donner un coups de pouce.

Configuration: Windows Vista
Firefox 2.0.0.7

Meilleures réponses pour « ouvrir , lire un fichier, stocker ses données » dans :
Comment ouvrir un fichier PPS (présentation PowerPoint) ? VoirComment lire un fichier PPS ? Les fichiers PPS sont des diaporamas crées avec le logiciel PowerPoint. Il s'agit simplement de fichiers PPT dont l'extension du nom de fichier a été modifiée en PPS. Il est possible de les ouvrir avec un des logiciels...
Ouverture d'un fichier VoirOuverture d'un fichier existant crée avec le même logiciel Il existe fondamentalement deux méthodes pour ouvrir un fichier sous Windows : Choisissez dans le menu du logiciel concerné Fichier > Ouvrir et naviguez jusqu’au fichier concerné dans la...

1

alain42, le 10 oct 2007 à 01:22:47

Salut,

Utilises plutot la fonction file() , tu n'auras pas besion des f_open etc>> et qui te met le fichier directement dans un array ligne par ligne

$array_fich=file("toto.prt");

Ensuite je suppose que tes colonnes sont separees par un caractere particulier "-" par exemple

alors il va falloir que tu expode chaque ligne par rapport a ce caractere

foreach($array_fich as $cle =>$value){
$array_ligne=explode("-",$value);
ensuite tu ne prend que les trois premiers de cet array (vas voir les fonctions array_...... sur Google)
et tu Implode ces trois avec ton separateur "-"
et tu les empile dans un array modifie
}

et ensuite tu ecris ce nouvel array modifie dans ton fichier toto-mod

Répondre à alain42

2

Ablawa, le 10 oct 2007 à 12:23:19

Merci Alain42.
Mes colonnes sont séparées par "3".
J'avoue que c'est un peu fort pour moi mais je vais m'y mettre (c-à-d apprendre à utiliser "explode", "foreach" et "array").

A bientôt.

Répondre à Ablawa

3

alain42, le 10 oct 2007 à 15:38:47

Salut,

je vais t'en donner un peu plus

$nouv_array_fich=array();
foreach($array_fich as $cle =>$value){
$array_ligne=explode("3",$value);
$nouvelle_ligne=$array_ligne[0]."3".$array_ligne[1]."3".$array_ligne[2];  // on refait la ligne avec les 3 premieres col et le separateur
$nouv_array_fich[]=$nouvelle_ligne; // on empile les lignes dans le nouvel array
} 


et apres tu ecris ce nouvel array dans ton fichier modifie

Répondre à alain42

4

Ablawa, le 11 oct 2007 à 13:36:54

Merci Alain42 pour tout ce que tu as déjà fait pour moi.
Avec ton aide, voici ce que j'ai constitué (qui ne marche pas encore très bien car il écrit "array" dans mon nouveau fichier).

<?
$array_fich=file("toto.prt");

$nouv_array_fich=array();
foreach($array_fich as $value){
$array_ligne=explode("³",$value);
$nouvelle_ligne=$array_ligne[0]."³".$array_ligne[1]."³".$array_ligne[2]; // on refait la ligne avec les 3 premieres col et le separateur
$nouv_array_fich[]=$nouvelle_ligne; // on empile les lignes dans le nouvel array
}
//et apres on écrit ce nouvel array dans le fichier modifié.
$newfile = fopen("toto_mod.prt","w+");
//fputs($newfile,$nouv_array_fich[$nouvelle_ligne]);
fputs($newfile,$nouv_array_fich);

?>

Je sais que c'est trop te demandé mais je n'ai pas le choix car depuis des heures j'essaie mais en vain. STP Alain42.
Je veux même t'envoyer mon fichier "toto.prt" mais je ne sais comment le joindre.

Merci d'avance.

Répondre à Ablawa

5

alain42, le 11 oct 2007 à 23:11:21

Tu dois faire une boucle pour ecrire ligne par ligne l'array dans ton fichier:

//et apres on écrit ce nouvel array dans le fichier modifié.
$newfile = fopen("toto_mod.prt","w+");

foreach($nouv_array_fich as $ligne){
    fputs($newfile,$ligne);
}

fclose($newfile);



je n'ai pas teste, je suis loin de chez moi (tres loin) Si erreur excuse par le decalage horaire et un clavier qwerty sur un Mac

Répondre à alain42

6

Ablawa, le 12 oct 2007 à 14:43:09

Merci Alain42. ça marche: j'ai sous forme de tableau, les colonnes que je veux avec le séparateur.

MAIS je dois revoir la mise en forme de mon nouveau fichier "toto_mod" car les lignes vides sont représentées par des séparateurs "³".

Mon fichier initial "toto" est ceci:

ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
³ Service LISTE DES EMPLOYERS ³
³ Comptabilit, ³ Imprimée le 12/10/07 ³
³ ³
ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ


ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ

³ NOM ³ PRENOM ³ AGE ³ SALAIRE ³
ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
³ Nom1 ³ Jean1 ³ 34 ³ 500000 ³
³ Nom2 ³ Jean2 ³ 28 ³ 300000 ³
³ Nom3 ³ Jean3 ³ 37 ³ 250000 ³

ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ

Mon fichier final "toto_mod" est ceci:³³³
³³³
³ ³³
³ ³ Imprimée le 12/10/07 ³³
³ ³³
³³³
³³³
³³³
³³³
³³³
³ PRENOM ³ SALAIRE ³
³³³
³ Jean1 ³ 500000 ³
³ Jean2 ³ 300000 ³
³ Jean3 ³ 250000 ³
³³³
³³³
³³³



Voici le code final:

<?
$array_fich=file("toto.prt");

$nouv_array_fich=array();

foreach($array_fich as $value){

$array_ligne=explode("³",$value);

$nouvelle_ligne="³".$array_ligne[2]."³".$array_ligne[4].'³'."\n"; // on refait la ligne avec les collonnes 2 et 4 qui nous intéressent et le separateur '³'.

$nouv_array_fich[]=$nouvelle_ligne; // on empile les lignes dans le nouvel array.

//On fait une boucle pour ecrire ligne par ligne le nouvel array dans le fichier "toto_mod.prt"
$newfile = fopen("toto_mod.prt","w+");

foreach($nouv_array_fich as $nouvelle_ligne){
fputs($newfile,$nouvelle_ligne); //NOTE: LE RESULTAT EST BIEN SOUS FORME DE TABLEAU MAIS RESTE A REVOIR LA MISE EN FORME.
}
}
fclose($newfile);
?>

Répondre à Ablawa

7

alain42, le 13 oct 2007 à 01:40:46

Alors il faut tester et supprimer les lignes vides

<?
$array_fich=file("toto.prt");

$nouv_array_fich=array();

foreach($array_fich as $value){

$array_ligne=explode("³",$value);
if($array_ligne[2]!=""){
// si la colonne 3 n'est pas vide par exemple
$nouvelle_ligne="³".$array_ligne[2]."³".$array_ligne[4].'³'."\n"; // on refait la ligne avec les collonnes 2 et 4 qui nous intéressent et le separateur '³'.

$nouv_array_fich[]=$nouvelle_ligne; // on empile les lignes dans le nouvel array.
}
//On fait une boucle pour ecrire ligne par ligne le nouvel array dans le fichier "toto_mod.prt"
$newfile = fopen("toto_mod.prt","w+");

foreach($nouv_array_fich as $nouvelle_ligne){
fputs($newfile,$nouvelle_ligne); //NOTE: LE RESULTAT EST BIEN SOUS FORME DE TABLEAU MAIS RESTE A REVOIR LA MISE EN FORME.

}
fclose($newfile);
?>


attention tu avais une ] pas au bon endroit il me semble, mais je n'ai pas d'editeur pour bien voir

Répondre à alain42

8

alain42, le 13 oct 2007 à 18:03:00

En complement a mon post precedent,

Attention il faut que tu refermes ta boucle foreach de generation de array }

avant ta boucle foreach d'ecriture de l'array dans le fichier mod

dans ton code tu as les deux }} a la fin alors tu ecris dans le fichier mod a chaque passage de la premiere boucle ce qui n'est pas bon.

Ensuite un conseil utilises les tags <?php ?> au lieu des shorts tags <? ?> cela t'evitera bien des deboires si tu passes un jour en php5

@lain

Répondre à alain42

9

 Ablawa, le 19 oct 2007 à 16:37:20

Slt Alain42.
J'avais eu un peu de contre temps.
Je tiens à te remercier pour ton apport à la résolution de mon problème.

Répondre à Ablawa