2017-05-07 2 views
0

Ceci est mon code. il montremon code télécharger le fichier csv mais pendant que j'essaye de télécharger le fichier .xls il montre l'erreur de décalage à la ligne 21 et 31

Indication: Undefined offset: 1 in C: \ wamp \ www \ Portal \ importData.php sur la ligne 31

le décalage indéfini: commence de 1 à 7 et cette erreur est signalée à la ligne 31 et 21

Avertissement: Impossible de modifier les informations d'en-tête - les en-têtes déjà envoyés par (sortie démarrée à C: \ wamp \ www \ Portal \ importData.php: 31) dans C: \ wamp \ www \ Portal \ importData.php en ligne 53

<?php 
//load the database configuration file 
//include 'dbConfig.php'; 
include 'dbconnect.php'; 
if(isset($_POST['importSubmit'])){ 

//validate whether uploaded file is a csv file 
$csvMimes = array('text/x-comma-separated-values', 'text/comma-separated-values', 'application/octet-stream', 'application/vnd.ms-excel', 'application/x-csv', 'text/x-csv', 'text/csv', 'application/csv', 'application/excel', 'application/vnd.msexcel', 'text/plain'); 
if(!empty($_FILES['file']['name']) && in_array($_FILES['file']['type'],$csvMimes)){ 
    if(is_uploaded_file($_FILES['file']['tmp_name'])){ 

     //open uploaded csv file with read only mode 
     $csvFile = fopen($_FILES['file']['tmp_name'], 'r'); 

     //skip first line 
     fgetcsv($csvFile); 

     //parse data from csv file line by line 
     while(($line = fgetcsv($csvFile)) !== FALSE){ 
      //check whether member already exists in database with same email 
      $prevQuery = "SELECT id FROM salesreport WHERE IMEINo = '".$line[4]."'"; 
      // $prevResult = $con->query($prevQuery); 
      $prevResult = mysqli_query($con,$prevQuery); 
      $count = mysqli_num_rows($prevResult); 
      echo $count; 
      // if($prevResult->num_rows > 0) 


      if($count > 0){ 
       //update member data 
       $con->query("UPDATE salesreport SET invoiceno = '".$line[0]."', Date = '".$line[1]."', Country = '".$line[2]."', NDCode = '".$line[3]."', Model = '".$line[6]."', Quantity = '".$line[7]."' WHERE IMEINo = '".$line[4]."'"); 
      } 
      else{ 
       //insert member data into database 
       $con->query("INSERT INTO salesreport (invoiceno, Date, Country, NDCode, IMEINo, Model, Quantity) VALUES ('".$line[0]."','".$line[1]."','".$line[2]."','".$line[3]."','".$line[4]."','".$line[6]."','".$line[7]."')"); 
      } 
     } 

     //close opened csv file 
     fclose($csvFile); 

     $qstring = '?status=succ'; 
    }else{ 
     $qstring = '?status=err'; 
    } 
}else{ 
    $qstring = '?status=invalid_file'; 
} 
} 


//redirect to the listing page 
header("Location: Upload_Sale_To_Distributor.php".$qstring); 

?> 

Répondre

0

Contrairement aux fichiers csv qui sont généralement des fichiers séparés par des virgules/délimiteurs en clair, les fichiers Excel sont des fichiers xml archivés. Pour lire les données à partir d'un fichier Excel, vous devez utiliser des plugins tiers comme

  1. PHPExcel
  2. Spreadsheet_Excel_Reader

Il ne sera pas analysé par fgetcsv depuis le fichier non sous forme standard csv.

+0

Dans cette morue comment puis-je intégrer ces plugins. –

+0

visitez les liens que j'ai mentionnés. Il existe une documentation appropriée sur la façon d'utiliser ces plugins. Vous devez inclure leurs classes, puis utiliser ces classes pour ouvrir et analyser les fichiers Excel. PHPExcel a déjà quelques bons exemples qui ont déjà résolu votre problème. Vérifiez simplement leur dossier ** Examples ** dans leur repo. – mohdluqman

+0

J'ai vu l'exemple et le document mais il importe seulement le fichier automatiquement et le fichier est téléchargé par la ligne $ inputfilename = 'example_file.xlsx'; par exemple. . Mais je veux obtenir le fichier xlsx de l'utilisateur. Comment puis je faire ça. –