Page 1 sur 1

Importer un fichier CSV (PHP)

Posté : 23 juin 2022, 12:22
par davlongin
Bonjour, je voudrais savoir pourquoi la clé de mon tableau "file" n'est pas défini. j'obtiens cette erreur :
(Undefined array key "file" ). Le code en question est ci-dessous (Au dessus le traitement du formulaire / En dessous le formulaire ):
<?php
    $host = "localhost";
	$login = "root";
	$mdp = "";
	$bdd = "remplacement";
	$con = mysqli_connect($host, $login, $mdp, $bdd);
    // ...
    if(isset($_POST["import"])){
    
    $fileName = $_FILES["file"]["name"];
    
    if($_FILES["file"]["size"] > 0){
      $file = fopen($fileName, "r");
      
      while(($column = fgetcsv($file, 10000, ",")) !== FALSE){
        $sqlInsert = "INSERT into mission (hDebutMission, hFinMission, idDJ, mailUtPV, duree, dateDebutMission, dateFinMission, rneEcole, visible)
             values ('" . $column[0] . "','" . $column[1] . "','" . $column[2] . "','" . $column[3] . "','" . $column[4] . "','" . $column[5] . "','" . $column[6] . "','" . $column[7] . "','" . $column[8] . "')";
        $result = mysqli_query($con, $sqlInsert);
        
        if (!empty($result)) {
          echo "Les données ont été importé dans la base de données";
        } else {
          echo "Problème lors de l'importation de données CSV";
        }
      }
    }
  }
?>
<!DOCTYPE html>
<html>

<head>
    <meta charset="utf-8">
</head>

<body>
    <form action="" method="post">
        <div>
            <label>Choisir un fichier CSV</label>
            <input type="file" name="file" accept=".csv" enctype="multipart/form-data">
            <button type="submit" name="import">Importer</button>
            <br/>
        </div>
    </form>
</body>
</html>

Re: Importer un fichier CSV (PHP)

Posté : 23 juin 2022, 12:33
par ynx
Bonjour,

Essaye d'ajouter l'attribut enctype="multipart/form-data" sur ton formulaire.
Voir l'exemple sur la doc : https://www.php.net/manual/fr/features. ... method.php

Re: Importer un fichier CSV (PHP)

Posté : 23 juin 2022, 12:38
par davlongin
Merci bcp, je me suis trompé j'ai mis l'attribut "enctype="multipart/form-data" dans l'input au lieu du formulaire. C'est de ma faute.