Remplir une table avec le contenu d'un fichier txt

Résolu
boscoauhunier Messages postés 6 Date d'inscription lundi 10 novembre 2003 Statut Membre Dernière intervention 18 mars 2010 - 8 févr. 2010 à 08:25
syndrael Messages postés 2378 Date d'inscription lundi 4 février 2002 Statut Membre Dernière intervention 29 décembre 2012 - 8 févr. 2010 à 09:08
Je désire remplir une table avec le contenu d'un fichier txt
Ma table se structure ainsi

Structure de la table `dico`

CREATE TABLE `dico` (
`id` int(10) NOT NULL auto_increment,
`lettre` char(1) NOT NULL default '',
`long` int(2) NOT NULL default '0',
`mot` varchar(30) NOT NULL default '',
KEY `id` (`id`)
);
contenu de mon fichier dico.txt
AA
AALENIEN
AALENIENNE
AALENIENNES
AALENIENS
AAS
etc........
ZYTHUM
ZYTHUMS

RESULTAT AFFICHE DANS MON NAVIGATEUR

INSERT INTO `dico` VALUES ( 0 ,'A', 2,'AA ');
INSERT INTO `dico` VALUES ( 1 ,'A', 8,'AALENIEN ');
INSERT INTO `dico` VALUES ( 2 ,'A', 10,'AALENIENNE ');
INSERT INTO `dico` VALUES ( 3 ,'A', 11,'AALENIENNES ');
INSERT INTO `dico` VALUES ( 4 ,'A', 9,'AALENIENS ');
INSERT INTO `dico` VALUES ( 5 ,'A', 3,'AAS ');
etc.....
INSERT INTO `dico` VALUES ( 378987 ,'Z', 6,'ZYTHUM ');
INSERT INTO `dico` VALUES ( 378988 ,'Z', 124,'ZYTHUMS ');

La dernière ligne est fausse , POURQUOI QUI A LA SOLUTION ?

Il ne reste plus qu'a enregistrer sous format txt nom.txt

$nbchar = 0;
Mon fichier
$fichier = file( 'ods5.txt' );

while ( list( $num_ligne, $ligne ) = each( $fichier ) ) {
Compte le nombre de caratères
$nbchar = strlen($ligne);
$nb=($nbchar-2);
Affiche la première lettre
$lettre = substr($ligne,0,1);

J'affiche le contenu du fichier dico.txt décomposé
table ID Lettre long mot
echo "INSERT INTO `dico` VALUES ( $num_ligne ,'$lettre', $nb,'".htmlspecialchars( $ligne ) ."');
\n";

}
exit;
?>

Merci d'avance pour la solution.
Cordialement Boscoauhunier

1 réponse

syndrael Messages postés 2378 Date d'inscription lundi 4 février 2002 Statut Membre Dernière intervention 29 décembre 2012 20
8 févr. 2010 à 09:08
essaie
$nbchar = strlen(trim($ligne)); 

S.
3
Rejoignez-nous