cs_daris
Messages postés49Date d'inscriptionlundi 9 janvier 2006StatutMembreDernière intervention17 février 2009
-
3 janv. 2008 à 16:28
cs_seybou
Messages postés3Date d'inscriptiondimanche 9 mai 2004StatutMembreDernière intervention 6 octobre 2009
-
6 oct. 2009 à 20:04
Bonjour,
J'ai un fichier sous ce format
14366,1,56.9,704,0.411326
14366,2,56.2,703,0.0322821
14366,3,57.5,688,0.181508
14366,4,57.6,687,0.599771
14366,5,59.1,669,0.274231
14366,6,60.1,657,0.173746*
14360,1,56.9,704,0.411326
14360,2,56.2,703,0.0322821
14360,3,57.5,688,0.181508
14360,4,57.6,687,0.599771
14360,5,59.1,669,0.274231
14360,6,60.1,657,0.173746*
14359,1,56.9,704,0.411326
14359,2,56.2,703,0.0322821
14359,3,57.5,688,0.181508
14359,4,57.6,687,0.599771
14359,5,59.1,669,0.274231
14359,6,60.1,657,0.173746*
14372,1,56.9,704,0.411326
14372,2,56.2,703,0.0322821
14372,3,57.5,688,0.181508
14372,4,57.6,687,0.599771
14372,5,59.1,669,0.274231
14372,6,60.1,657,0.173746
deux type de separateur ,(virgule) et *(etoile)
Pour traiter ce ffichier avec du php, je veux dans un premier temps separer les donneés en bloc grace au separateur (*)
Ensuite traiter chaque bloc en prenant en compte le separateur (,)
mais je suis bloquée au niveau de la premiere étape= > separation en bloc /separateur *
Voici mon script:
$ouvre = fopen ($uploadfile,"r"); // ouverture fichier en lecture "r"
while (!feof ($ouvre))// tant que pas en fin de fichier
{
$lecture = fgets($ouvre, 4096); // stockage dans $lecture
$donnee=explode("*",$lecture); // parsing des données basé sur "*")
$combien=count($donnee)-1; // nbre d'éléments séparés par "*"
echo " Ce fichier contient ",$combien," données :
";
for ($i =0;$i<=$combien;$i++)
{
echo $donnee[$i],"
"; // affichage des données
}
}
ce script ne me permet pas de faire ce que j'ai decris plus haut car dans un bloc il ya plusieurs lignes.
Si vous avez une idée pour m'aider .Merci d'avance
cs_daris
Messages postés49Date d'inscriptionlundi 9 janvier 2006StatutMembreDernière intervention17 février 2009 4 janv. 2008 à 08:53
Merci pour vos aides , ca marche bien ce script et ca fait exactement ce que je voulais mais malheureusement je doit proceder autrement maintenant . c'est dire que je n'ai plus de séparateur * dans mon fichier .le delimiteur de chaque block doit être la premiere colonne du fichier csv qui est un identifiant.
pour chaque identifiant je doit lire le block et inserer les resultat dans ma base ansi de suite. si vous avez une idée .Merci de ne pas hesiter
cs_daris
Messages postés49Date d'inscriptionlundi 9 janvier 2006StatutMembreDernière intervention17 février 2009 4 janv. 2008 à 10:42
Je rexplique mon probleme :
j'ai ce fichier dont la première colonne correspon a un identifiant.:
14366,1,56.9,704,0.411326
14366,2,56.2,703,0.0322821
14366,3,57.5,688,0.181508
14366,4,57.6,687,0.599771
14366,5,59.1,669,0.274231
14366,6,60.1,657,0.173746
14360,1,56.9,704,0.411326
14360,2,56.2,703,0.0322821
14360,3,57.5,688,0.181508
14360,4,57.6,687,0.599771
14360,5,59.1,669,0.274231
14360,6,60.1,657,0.173746
14359,1,56.9,704,0.411326
14359,2,56.2,703,0.0322821
14359,3,57.5,688,0.181508
14359,4,57.6,687,0.599771
14359,5,59.1,669,0.274231
14359,6,60.1,657,0.173746
14372,1,56.9,704,0.411326
14372,2,56.2,703,0.0322821
14372,3,57.5,688,0.181508
14372,4,57.6,687,0.599771
14372,5,59.1,669,0.274231
14372,6,60.1,657,0.173746
Pour chaque identifiant je doit lire toutes les ligne et les rajouter dans un tableau que je vais traiter apres pour inserer dans ma base.
J'ai essaye de mettre en place le script ci dessous , peut être pas trop coherent car par manque d'expérience je ne suis pas convaincu de mon algorithme. merci si vous pouvez m'eclaicir.
$row = 1; // initialisation de la 1ère ligne du fichier uploadé
$fp= fopen ($uploadfile,"r"); // ouverture fichier en lecture "r"
$identifiant =null;
while ($data = fgets ($fp, 4086)){ //$contentfile_get_contents($uploadfile); list($no_analyse_B_ARISA,$numero_de_bande,$intensite_de_la_bande,$taille_de_la_bande,$distance_de_migration) explode(",", $data);
$identifiant=$no_analyse_B_ARISA;
echo $identifiant;
$num = count ($data);
for($i=0; $i < $num; $i++){
if($identifiant == $no_analyse_B_ARISA){
echo "je suis à la ligne numero ".$row."du fichier
";
}else{
echo "Attention l'dentifiant a changer!
";
}
}
$row++;
print_r($data);
fclose($fp);
Vous n’avez pas trouvé la réponse que vous recherchez ?
Si vous voulez lire le contenu d'un fichier dans une chaîne de
caractères, utilisez plutôt file_get_contents() qui est bien plus rapide que le code ci-dessus.
Mais je suggère ce changement surtout parce que je crois que ça fait plus propre de remplacer 3 lignes par une seule fonction qui est faite pour ça :).
-------------------
Vous cherchez un hebergement Php/MySQL Gratuit et sans publicités ??
Et bien c'est la : www.e3b.org
cs_seybou
Messages postés3Date d'inscriptiondimanche 9 mai 2004StatutMembreDernière intervention 6 octobre 2009 6 oct. 2009 à 20:04
bonsoir,moi j'ai plutot un repertoire dans lequel se trouve plusieurs repertoires dont
1.je doit recuperer le nom de chacun des ces répertoires dans un parametre;
2.pour chaque repertoire je doit rechercher, identifier et compter les fichiers de meme type: dont les noms ont en commun une chaine xxxx;
3.ouvrir chaque fichier
4.Identifier et lecture des informations utiles (ici en bleu) avec creation d'une table dont les colonnes sont en rouges:
Name of BSC : AGA
begin date and time : 2009-07-17 11:00
end date and time : 2009-07-17 12:00
LINK_ID C153A C153B C251 C252 C253 C254 C255 C256 C257 C258
16 0 1 0 165 2324 0 0 2353 0 0
144 0 0 0 198 2323 0 0 2313 0 0
272 0 0 0 202 2326 0 0 2309 0 0
5.inserer pour chaque ligne les colonnes suivantes jusqu'à rencontrer une ligne vide:
Name of BSC begin date and time end date and time LINK_ID C153A ... C256
6.sortir du fichier si rencontre ligne vide et ouvrir le prochain fichier. et faire le processus en ajoutant les nouvelles valeurs pour les memes colonnes.
Merci de m'aider à faire un code PHP/Mysql de cet algorithme.
merci d'avance !