Problème code PHP
Résolu
Noune1310
Messages postés
7
Date d'inscription
Statut
Membre
Dernière intervention
-
Noune1310 Messages postés 7 Date d'inscription Statut Membre Dernière intervention -
Noune1310 Messages postés 7 Date d'inscription Statut Membre Dernière intervention -
Bonjour à tous,
J'au un petit souci avec un code en PHP. Je dois faire une petite appli qui importe des données à partir d'un fichier excel dans une base de données. J'ai donc commencer à faire ce bout de code :
<?php
// Test si le fichier a bien été envoyé et s'il n'y a pas d'erreur
if (isset($_FILES['fichiercsv']) AND $_FILES['fichiercsv']['error'] == 0)
{
// Test taille du fichier
if ($_FILES['fichiercsv']['size'] <= 2000000)
{
// Test extension autorisée
$infosfichier = pathinfo($_FILES['fichiercsv']['name']);
$extension_upload = $infosfichier['extension'];
$extensions_autorisees = array('csv');
if (in_array($extension_upload, $extensions_autorisees))
{
$fichiercsv = $_FILES['fichiercsv']['tmp_name'] ;
$i=0;
$fichier = fopen($fichiercsv, "r"); //Ouverture du fichier en mode lecture
//lecture ligne par ligne tant qu'on est pas à la fin du fichier
while (!feof($fichier))
{
$ligne = fgets($fichier, 1024); //Récupération de la ligne
$tableau[$i] = explode(';', $ligne); //Récupération des différentes valeurs trouvées dans une ligne
$i++;
}
fclose($fichier); // Fermeture du fichier
$nblignes=$i;
//print_r($tableau) ;
//Connexion à la base de données
try
{
$bdd = new PDO('mysql:host=localhost;dbname=donneesreporting', 'root', 'root');
}
catch (Exception $e)
{
die('Erreur : ' . $e->getMessage());
}
// print_r($tableau[1][5]);
// Les valeurs lues dans le fichier sont insérées dans la BD ligne par ligne
for ($i=1;$i<=$nblignes;$i++)
{
$v1=$tableau[$i][0];
$v2=$tableau[$i][1];
$v3=$tableau[$i][2];
$v4=$tableau[$i][3];
$v5=$tableau[$i][4];
$v6=$tableau[$i][5];
$v7=$tableau[$i][6];
$v8=$tableau[$i][7];
$v9=$tableau[$i][8];
$v10=$tableau[$i][9];
$v11=$tableau[$i][10];
$v12=$tableau[$i][11];
$v13=$tableau[$i][12];
$v14=$tableau[$i][13];
$v15=$tableau[$i][14];
$v16=$tableau[$i][15];
$v17=$tableau[$i][16];
$v18=$tableau[$i][17];
$v19=$tableau[$i][18];
$v20=$tableau[$i][19];
$v21=$tableau[$i][20];
$req = mysql_query("INSERT INTO piq VALUES ('$v1', '$v2', '$v3', '$v4', '$v5', '$v6', '$v7', '$v8', '$v9', '$v10', '$v11', '$v12', '$v13', '$v14', '$v15', '$v16', '$v17', '$v18', '$v19', '$v20', '$v21')");
}
// fermeture de la base de données
mysql_close("donneesreporting");
// Test requete
if ($req)
{ echo "Transfert effectué avec succes"; }
else
{ echo "Echec du transfert"; }
//echo "Importation effectuee avec succes" ;
}
else { echo "Mauvaise extension de fichier" ;}
}
else { echo "Fichier trop lourd" ;}
}
else
{
echo "Echec ouverture du fichier";
}
?>
Et lorsque je lance mon appli, après que l'utilisateur est choisis son fchier csv à import ca me dit : Notice: Undefined offset: 1 in C:\wamp\www\Reporting\cible_envoi.php on line 45
Et ca pour toutes mes lignes de 46 à 66 ...
je sais pas pourquoi, j'ai vérifié mon tableau se rempli bien je crois
Help me please !
J'au un petit souci avec un code en PHP. Je dois faire une petite appli qui importe des données à partir d'un fichier excel dans une base de données. J'ai donc commencer à faire ce bout de code :
<?php
// Test si le fichier a bien été envoyé et s'il n'y a pas d'erreur
if (isset($_FILES['fichiercsv']) AND $_FILES['fichiercsv']['error'] == 0)
{
// Test taille du fichier
if ($_FILES['fichiercsv']['size'] <= 2000000)
{
// Test extension autorisée
$infosfichier = pathinfo($_FILES['fichiercsv']['name']);
$extension_upload = $infosfichier['extension'];
$extensions_autorisees = array('csv');
if (in_array($extension_upload, $extensions_autorisees))
{
$fichiercsv = $_FILES['fichiercsv']['tmp_name'] ;
$i=0;
$fichier = fopen($fichiercsv, "r"); //Ouverture du fichier en mode lecture
//lecture ligne par ligne tant qu'on est pas à la fin du fichier
while (!feof($fichier))
{
$ligne = fgets($fichier, 1024); //Récupération de la ligne
$tableau[$i] = explode(';', $ligne); //Récupération des différentes valeurs trouvées dans une ligne
$i++;
}
fclose($fichier); // Fermeture du fichier
$nblignes=$i;
//print_r($tableau) ;
//Connexion à la base de données
try
{
$bdd = new PDO('mysql:host=localhost;dbname=donneesreporting', 'root', 'root');
}
catch (Exception $e)
{
die('Erreur : ' . $e->getMessage());
}
// print_r($tableau[1][5]);
// Les valeurs lues dans le fichier sont insérées dans la BD ligne par ligne
for ($i=1;$i<=$nblignes;$i++)
{
$v1=$tableau[$i][0];
$v2=$tableau[$i][1];
$v3=$tableau[$i][2];
$v4=$tableau[$i][3];
$v5=$tableau[$i][4];
$v6=$tableau[$i][5];
$v7=$tableau[$i][6];
$v8=$tableau[$i][7];
$v9=$tableau[$i][8];
$v10=$tableau[$i][9];
$v11=$tableau[$i][10];
$v12=$tableau[$i][11];
$v13=$tableau[$i][12];
$v14=$tableau[$i][13];
$v15=$tableau[$i][14];
$v16=$tableau[$i][15];
$v17=$tableau[$i][16];
$v18=$tableau[$i][17];
$v19=$tableau[$i][18];
$v20=$tableau[$i][19];
$v21=$tableau[$i][20];
$req = mysql_query("INSERT INTO piq VALUES ('$v1', '$v2', '$v3', '$v4', '$v5', '$v6', '$v7', '$v8', '$v9', '$v10', '$v11', '$v12', '$v13', '$v14', '$v15', '$v16', '$v17', '$v18', '$v19', '$v20', '$v21')");
}
// fermeture de la base de données
mysql_close("donneesreporting");
// Test requete
if ($req)
{ echo "Transfert effectué avec succes"; }
else
{ echo "Echec du transfert"; }
//echo "Importation effectuee avec succes" ;
}
else { echo "Mauvaise extension de fichier" ;}
}
else { echo "Fichier trop lourd" ;}
}
else
{
echo "Echec ouverture du fichier";
}
?>
Et lorsque je lance mon appli, après que l'utilisateur est choisis son fchier csv à import ca me dit : Notice: Undefined offset: 1 in C:\wamp\www\Reporting\cible_envoi.php on line 45
Et ca pour toutes mes lignes de 46 à 66 ...
je sais pas pourquoi, j'ai vérifié mon tableau se rempli bien je crois
Help me please !
A voir également:
- Problème code PHP
- Code ascii - Guide
- Code puk bloqué - Guide
- Code activation windows 10 - Guide
- Comment déverrouiller un téléphone quand on a oublié le code - Guide
- Code blocks - Télécharger - Langages
1 réponse
voir commentaires
<?php // Test si le fichier a bien été envoyé et s'il n'y a pas d'erreur if (isset($_FILES['fichiercsv']) AND $_FILES['fichiercsv']['error'] == 0) { // Test taille du fichier if ($_FILES['fichiercsv']['size'] <= 2000000) { // Test extension autorisée $infosfichier = pathinfo($_FILES['fichiercsv']['name']); $extension_upload = $infosfichier['extension']; $extensions_autorisees = array('csv'); if (in_array($extension_upload, $extensions_autorisees)) { $fichiercsv = $_FILES['fichiercsv']['tmp_name'] ; $i=0; $fichier = fopen($fichiercsv, "r"); //Ouverture du fichier en mode lecture //lecture ligne par ligne tant qu'on est pas à la fin du fichier while (!feof($fichier)) { $ligne = fgets($fichier, 1024); //Récupération de la ligne $tableau[$i] = explode(';', $ligne); //Récupération des différentes valeurs trouvées dans une ligne $i++; } fclose($fichier); // Fermeture du fichier $nblignes=$i; //print_r($tableau) ; //Connexion à la base de données try { $bdd = new PDO('mysql:host=localhost;dbname=donneesreporting', 'root', 'root'); } catch (Exception $e) { die('Erreur : ' . $e->getMessage()); } // print_r($tableau[1][5]); // Les valeurs lues dans le fichier sont insérées dans la BD ligne par ligne //$i commence à zéro dans ta boucle while de lecture du fichier et a la fin de boucle while $i vaut 1 de plus que le nombre de lignes donc il faut mieux boucler sur la taille réelle de $tableau for ($i=0;$i<sizeof($tableau);$i++) { $v1=$tableau[$i][0]; $v2=$tableau[$i][1]; $v3=$tableau[$i][2]; $v4=$tableau[$i][3]; $v5=$tableau[$i][4]; $v6=$tableau[$i][5]; $v7=$tableau[$i][6]; $v8=$tableau[$i][7]; $v9=$tableau[$i][8]; $v10=$tableau[$i][9]; $v11=$tableau[$i][10]; $v12=$tableau[$i][11]; $v13=$tableau[$i][12]; $v14=$tableau[$i][13]; $v15=$tableau[$i][14]; $v16=$tableau[$i][15]; $v17=$tableau[$i][16]; $v18=$tableau[$i][17]; $v19=$tableau[$i][18]; $v20=$tableau[$i][19]; $v21=$tableau[$i][20]; $req = mysql_query("INSERT INTO piq VALUES ('$v1', '$v2', '$v3', '$v4', '$v5', '$v6', '$v7', '$v8', '$v9', '$v10', '$v11', '$v12', '$v13', '$v14', '$v15', '$v16', '$v17', '$v18', '$v19', '$v20', '$v21')"); } // fermeture de la base de données mysql_close("donneesreporting"); // Test requete if ($req) { echo "Transfert effectué avec succes"; } else { echo "Echec du transfert"; } //echo "Importation effectuee avec succes" ; } else { echo "Mauvaise extension de fichier" ;} } else { echo "Fichier trop lourd" ;} } else { echo "Echec ouverture du fichier"; } ?>
Mais j'ai trouvé une solution j'ai changé ma solution de comptage de ligne par :
$nblignes=$i-1;
Cela fonctionne.
Merci pour votre aide !
Bonne soirée