|
|
|
|
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
Salut,
|
Salut,
$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 |
Merci Alain42 pour tout ce que tu as déjà fait pour moi.
|
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 |
Merci Alain42. ça marche: j'ai sous forme de tableau, les colonnes que je veux avec le séparateur.
|
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 |
En complement a mon post precedent,
|