Page 1 sur 1

tableau fichier texte et requete mysql

Posté : 25 mai 2009, 20:17
par Davee
Bonjour un petit moment que je suis pas venu, enfin bref...

J'ai un petit souci avec la fonction fgets().
J'explique.
J'ai fichier texte avec plusieurs lignes.

Code : Tout sélectionner

supplies bank essence pain divers Tele2 sortie mobicarte loyer elec internet crediter
chaque ligne est récupérer dans un tableau
$a=$this->fT."/".$a.".txt";
$a=fopen ($a, "r");
while (!feof($a))
{
	$aa[]=fgets($a);
}
return $aa;
symboliser comme suit

Code : Tout sélectionner

Array ( [0] => supplies [1] => bank [2] => essence [3] => pain [4] => divers [5] => Tele2 [6] => sortie [7] => mobicarte [8] => mensFix [9] => elec [10] => internet [11] => crediter )
Mon problème c'est que fgets() prends en compte les retour de ligne et je voudrait savoir s'il y a moyen de ne pas les prendre en compte ??

le souci c'est que j'utilise ce tableau pour fouiller dans une base de donnée

Quand je parcours un tableau directement ecrit dans le scripte:
$aa=array('supplies', 'bank', 'essence', 'pain', 'divers', 'Tele2', 'sortie', 'mobicarte' ,'mensFix', 'elec' ,'internet' ,'crediter');
tout va bien, mais quand c'est un tableau comme je l'ai construit plus haut ça ne va pas.

Mon problème est immense, je m'en remet à votre humble bonté pour me donner la voie, hooo grands modos et autres adeptes... voire plus. :priere:

Merci d'avance.

David.

Posté : 25 mai 2009, 20:22
par stopher
Salut ,

certainement une solution :

remplace fgets() par stream_get_line()

Ch.

Posté : 25 mai 2009, 21:32
par Davee
Merci stopher

Bon voilà le php
$a=$this->fT."/".$a.".txt";
$a=fopen ($a, "r");
while (!feof($a))
{
	$aa[]=stream_get_line($a,1024,'\n');
}
return $aa;
et voilà ce qu'il me retourne

Code : Tout sélectionner

Array ( [0] => supplies bank essence pain divers Tele2 sortie mobicarte loyer elec internet crediter )
C'est un peu gènant il ne s'arrête pas au retour de chariot, il lis tous les octets spécifié par la deuxième variable.
Je peux pas spécifié un nombre d'octet les ligne ont pas toutes la même longueur.

gratgrat. #-o

je patine un peu.

Posté : 26 mai 2009, 00:16
par Elie
Et si tu supprimer les keys ca suffit pas ?

Posté : 26 mai 2009, 19:20
par Davee
merci pour la suggestion mais je ne croit pas.

En fait le fgets() recupère les retours de chariot de mon fichier texte, ils sont contenu dans le tableau mais invisible. ... c'est diablerie :twisted:

Ce qui fait que quand je demande une requete mysql, Il ne trouve pas la colonne 'essence', ou 'banque',etc... mais il cherche 'essence\n',etc...

(enfin c'est ce qui me semble, d'après les tests que j'ai pu faire, notament en passant un tableau directement par le script. Mais peut-être que je me trompe.)

Merci.

david.

Posté : 27 mai 2009, 08:15
par blof
Bonjour,

une autre solution :
$aa = array_map('chop', file('ton_fichier'));

array_map(), chop(), file()

Posté : 27 mai 2009, 10:20
par Davee
Array_map() bonne idée.

Je me suis dépatouiller avec preg_split()

Je récupère d'un coup le contenu du fichier avec fread() et je traite avec ce petit bout de code
$t=preg_split('#\r\n#',$t);
ça me fait un joli petit tableau qui va boucler pour aller chercher dans la base et ça marche.

Merci à tous en tout cas.

david.

[Note : ce message a été posté de manière anonyme avant d'être réattribué à son auteur]
et je vous en remercie =D