Bonsoir à tous,

Je suis en train de gérer l'insertion d'une feuille XLS dans une base MySQL.

J'ai réussi à gérer la conversion mais je rencontre un problème avec l'insertion dans MySQL.

Voici mon code :

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
<?php
 
// Code d'importation des XLS.
require 'C:\Windows\System32\vendor\autoload.php';
 
$inputFileType = 'Xls';
$inputFileName = './presences_enfants.XLS';
 
try
{
	$reader = new \PhpOffice\PhpSpreadsheet\Reader\Xls();
	$reader->setReadDataOnly(true);
	$spreadsheet = $reader->load($inputFileName);
}
 
catch(Exception $e)
{
    // Si l'ouverture échoue, on l'indique à l'utilisateur et on arrête l'exécution du script.
    echo 'Le fichier "'.$inputFileName.'" est introuvable.'; // METTRE A JOUR POUR ENVOYER UN MAIL AUX ADMINISTRATEURS !!!
    exit();
}
 
// Définition d'un tableau associatif qui contiendra l'ensemble des données des cellules.
$arrayExcel = [];
 
// Séléction de la feuille du document à insérer
$sheet = $spreadsheet->getSheet(0);
// Nombre de lignes de la feuille concernée.
$highestRow = $sheet->getHighestRow();
// Nombre de colonnes de la feuille concernée.
$highestColumn = $sheet->getHighestColumn();
 
// Boucle pour la création du tableau associatif.
for ($row = 1; $row <= $highestRow; $row++)
{
	// On range la ligne dans l'ordre 'normal'
    $rowData = $sheet->rangeToArray('A' . $row . ':' . $highestColumn . $row, NULL, TRUE, FALSE);
	// rowData est un tableau contenant les données de la ligne
    $rowData = $rowData[0];
 
	array_push($arrayExcel, ["idenfant"=>trim($rowData[0]), "datedebut"=>trim($rowData[1]), "datefin"=>trim($rowData[2]), "annulation"=>trim($rowData[3]), "site"=>trim($rowData[4]), "numadherent"=>trim($rowData[5]), "nomenfant"=>trim($rowData[6])]);
}
// Suppression de la première ligne qui contient les entêtes de colonnes.
array_shift($arrayExcel);
// Fin de gestion du fichier XLS.
 
// Lancement de la connexion au serveur MariaDB via PDO.
$base = mysqli_connect("127.0.0.1", "test", "123456", "tv_bat13");
 
// Enregistrement des éléments du tableau dans la BDD.
foreach($arrayExcel as $ligne)
{
	// Modification de la date d'entrée pour correspondre à une date MySQL. (Date Excel)
	$dated = $ligne['datedebut'] * 86400 - 2209161600; // Conversion de la date en timestamp.
	$datedebutmysql = date('Ymd', $dated);
	//  Modification de la date de sortie pour correspondre à une date MySQL. (Date Excel)
	$datef = $ligne['datefin'] * 86400 - 2209161600; // Conversion de la date en timestamp.
	$datefinmysql = date('Ymd', $datef);
 
 
	$idenfant = $ligne['idenfant'];
 
	if ($ligne['annulation'] == "")
	{
		$annulation = 0;
	}
	else
	{
		$annulation = 1;
	}
 
	$site = $ligne['site'];
	$numadherent = $ligne['numadherent'];
	$nomenfant = $ligne['nomenfant'];
 
	$sql = "INSERT INTO test (idenfant, datedebut, datefin, annulation, numadherent, nomenfant) VALUES ($idenfant, $datedebutmysql, $datefinmysql, $annulation, '$numadherent', '$nomenfant')";
 
	// Exécution de la requête
	$res = $base->query($sql);
 
    echo 'Entrée '.$nomenfant.' ajoutée dans la table'."</br>";
}
mysqli_close($base);
?>
Mon problème :

Quand je travaille sur une feuille contenant 10 enfants, ma requête fonctionne et ma table est correctement incrémentée.

Quand je travaille sur une feuille contenant 150 enfants, ma requête semble fonctionner mais ma table ne se remplie pas.

Je ne comprend pas pourquoi.

J'utilise une VM pour mon développement ou j'ai installé XAMPP.

Pourriez-vous m'aider ? Merci d'avance pour vos réponses.

Merci d'avance.