[CSV] Importation de données xls vers mysql
Bonjour tout le monde,
Je dois importer des données de Excel (format xls) vers my base de données mysql.
J'ai trouvé un code sur le net que voici :
Code:
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
| <?php
// vérification sur la session authentification (la session est elle enregistrée ?)
// ici les éventuelles actions en cas de réussite de la connexion
include('../../Scripts/connexion.php');
//$sql=mysql_query("DELETE FROM commmunes");
//=========================
// Traitement des donnees
//=========================
//recupere le nom du fichier indiqué par l'user
$fichier=$_FILES["userfile"]["name"];
// ouverture du fichier en lecture
if ($fichier)
{
//ouverture du fichier temporaire
$fp = fopen ($_FILES["userfile"]["tmp_name"], "r");
}
else{
// fichier inconnu
?>
<p align="center" >- Importation échouée -</p>
<p align="center" ><B>Désolé, mais vous n'avez pas spécifié de chemin valide ...</B></p>
<?php
exit();
}
// declaration de la variable "cpt" qui permettra de conpter le nombre d'enregistrement réalisé
$cpt=0;
?>
<p align="center">- Importation Réussie -</p>
<p align="right"><a href="#bas">Bas de page</a></p>
<?php
// importation
while (!feof($fp))
{
$ligne = fgets($fp,4096);
// on crée un tableau des élements séparés par des points virgule
$liste = explode(";",$ligne);
// premier élément
$liste[0] = ( isset($liste[0]) ) ? $liste[0] : Null;
$liste[1] = ( isset($liste[1]) ) ? $liste[1] : Null;
$liste[2] = ( isset($liste[2]) ) ? $liste[2] : Null;
$liste[3] = ( isset($liste[2]) ) ? $liste[2] : Null;
$champs1=$liste[0]; //ID
$champs2=$liste[1]; //NOTE
echo'<script LANGUAGE="JavaScript">alert("'.$champs1.'");</SCRIPT>';
// pour eviter qu un champs "nom" du fichier soit vide
if ($champs1!='')
{
// nouvel ajout, compteur incrémenté
$cpt++;
// requete et insertion ligne par ligne
// champs1 id en general dc on affecte pas de valeur
$req = mysql_query("INSERT INTO inscrits_en(NOTE) VALUES('$champs2') WHERE inscrits_en.ID = " . $champs1 );
//echo'<script LANGUAGE="JavaScript">alert("'.$req.'");</SCRIPT>';
?>
<table width="505" border="1" align="center" cellpadding="0" cellspacing="0" bgcolor="#eeeeee">
<tr>
<td width="124">Eléments importés :</td>
<td width="361"><?php echo $liste[0];?></td>
<td width="361"><?php echo $liste[1];?></td>
</tr>
</table>
<p>
<?php
}
}
// fermeture du fichier
fclose($fp);
//on supprime la derniere car elle est vide
//==================
// FIN
//==================
?>
<br>
<br>
Nombre de valeurs nouvellement enregistrées: <b><?php echo $cpt;?></b>.<br>
<br>
</p>
<p> </p> |
Le résultat n'est pas correct, j'obtiens des symbôles un peu partout.
Je pense déjà avoir trouvé un premier problème :
Code:
$liste = explode(";",$ligne);
Pour excel, je remplace le ; par quoi ?
Je me demandais aussi si le fopen suffisait pour un xls ?
Un tout grand merci d'avance pour l'aide.
beegees
Transformer un fichier xls en un fichier csv
Bonjour tout le monde,
J'ai un fichier xls qui contient des données.
J'aimerais transférer les données de mon fichier xls vers mysql.
Je me demandais si il ne serait pas mieux de transformer le fichier xls en csv ?
J'ai un script php qui me permet de transférer des données csv vers mysql mais pas xls vers mysql.
On m'a conseillé ceci :
Citation:
lire toutes les cellules d'une ligne de ton fichier xls, tu les envoie dans une ligne du fichier csv par fputcsv
je me demande quel séparateur je dois utiliser ? :
par rapport à ceci :
Code:
int fputcsv ( resource $handle , array $fields [, string $delimiter [, string $enclosure ]] )
Est-ce la bonne solution pour mon problème ?
Merci d'avance.
beegees