2017-07-26 28 views
3

要約:/var/tmp複数のExcelファイルにアップロードしてから.csv(.xlsと.xlsxの2種類のコンバータ)に変換しています。結果ファイルresult.csvをデータベースに挿入する必要があります。 が複数のファイルを同時にアップロードできるようになるまでは、すべて(html入力タグに複数の属性を追加すること)になっていました。 問題:テーブルに挿入されていないデータ別のPHPファイルから関数を呼び出す方法は?

<?php 
// database connection goes here; 
include 'convertt2a.php'; 
if (isset($_POST["submit"])) { 
$updir = "/var/tmp/result.xlsx"; 
$n= count($_FILES['rawexcel']['name']); 
for ($i=0; $i<$n; $i++) { 
$upfile = $updir.basename($_FILES['rawexcel']['name'][$i]); 
$ext = pathinfo ($_FILES['rawexcel']['name'][$i], PATHINFO_EXTENSION); 
if(is_uploaded_file ($_FILES ["rawexcel"]["tmp_name"][$i])) 
{ 
move_uploaded_file ($_FILES["rawexcel"]["tmp_name"][$i], $updir); 
if ($ext == 'xlsx') { exec("/usr/local/bin/cnvt /var/tmp/result.xlsx  /var/tmp/result.csv "); } else 
if ($ext == 'xls') { exec("/usr/local/bin/xls2csv -x /var/tmp/result.xls* -b WINDOWS-1251 -c /var/tmp/result.csv -a UTF-8"); } 
echo "File successfully uploaded and converted to .csv "; 
    } 
else { 
echo "error uploading file ".$upfile;} 

if (isset($_POST['provider'])) { 
//select action to perform on case of different providers 
if ($_POST['provider']=='tele2altel'){echo t2a("tele2");} 
} 
echo "cycle ".$i."ended here; </br>"; 
}} 
else {echo "not isset post method";} 
    ?> 

T2A機能:

function t2a ($string){ 

//opening .csv file, inserting into table in SAMPLEBANK TELE2ALTEL 
$row =0; 
if (($handle = fopen("/var/tmp/result.csv", "r"))!==FALSE){ 
while (($data = fgetcsv($handle, 1000, ","))!==FALSE) { 
$row ++; 
//we got data in $data[$i] array 
if ($row==4) {$idb=$data[2];} 
if ($row >6) { 
$da=$data[0]; $imei = $data[1]; $ab=$data[2];$ty = NULL; 
$du=$data[6]; $op = $data[3];$dir =$data[5]; 
$num= strlen($dir); 
if ($num>=28) {$ty= $dir; $dir=NULL;} 
if ($ab!==''){ 
$sql= "INSERT INTO tele2altel(Abonent,Opponent, Type, Data, Duration,  idBase, IMEI,direction) 
values ('$ab','$op','$ty','$da','$du', '$idb','$imei','$dir')"; 
$res = mysqli_query($conn, $sql);} 
}} 
fclose($handle); 
} else {echo "unable to read file";} 
$s = "Successfully inserted into DB"; 
return $s; 
} 

マイ出力:正常にアップロード ファイルと私はここで終了

サイクルを.csvに変換。

に成功DBに挿入

、I回(アップロードするファイルの数)

私は、彼らが正しく変換されて、seapartelyの.csvファイルをチェックしています。したがって、エラーは機能しています。私はどんな助けにも感謝します。

+0

プリペアドステートメントの使用については、CSVに関する多くの問題を解決し、あらゆる種類のデータをバインドすることができます。また、セキュリティにとっても優れています。 –

答えて

2

であるべきな作業にこのコードのために必要だったものは、タイプの明確化でした関数の返品について:

function t2a ($string):string {} 

が問題を解決しました。

1

別のファイルを含めます。

<?php include('yourfilename'); ?> 
+0

私はこれを行いました: には 'convertt2a.php'が含まれています。 それは私の機能t2aが置かれているファイルです – upicik

+0

あなたはhtmlをどうぞ。 –

1

私は以下の行が間違ったファイルを開いていると思う...

fopen("/var/tmp/result.xlsx", "r") 

fopen("/var/tmp/result.csv", "r") 
関連する問題