Insérer CSV dans base de donnée

Information importante

En raison d'un grand nombre d'inscriptions de spammers sur notre site, polluant sans relache notre forum, nous suspendons la création de compte via le formulaire de "sign up".

Il est néanmoins toujours possible de devenir adhérent•e en faisant la demande sur cette page, rubrique "Inscription" : https://www.drupal.fr/contact


De plus, le forum est désormais "interdit en écriture". Il n'est plus autorisé d'y écrire un sujet/billet/commentaire.

Pour contacter la communauté, merci de rejoindre le slack "drupalfrance".

Si vous voulez contacter le bureau de l'association, utilisez le formulaire disponible ici, ou envoyez-nous un DM sur twitter.

Bonjour

Je tente d'injecter les valeurs d'un fichier "CSV" charger par un formulaire.

voici mon code

<?php
if(isset($_FILES['file'])){
        
$sql = "LOAD DATA INFILE '".$_FILES['file']['tmp_name']."'
                INTO TABLE csv_avant
                        FIELDS
                    TERMINATED BY ';'
                    ENCLOSED BY '\"'
                    ESCAPED BY '\\\\'
                        LINES
                     STARTING BY ''
                    TERMINATED BY '\\n'"
;
        
$requete_sql = mysql_query($sql) or die(mysql_error());
    }
?>

mon code fonctionne si je l'entre directement dans ma requête SQL mais via mon script rien ne se passe. je précise mon fichier csv chargé s'enregistre bien dans le dossier default/files

Merci d'avance

Forum : 
Version de Drupal : 

j'ai décidé de passé par fgetcsv mais j'ai un souci la table se remplie que avec le contenue de la deuxième ligne de mon csv.
et il ne boucle pas sur les autres ligne

<?php
$handle
= fopen ("public://testfileplus.csv","r");
   
fgetcsv ($handle, 0, ";");
    while (
$data = fgetcsv ($handle, 0, ";")) {
           
$nid =db_query ("INSERT INTO{csv_avant} (nom,prenom,categorie,nationalite,numLicence,dossard,club,etatInscription) VALUES ('$data[0]','$data[1]','$data[2]','$data[3]','$data[4]','$data[5]','$data[6]','$data[7]')");
           
$result = mysql_query($requete) or die(mysql_error());
            }
   
fclose ($handle);
}
?>

Bonjour hles

Alors j'ai réussi avec la méthode suivante

<?php
db_query
("LOAD DATA INFILE '$base_path/sites/default/files/prenom.csv'
        INTO table csv_avant FIELDS TERMINATED BY ';' LINES TERMINATED BY '\n'        
        (nom,prenom,categorie,nationalite,numLicence,dossard,club,etatInscription)
            "
);
?>

en revanche le souci c'est que je vais chercher un fichier en local hors je souhaite que le fichier en question soit $_file['file']['tmp_name']