Importation excel/BDD
echo
-
echo -
echo -
Bonjour,
Etant en train de faire un site de gestion de publications, je souhaiterais intégrer une fonctionnalité qui me permettrait d'importer les données .csv (excel) sur MySQL.
J'ai donc mis dans mon code un <input type="file" name="nomFichier" action=$url /> ainsi que les autres "input" me permettant de parcourir les fichiers sur l'ordinateur client.
J'ai trouvé sur google des tutoriels me permettant de réaliser cette tâche. Quand je valide l'importation, ma fonction réalise ces commandes :
$fichier = $_FILES['nomFichier']['tmp_name'];
if (isset($_FILES['nomFichier'])) {
$fp = fopen("$fichier", "r");
while (!feof($fichier)){
$ligne = fgets($fichier,4096);
$liste = explode( ";",$ligne);
$titre = $liste[0];
$annee = $liste[1];
$query = "INSERT INTO publication VALUES('$titre','$annee')";
$result= MYSQL_QUERY($query);
if(mysql_error()) {
print "Erreur dans la base de donnees : ".mysql_error();
print "<br>Importation stoppee.";
}
else
print "$titre $annee <br>";
}
echo "<br>Importation terminée, avec succès.";
fclose($fichier);
}
Le problème c'est que aprés un long chargement, j'obtiens une longue liste d'erreurs:
Warning: feof(): supplied argument is not a valid stream resource in C:\wamp\www\Copie de joomla\mes_scripts\bdd.php on line 424
Warning: fgets(): supplied argument is not a valid stream resource in C:\wamp\www\Copie de joomla\mes_scripts\bdd.php on line 425
Erreur dans la base de donn�es : Column count doesn't match value count at row 1
Importation stopp�e.
Quelqu'un aurait une solution à mon problème ?
Etant en train de faire un site de gestion de publications, je souhaiterais intégrer une fonctionnalité qui me permettrait d'importer les données .csv (excel) sur MySQL.
J'ai donc mis dans mon code un <input type="file" name="nomFichier" action=$url /> ainsi que les autres "input" me permettant de parcourir les fichiers sur l'ordinateur client.
J'ai trouvé sur google des tutoriels me permettant de réaliser cette tâche. Quand je valide l'importation, ma fonction réalise ces commandes :
$fichier = $_FILES['nomFichier']['tmp_name'];
if (isset($_FILES['nomFichier'])) {
$fp = fopen("$fichier", "r");
while (!feof($fichier)){
$ligne = fgets($fichier,4096);
$liste = explode( ";",$ligne);
$titre = $liste[0];
$annee = $liste[1];
$query = "INSERT INTO publication VALUES('$titre','$annee')";
$result= MYSQL_QUERY($query);
if(mysql_error()) {
print "Erreur dans la base de donnees : ".mysql_error();
print "<br>Importation stoppee.";
}
else
print "$titre $annee <br>";
}
echo "<br>Importation terminée, avec succès.";
fclose($fichier);
}
Le problème c'est que aprés un long chargement, j'obtiens une longue liste d'erreurs:
Warning: feof(): supplied argument is not a valid stream resource in C:\wamp\www\Copie de joomla\mes_scripts\bdd.php on line 424
Warning: fgets(): supplied argument is not a valid stream resource in C:\wamp\www\Copie de joomla\mes_scripts\bdd.php on line 425
Erreur dans la base de donn�es : Column count doesn't match value count at row 1
Importation stopp�e.
Quelqu'un aurait une solution à mon problème ?
A voir également:
- Importation excel/BDD
- Liste déroulante excel - Guide
- Word et excel gratuit - Guide
- Si ou excel - Guide
- Déplacer colonne excel - Guide
- Excel trier par ordre croissant chiffre - Guide
2 réponses
J'ai réglé mon problème, juste une erreur de script :
function importer($url,$fichier) {
$fichier = fopen($_FILES['nomFichier']['tmp_name'], "r");
while (!feof($fichier)) {
$ligne = fgets($fichier, 1024);
$ligne = str_replace('"','',$ligne);
$tableauValeurs = explode(',', $ligne);
$sql="INSERT INTO bdlgi2a_publication(titre,annee) VALUES ('".$tableauValeurs[0]."', '".$tableauValeurs[1]."')";
$req=mysql_query($sql);
}
header("Location: ".$url);
}
Voila, ca servira peut-être a quelqu'un =)
function importer($url,$fichier) {
$fichier = fopen($_FILES['nomFichier']['tmp_name'], "r");
while (!feof($fichier)) {
$ligne = fgets($fichier, 1024);
$ligne = str_replace('"','',$ligne);
$tableauValeurs = explode(',', $ligne);
$sql="INSERT INTO bdlgi2a_publication(titre,annee) VALUES ('".$tableauValeurs[0]."', '".$tableauValeurs[1]."')";
$req=mysql_query($sql);
}
header("Location: ".$url);
}
Voila, ca servira peut-être a quelqu'un =)