Recherche d'éléments : fonction ssanf

Signaler
Messages postés
34
Date d'inscription
vendredi 25 octobre 2002
Statut
Membre
Dernière intervention
1 juillet 2007
-
Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
-
Bonjour,
Je souhaite lire des éléments dans un document texte formaté comme ceci :

nombre#
txt txt txt
...(0 ou plusieurs lignes)
txt txt#

J'utilise donc la fonction sscanf, très pratique, sauf qu'elle ne fonctionne pas :

<hr size="2" width="100%">$fd = fopen ("txt.txt", "r");
$i=0;
while (!feof ($fd)) {
$buffer = fgets($fd, 4096);
if (sscanf($buffer,"%d#",$buf1)) {
$id = $buf1;
}
else if (sscanf($buffer,"%[^#]#",$buf2)) {
$txt= $txt."$buf2";
if ($i !=0) echo "UPDATE `db` SET `txt` = '$txt' WHERE `id` = '$id' LIMIT 1;
";
$id = NULL;
$txt = NULL;
}
else { if ($id !NULL) $txt $txt."$buffer";
}
$i++;
}
<hr size="2" width="100%">Le premier if fonctionne correctement, mais le second est vérifié à tout les coups, même si la ligne ne termine pas par # comme indiqué, et je n'arrive pas a comprendre pourquoi c'est ça qui fait tout bloquer.

Par avance merci de toute réponse !

3 réponses

Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
41
Salut,
je ne vois pas quand tu dois ajouter tes #...

Explique mieux...

In a dream, I saw me, drop dead... U was there, U cried... It was just a dream, if I die, U won't cry, maybe, U'll be happy

Mon site (articles sur la programmation et programmes)
Messages postés
34
Date d'inscription
vendredi 25 octobre 2002
Statut
Membre
Dernière intervention
1 juillet 2007

Voici un exemple du contenu de mon document texte :


123#
du texte, du texte !
texte texte#
456#
blablabla#
789#
dksxjhisj
sikjfkj#


En gros pour chaque groupe chiffre/texte je souhaite créer une requête mysql du type "UPDATE `db` SET `txt` '$txt' WHERE `id` '$id'" j'ai donc besoin de récuperer le numéro du groupe (ca j'y arrive, premier if) et j'ai aussi besoin de rassembler en un bloc les textes qui prennent plusieurs lignes (deuxième et troisième if sachant que le deuxième me fait tout planter car il retourne quoi qu'il arrive vrais).
Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
41
Salut,
t'as qu'a utiliser un explode...



explode('#', $var)

In a dream, I saw me, drop dead... U was there, U cried... It was just a dream, if I die, U won't cry, maybe, U'll be happy

Mon site (articles sur la programmation et programmes)