tableau fichier texte et requete mysql

Eléphant du PHP | 135 Messages

25 mai 2009, 20:17

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.
Des noeuds au cerveau!

ViPHP
ViPHP | 1136 Messages

25 mai 2009, 20:22

Salut ,

certainement une solution :

remplace fgets() par stream_get_line()

Ch.

Eléphant du PHP | 135 Messages

25 mai 2009, 21:32

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.
Des noeuds au cerveau!

Mammouth du PHP | 1339 Messages

26 mai 2009, 00:16

Et si tu supprimer les keys ca suffit pas ?
Bon sinon tu me fais un message privé et on se fait un TeamViewer

Eléphant du PHP | 135 Messages

26 mai 2009, 19:20

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.
Des noeuds au cerveau!

Eléphant du PHP | 170 Messages

27 mai 2009, 08:15

Bonjour,

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

array_map(), chop(), file()

Eléphant du PHP | 135 Messages

27 mai 2009, 10:20

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