Php & explode...

Résolu/Fermé
ixce Messages postés 51 Date d'inscription mardi 13 mai 2008 Statut Membre Dernière intervention 17 décembre 2008 - 30 mai 2008 à 12:06
ixce Messages postés 51 Date d'inscription mardi 13 mai 2008 Statut Membre Dernière intervention 17 décembre 2008 - 30 mai 2008 à 14:48
Bonjour,
voila, je developpe une page php, qui traite un fichier texte appelé essai.log, ce fichier contient des chaines de caracteres.
chacune de ces lignes contient des valeurs separés par des |.
je cherche à entrer les valeurs dans un tableau ----->explode.
en fonction du premier caractere de chaque ligne, et ce, par le biais de switch.

apercu de essai.log:
M|Code='SOUR-LOGCOMBO'|97|SOUR-LOGCOMBO||Souris LOGITECH Combo PS2/série 3 boutons|U|PIECES.SOURIS.|False|76500|0|0|0|0|0|0|0|0|0|0|0|0|0|1|P|0|0|6000|0|0|||1000|||||||V19|28/08/2001 12:42:58|05/09/2001 11:27:32|28/08/2001 12:42:58|True|1000|0|0|False|0|0||||||||||||||||||129|M
C|Code='CAM-SONYPC110'|98|CAM-SONYPC110||Camescope SONY DCR-PC110E |U|PERIPH.CAMESCOPE.|False|10500000|0|0|0|0|0|0|0|0|0|0|0|0|0|1|P|0|0|0|0|0|||1000|||||||V19|05/09/2001 11:27:16|00:00:00|05/09/2001 11:27:16|True|1000|0|0|False|0|0||||||||||||||||||0|C
S|Code='MEM-DIM128S'|60|Code='RES-ROUTRNISNET'|75|Code='MEM-DIM128S'|60|Code='RES-ROUTRNISNET'|75|

et de mon script:
function variabilise($lg) {
//cree le tab a 1 dim, soit la ligne dun tab a 2 dim
$valeurs=array();
//si le premier caractere de la ligne est cms, variabilisation diff
switch ($lg{0}) {
case 'C':
case 'M':
$valeurs=explode("|",$lg);
break;

case 'S':
$valeurs=explode("|",$lg);
break;
}
return $valeurs;
}


mon probleme est que les lignes commencant par s ne sont pas traités, quelquun peut il meclairer?

svp
xavier
A voir également:

3 réponses

macgawel Messages postés 664 Date d'inscription mercredi 7 mai 2008 Statut Membre Dernière intervention 1 novembre 2008 89
30 mai 2008 à 12:19
J'ai testé, je ne vois pas de problème. Je récupère bien un tableau correct.
Par contre, je ne comprends pas pourquoi tu fais un SWITCH, vu que le traitement est le même...
0
ixce Messages postés 51 Date d'inscription mardi 13 mai 2008 Statut Membre Dernière intervention 17 décembre 2008 3
30 mai 2008 à 14:32
le cas S était traité?
0
ghizlanekh Messages postés 46 Date d'inscription jeudi 10 avril 2008 Statut Membre Dernière intervention 14 décembre 2012
30 mai 2008 à 13:12
oui c vrai à quoi ça sert ton switch.
si tu veux les mettre dans un tableau un expode te suffit.
0
ixce Messages postés 51 Date d'inscription mardi 13 mai 2008 Statut Membre Dernière intervention 17 décembre 2008 3
30 mai 2008 à 14:22
j aurais du vous dire pour le switch,
les lignes que vous voyez sont en fait des Créations, Modifications et Suppression, sur une base de données, le 1er caractère de chaque ligne spécifie laction qui sera réalisée.


pour la mise en variable des lignes commençant par M et C , no problème, c'est plus tard que la différence se fera.
mais pour les lignes commençant par S,en fait il n'y a qu'une ligne commençant par S, et les valeurs se suivent par couple sur le reste de la ligne. en gros, on s'est que c'est une ligne qui engendrera une suppression , mais cela n'est dit qu'une fois, après c'est du |code|référence|code|référence|code|référence|code|référence


Suppr:
S|code|référence|code|référence|code|référence|code|référence

Création/Modification
C(ou M)|code|reference|valeur1|valeur2...|valeur n

et si le switch ne sert a rien dans le mon premier article, c'est parce que , aussi simple que puissent etre la demande, le traitement n'est pas réalisé, après je différencierai l'action du cas S au sein de mon switch.

mais la tout de suite, le switch S et le switch M/C sont les mêmes sauf que S n'est pas traité.

voila, je peux vous mettre les 2 fichiers a partir desquelles je travaille si vous le souhaitez.
et je travaille sur easyPhp
0
ixce Messages postés 51 Date d'inscription mardi 13 mai 2008 Statut Membre Dernière intervention 17 décembre 2008 3
30 mai 2008 à 14:48
le probleme était que javais mis do...while(! feof($file)) au lieu de !feof($file), jai pas saisi pourquoi ca ne marchait pas mais le resultat est la kan meme, merci pour tout.
0