Message d'erreur dans mon code php = Undefined off

Fermé
garrix_du77 Messages postés 52 Date d'inscription samedi 21 mai 2016 Statut Membre Dernière intervention 4 janvier 2024 - Modifié le 11 août 2018 à 17:29
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 - 11 août 2018 à 17:51
Bonjour , alors j'ai un petit soucis lors de l'importation d'un fichier CSV vers ma Base de donnés en utilisant PhpMyAdmin ! sauf que je rencontre à chaque fois des erreurs .

je vous passe mon code PHP :
<?php 
$conn = new mysqli ("localhost","root","","csv_db") or die(mysql_error());
if (isset($_POST['Import']))
{
 $File= $_FILES['file'] ['tmp_name'];
 $handle = fopen($File, "r");

 while(($Fileop = fgetcsv($handle,1000,",")) !== false)
 {
  $id = $Fileop[0];
  $type = $Fileop[1];
  $pourcentage = $Fileop[2];
  $commentaire = $Fileop[3];
  $date = $Fileop[4]; 

$sql = mysql_query("INSERT INTO test (id , type , pourcentage ,commentaire, date) VALUES ('$id','$type','$pourcentage','$commentaire','$date')");
 }
 if ($sql)
 {
  echo 'Data Uploaded successfully';
 }
}
?>


les message d'erreur sont :

Notice: Undefined offset: 1 in C:\Program Files (x86)\EasyPHP-Devserver-17\eds-www\Importation Code\LastVersion.php on line 11

Notice: Undefined offset: 2 in C:\Program Files (x86)\EasyPHP-Devserver-17\eds-www\Importation Code\LastVersion.php on line 12

Notice: Undefined offset: 3 in C:\Program Files (x86)\EasyPHP-Devserver-17\eds-www\Importation Code\LastVersion.php on line 13

Notice: Undefined offset: 4 in C:\Program Files (x86)\EasyPHP-Devserver-17\eds-www\Importation Code\LastVersion.php on line 14

Deprecated: mysql_query(): The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead in C:\Program Files (x86)\EasyPHP-Devserver-17\eds-www\Importation Code\LastVersion.php on line 16

Notice: Undefined offset: 1 in C:\Program Files (x86)\EasyPHP-Devserver-17\eds-www\Importation Code\LastVersion.php on line 11

Notice: Undefined offset: 2 in C:\Program Files (x86)\EasyPHP-Devserver-17\eds-www\Importation Code\LastVersion.php on line 12

Notice: Undefined offset: 3 in C:\Program Files (x86)\EasyPHP-Devserver-17\eds-www\Importation Code\LastVersion.php on line 13

Notice: Undefined offset: 4 in C:\Program Files (x86)\EasyPHP-Devserver-17\eds-www\Importation Code\LastVersion.php on line 14
A voir également:

1 réponse

jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649
11 août 2018 à 17:46
Bonjour

Déjà...Tu n'utilises pas phpmyadmin pour faire ton import..... tu utilises du code php pour faire l'import dans une bdd mysql

Ensuite... certains des messages sont des plus explicites... et une brève recherche sur le net (ou même sur ce forum) aurait pu te donner toutes les réponses nécessaires...

Pour commencer :

Deprecated: mysql_query(): The mysql extension is deprecated and will be removed in the future: use mysqli or PDO

Donc.. passe à PDO ou mysqli et tu n'auras plus cette erreur....
https://www.commentcamarche.net/faq/43261-php-l-extension-mysql-est-obsolete#top

c'est visiblement ce que tu as essayé de faire
$conn = new mysqli ("localhost","root","","csv_db") or die(mysql_error());

mais tu as laissé de vielles instructions mysql_ dans ton code...
Il ne faut pas changer QUE la connexion... mais aussi tous les autres appels !


Ensuite, je vois que tu utilises la variable $_FILES ....
cela sous-entends que tu fais un move_upload_file pour récupérer le fichier sur le serveur avant de pouvoir t'en servir....... (tu trouveras de nombreux exemples sur le net qui expliquent comment procéder )


Et enfin....

Notice: Undefined offset

C'est ce qui se produit lorsque ta variable $Fileop ne contient qu'une seule valeur.....
Tu peux t'en prémunir en vérifiant que ta variable est bien un array
un truc du genre
$ligne = 0;
while(($Fileop = fgetcsv($handle,1000,",")) !== false)  {
  $ligne++; // pour savoir à quelle ligne tu es..
  if(count($Fileop)>=5 ){
     $id = $Fileop[0];
     $type = $Fileop[1];
     $pourcentage = $Fileop[2];
     $commentaire = $Fileop[3];
     $date = $Fileop[4]; 
    
     //ici le code d'insertion en mysqli 
     // ...

   } else{
      echo "<br> La ligne ".$ligne . "ne contient que " . count($Fileop) . "valeurs... ";
  }




Au passage... je t'invite vivement à lire (et à appliquer ) tous les conseils donnés ici :
https://forums.commentcamarche.net/forum/affich-37584947-php-gestion-des-erreurs-debogage-et-ecriture-du-code
.

0
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649
11 août 2018 à 17:51
Hey... tu te moques de nous en plus....
Tu as créés au moins 5 discussions pour le même souci...
Dans l'une d'elle... je t'ai déjà corrigé le code concernant mysqli ...
https://forums.commentcamarche.net/forum/affich-35517827-import-fichier-csv-to-phpmyadmin

N'es tu pas capable de faire de simples copier/coller et ensuite d'adapter à ton besoin ????
0