Bonjour à toutes et à tous,
Je dois remplir une table nommée "mathscompetences" avec chaque ligne d'un fichier texte (qui regroupe en fait le nom de chaque compétence). Voici le contenu de ce fichier :
Z1
Reconnaître une situation de proportionnalité
Traîter une situation de proportionnalité en utilisant un rapport de linéarité (entier ou décimal)
Compléter un tableau de proportionnalité en utilisant un coefficient de proportionnalité (entier ou décimal)
*Compléter un tableau de proportionnalité par passage par l'image de l'unité
*Compléter un tableau de proportionnalité en utilisant un coefficient de proportionnalité (sous forme d'un quotient)
Appliquer un taux de pourcentage
Z2
Lire, utiliser et interpréter des données à partir d'un tableau
Lire, interpréter et compléter un tableau à double entrée
*Organiser des données en choisissant un mode de représentation adapté : tableaux en deux ou plusieurs colonnes; tableaux à double entrée
Lire et compléter une graduation sur une demi-droite graduée à l'aide d'entiers naturels ou de décimaux
Lire et compléter une graduation sur une demi-droite graduée à l'aide de fractions simples
*Lire et compléter une graduation sur une demi-droite graduée à l'aide de quotients (placement exact ou approché)
Lire, utiliser et intégrer des informations à partir d'une représentation graphique simple (diagrammes en bâtons, graphiques cartésiens)
*Lire, utiliser et interpréter des informations à partir d'une représentation graphique simple (diagrammes circulaires ou semi-circulaires)
N1
Connaître et utiliser la valeur des chiffres en fonction de leur rang dans l'écriture d'un entier
Connaître et utiliser la valeur des chiffres en fonction de leur rang dans l'écriture d'un décimal
Associer diverses désignations d'un nombre décimal : écritures à virgule, fractions décimales
M1
Calculer une aire
Chaque ligne du fichier doit être stockée dans la table avec les règles suivantes :
1 : les lignes Z1 Z2 N1 et M1 ne sont que des indicateurs sur le type de compétence (donc on ne les stocke pas dans la table).
2 : Si la ligne commence par *, cela signifie que la compétence n'est pas exigible
Donc, j'ai créé un fichier php qui lit le fichier texte ligne par ligne avec "fgets()". Je teste avec "ereg() " si la ligne ne commence pas par Z, N, M et G
(qui sont les indicateurs que je ne veux pas insérer dans la table).
Voici le contenu de ce fichier :
<?php
$Serveur=mysql_connect("localhost","root","") or die (mysql_error());
mysql_select_db("eval",$Serveur) or die(mysql_error());
$Fp = fopen("MathsCompetences.txt","r");
$NB=0;
while (!feof($Fp))
{
$Ligne = fgets($Fp);
$Lire='N';
if (ereg('^Z',$Ligne))
{
$type=1;
} elseif(ereg('^N',$Ligne))
{
$type=2;
} elseif(ereg('^G',$Ligne))
{
$type=3;
} elseif(ereg('^M',$Ligne))
{
$type=4;
} else
{
$Lire='O';
$socle=1-ereg('^\*',$Ligne);
}
if ($Lire=='O')
{
$NB++;
echo $NB." ".$Ligne."--";
$Query = "INSERT INTO `mathscompetences`(`Type`,`Socle`,`Texte`)
VALUES($type,$socle,'".$Ligne."')";
mysql_query($Query);
}
fclose($Fp);
mysql_close();
?>
Comme vous pouvez le remarquer, la variable $Lire permet de savoir si la ligne lue doit être insérée dans la table ou non (après les différents tests sur le premier caractère). Si la ligne est à lire, je l'affiche via la fonction echo() et je l'insère à l'aide d'une requête en SQL.
Le problème est le suivant : toutes les compétences à lire sont bien affichée par le "echo()" et elles y sont toutes. De plus, les tests permettent bien d'écarter les lignes "Z1" etc ... MAIS lorsque je regarde le contenu de la table "maths competences" via PHPMyadmin, la table ne contient que les compétences suivantes :
C'est à dire les compétences N° 1,2,3,6,8,9,18 de la liste !!!
ET JE NE COMPRENDS PAS POURQUOI. Pourquoi les compétences affichées par la fonction "echo" ne sont pas insérer dans la table ?
J'ajoute que j'utilise EasyPHP.
Merci pour vos réponses.
Partager