0

PHPEXCEL を使用して Excel シートを mysql DB に挿入しようとしています。私は php PDO の初心者です。以下のコードを使用しています。

<?PHP
    if (isset($_FILES["file"]))
      {
    $info_file_exts = array("csv", "xls", "xlsx");
    $info_upload_exts = end(explode(".", $_FILES["file"]["name"]));
    if ((($_FILES["file"]["type"] == "Excel/csv")
    || ($_FILES["file"]["type"] == "Excel/xls")
    || ($_FILES["file"]["type"] == "Excel/xlsx")

    )

    && in_array($info_upload_exts, $info_file_exts))

    if ($_FILES["file"]["error"] > 0)
    {
    echo "Return Code: " . $_FILES["file"]["error"] . "<br>";
    }
    else
    {
    $info_file_exts = array("csv", "xls", "xlsx");
    if($info_file_exts[0]=='csv'){
    $ink=explode('.'.$info_file_exts[0],$_FILES["file"]["name"]);
    $time=time();
    $info_new_file_name =$ink[0].'_'.$time.'.'.$info_file_exts[0];
    }
    else if($info_file_exts[1]=='xls')
    {
    $ink=explode('.'.$info_file_exts[1],$_FILES["file"]["name"]);
    $time=time();
    $info_new_file_name =$ink[0].'_'.$time.'.'.$info_file_exts[0];
    }
    else if($info_file_exts[2]=='xlsx')
    {
    $ink=explode('.'.$info_file_exts[2],$_FILES["file"]["name"]);
    $time=time();
    $info_new_file_name =$ink[0].'_'.$time.'.'.$info_file_exts[0];
    }

    }

    $path = ($_FILES["file"]["tmp_name"]);
    $objPHPExcel = PHPExcel_IOFactory::load($path);
    foreach ($objPHPExcel->getWorksheetIterator() as $worksheet) 
    {
         $worksheetTitle = $worksheet->getTitle();
         $highestRow = $worksheet->getHighestRow(); // e.g. 10
         $highestColumn = $worksheet->getHighestColumn(); // e.g 'F'
         $highestColumnIndex = PHPExcel_Cell::columnIndexFromString($highestColumn);
    }
    $nrColumns = ord($highestColumn) - 64;
    echo "File ".$worksheetTitle." has ";
    echo $nrColumns . ' columns';
    echo ' y ' . $highestRow . ' rows.';
    echo 'Data: <table width="100%" cellpadding="3" cellspacing="0"><tr>';
    for ($row = 1; $row <= $highestRow; ++ $row)
     {
       echo '<tr>';
       for ($col = 0; $col < $highestColumnIndex; ++ $col)
        {
           $cell = $worksheet->getCellByColumnAndRow($col, $row);
           $val = $cell->getValue();
           if($row === 1)
                echo '<td style="background:#000; color:#fff;">' . $val . '</td>';
           else
               echo '<td>' . $val . '</td>';
       }
    echo '</tr>';
    }
    echo '</table>';
    for ($row = 2; $row <= $highestRow;  ++$row) 
    {
    $val=array();
    for ($col = 0; $col < $highestColumnIndex; ++ $col)
     {
        $cell = $worksheet->getCellByColumnAndRow($col, $row);
        $val[] = $cell->getValue();

    }
    $email=$val[0];
    $pass= $val[1];
    $sql="insert into users (email, password) VALUES (:email,:pass)";
    $q = $conn->prepare($sql);
    $q->execute(array(':email'=>$email,':pass'=>$pass));
    }
       ?>

    <div style="width: 500px; margin: 200px auto 0 auto;">
    <form action="display.php" method="post" enctype="multipart/form-data" >
    <label for="file">Filename: </label>
    <input type="file" name="file" id="file"><br>
    <input type="submit" name="submit" value="Submit" style="margin-left:90PX">
    </form>

    </div>

このコードは正常に動作しますが、追加された行数を数えたいですか? 、関数を使用しようとしましrowCount()たが、挿入ごとに出力が返されます。すべての挿入タスクで使用したいのですが、ユーザーが送信ボタンを複数回クリックするとエラーが表示されます。どうすれば修正できますか?

4

0 に答える 0