Bonjour à tous,

Lors de l'exécution de ce code, j'ai l'impression que celui-ci s'exécute deux fois.Effectivement tous les enregistrements sont doublés dans la base résultante. Le comptage donne bien le nombre d'enregistrements lus dans le fichier alors que le comptage sur la base est différent. Le champ cle qui est géré par MySQL entre les deux enregistrements identiques ont un écart de 331.

Nb enreg générés : 339
La requete a retourne 662 enregistrement(s).

8 enregistrements n'ont rien généré car certaines valeurs sont invalides.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
 
<?php
  require_once "accesBase.php" ;
  $link = premierAcces() ;          // init de la base
  $nomF = "Personnes.txt" ;
  echo "présence du fichier '$nomF' <br>" ;
  if (file_exists($nomF)) {
  } else {
    echo "le fichier '$nomF' est absent. \n" ;
    exit() ;
  }
  $i ;
  $lg ; 
  echo "ouverture du fichier '$nomF' <br>" ;
  $file = fopen($nomF,"r") ;
  $enr = fgets($file) ;
  $k = 0 ;
  while (!feof($file)) {
    $k++ ;
    $lg = strlen($enr) ;
    $j = 0 ;
  	$chp = "" ;
  	// echo "$enr <br>" ;
  	$top = true ;
    for ($i = 0; $i <= $lg; $i++) {
      $chr =  substr($enr,$i,1) ;
      // echo "i=($i) $chr <br>" ;
      if ($chr == ";") {
        if ($top) {
          $chp[$j] = null ;
        }
        $top = true ;
        $j++ ;
      } else if ($chr == '"') {
      } else {
        if ($top) { 
          $chp[$j] = $chr ;
          $top = false ;
        } else {
          $chp[$j] .= $chr ;
        }
        // echo "j=($j) $chp[$j] <br>" ;
      }
    }
    enregistrer($link, $chp) ;
    // echo "($lg) $enr <br>" ;
    // echo "$chp[3] - $chp[5] - $chp[8] <br>" ;
    $enr = fgets($file) ;
    // $enr = null ;
  }
 
  fclose ($file);
 
  echo "Nb enreg générés : $k <br>" ;
 
  $str = "SELECT * FROM personnes" ;
  if ($enr = mysqli_query($link, $str)) {
    $nblig = mysqli_num_rows($enr) ;
    echo "La requete a retourne $nblig enregistrement(s).\n";
  } else {
    echo "Pas de resultat pour cette requete. \n" ;
  }
function Enregistrer($link, $chp) {
 
  /*
  for ($i = 0; $i <= 13; $i++) {
    echo "indice : $i - $chp[$i] <br>" ; 
  }
   */
	$str  = "INSERT INTO personnes (id_pers, " ;
	// $str  = "INSERT INTO personnes (" ;
	$str .= "pers_sexe, pers_nom, pers_autNom, pers_prenom, " ;
	$str .= "pers_autres, pers_dteNais, pers_lieuNais, " ;
	$str .= "pers_dteDeces, pers_lieuDeces, pers_idPere, pers_idMere, " ;
	$str .= "pers_noNais, pers_noDeces, pers_oldID) " ;
	$str .= "VALUES (" ;
	$str .= "'" . $chp[13] . "', " ;
	$str .= "'" . $chp[3] . "', " ;
  $str .= "'', " ;
	$str .= "'" . $chp[4] . "', " ;
	$str .= "'" . $chp[5] . "', " ;
	$str .= "'" . $chp[6] . "', " ;
	$str .= "'" . $chp[8] . "', " ;
	$str .= "'" . $chp[10] . "', " ;
	$str .= "'" . $chp[11] . "', " ;
	$str .= "'" . $chp[12] . "', " ;
	$str .= "0, " ;
	$str .= "0," ;
	$str .= "'" . $chp[1] . "', " ;
	$str .= "'" . $chp[2] . "', " ;
	$str .= "$chp[0]" ;
	$str .= ")" ;
 
  $curs = mysqli_query($link, $str) ;
// Vérification du résultat
// Ceci montre la requête envoyée à MySQL ainsi que l'erreur. Utile pour déboguer.
  if (!$curs) {
    $err = mysqli_error($link) ; 
    echo "Requête invalide : $err <br>" ;
    echo "Requête complète : $str <br>" ;
  }
}
Mes remerciements et cordiales salutations.