2017-01-21 5 views
0

ExcelのコンテンツをMYSQLデータベースにアップロードするWebサイトがあります。問題は、無視したい行間にギャップがあることです。ExcelをMySqlデータベースにアップロードするときに行を除外する

これは、これは私のPHPコードです....例として

Gap thar stars on line 307 and ends in 312

です:でなければならないの列で

<?php 
session_start(); 
include("excel/Classes/PHPExcel/IOFactory.php"); 

$connect = mysqli_connect("","","", ""); 

$ficheiro = $_FILES['fileToUpload']; 

$objPHPExcel = PHPExcel_IOFactory::load($ficheiro['tmp_name']); 

foreach ($objPHPExcel->getWorksheetIterator() as $worksheet){ 

    $highestRow = $worksheet->getHighestRow(); 
    for($row=34; $row<=306; $row++) //I have this for but I want to exclude those lines 

    { 
     $worksheet->getCellByColumnAndRow(2,$row)->getValue(); 
     $nif = mysqli_real_escape_string($connect, $worksheet->getCellByColumnAndRow(0,$row)->getValue()); 
     $MarcaExploracao = mysqli_real_escape_string($connect, $worksheet->getCellByColumnAndRow(1,$row)->getValue()); 
     $NumeroChip = mysqli_real_escape_string($connect, preg_replace('/[^0-9]/','',$worksheet->getCellByColumnAndRow(2,$row)->getValue())); 
     $Number = ltrim($NumeroChip,'0'); 
     $MarcaAuricular = mysqli_real_escape_string($connect, $worksheet->getCellByColumnAndRow(3,$row)->getValue()); 
     $Data_Nascimento = mysqli_real_escape_string($connect, $worksheet->getCellByColumnAndRow(4,$row)->getValue()); 
     $ano = substr($Data_Nascimento,0,6); 
     $anoValido = preg_replace('/[^0-9]/', '', $ano); 
     $idade = date('Y')-$anoValido; 
     //$unixDate = ($Data_Nascimento - 25569) * 86400; 
     //$Data_Nascimento = gmdate("Y-m-d", $unixDate); 
     $sql = "INSERT INTO animal(NIF,MarcaExploracao,numerochip,MarcaAuricular,Data_Nascimento,id_utilizador,ano,idade) VALUES(".$nif.", '".$MarcaExploracao."', '".$Number."', '".$MarcaAuricular."', '".$Data_Nascimento."',{$_SESSION['id_utilizador']},'".$anoValido."','".$idade."')"; 
     mysqli_query($connect,$sql); 


    } 
} 
?> 
    <script> 
    alert("Excel adicionado"); 
    self.location="InserirOvelhas.php"; 
    </script> 
+0

@RiggsFollyあなたは私を助けることができますか? – Jose

答えて

1

だから、1つ(またはそれ以上)のためのテストを追加あなたのループに設定して、を使って、forループの次のインデックスにジャンプするようにしてください。

<?php 
session_start(); 
include("excel/Classes/PHPExcel/IOFactory.php"); 

$connect = mysqli_connect("","","", ""); 

$ficheiro = $_FILES['fileToUpload']; 

$objPHPExcel = PHPExcel_IOFactory::load($ficheiro['tmp_name']); 

foreach ($objPHPExcel->getWorksheetIterator() as $worksheet){ 

    $highestRow = $worksheet->getHighestRow(); 
    for($row=34; $row<=332; $row++) { 
     //I have this for but I want to exclude those lines 
     // looks like a line that should not exist 
     //$worksheet->getCellByColumnAndRow(2,$row)->getValue(); 

     // ignore rows 
     if ($row > 306 && $row < 312) { 
      continue; 
     } 

     if ($worksheet->getCellByColumnAndRow(0,$row)->getValue() == '') { 
      continue; // go to next for 
     } 


     $nif = mysqli_real_escape_string($connect, $worksheet->getCellByColumnAndRow(0,$row)->getValue()); 
     $MarcaExploracao = mysqli_real_escape_string($connect, $worksheet->getCellByColumnAndRow(1,$row)->getValue()); 
     $NumeroChip = mysqli_real_escape_string($connect, preg_replace('/[^0-9]/','',$worksheet->getCellByColumnAndRow(2,$row)->getValue())); 
     $Number = ltrim($NumeroChip,'0'); 
     $MarcaAuricular = mysqli_real_escape_string($connect, $worksheet->getCellByColumnAndRow(3,$row)->getValue()); 
     $Data_Nascimento = mysqli_real_escape_string($connect, $worksheet->getCellByColumnAndRow(4,$row)->getValue()); 
     $ano = substr($Data_Nascimento,0,6); 
     $anoValido = preg_replace('/[^0-9]/', '', $ano); 
     $idade = date('Y')-$anoValido; 
     //$unixDate = ($Data_Nascimento - 25569) * 86400; 
     //$Data_Nascimento = gmdate("Y-m-d", $unixDate); 
     $sql = "INSERT INTO animal(NIF,MarcaExploracao,numerochip,MarcaAuricular,Data_Nascimento,id_utilizador,ano,idade) VALUES(".$nif.", '".$MarcaExploracao."', '".$Number."', '".$MarcaAuricular."', '".$Data_Nascimento."',{$_SESSION['id_utilizador']},'".$anoValido."','".$idade."')"; 
     mysqli_query($connect,$sql); 


    } 
} 
?> 
+0

34から306へ、313から332へ、私はこのコードにどのように入れたいのですか? if($ worksheet-> getCellByColumnAndRow(0、$ row) - > getValue()== '){ ; // の次へ行く – Jose

+0

私はもう1つを追加しました。処理したくない行を無視してforループターミネーターの値を変更しました – RiggsFolly

+0

多くのありがとうございました:) – Jose

関連する問題