add_shortcode("csv_upload_shortcode", "csv_upload_shortcode");
function csv_upload_shortcode(){
global $wpdb;
ob_start();
ini_set('max_execution_time',60);
set_time_limit(60);
$role = Check_RoleAndIsLogged($_SESSION["uid"],$_SESSION["is_logged"]);
// Table name
$tablename = $wpdb->prefix."text_table";
// Import CSV
if(isset($_POST['butimport'])){
echo "<script>alert('약 20초 소요됩니다. 잠시만 기다려주세요.')</script>";
ob_flush();
flush();
sleep(1);
// File extension
$extension = pathinfo($_FILES['import_file']['name'], PATHINFO_EXTENSION);
// If file extension is 'csv'
if(!empty($_FILES['import_file']['name']) && $extension == 'csv'){
$wpdb->query("TRUNCATE TABLE `{$tablename}`"); // 테이블 데이터 초기화
$totalInserted = 0;
// Open file in read mode
$csvFile = fopen($_FILES['import_file']['tmp_name'], 'r');
$row = 0;
while (($data = fgetcsv($csvFile)) !== FALSE) {
if($row == 0) { // 첫 행은 스킵
$row ++;
continue;
}
$wpdb->insert($tablename, array(
'containercode' =>trim($data[0]),
'code' =>trim($data[1]),
'description' =>trim($data[2]),
'itemstatus' =>trim($data[3]),
'statusdate' =>trim($data[4]),
'accountdescription' =>trim($data[5]),
'adddate' =>trim($data[6]),
'category_01' =>trim($data[7]),
'category_02' =>trim($data[8]),
'category_03' =>trim($data[9]),
));
$row++;
}
echo "<h5 style='color: green;'>Total record Inserted : ".($row-1)."</h5>";
fclose($csvFile);
}else{
echo "<h5 style='color: red;'>CSV 파일만 업로드 가능합니다.</h5>";
}
}
?>
<script>
<?php if($role != 'admin'){?>
alert('관리자 페이지입니다.');
window.history.back();
<?php }?>
</script>
<!-- Form -->
<p style="color:#d80202; margin-bottom:10px">* 업로드 전에 전체 리스트를 반드시 백업해주세요 ! *</p>
<form method='post' action='<?= $_SERVER['REQUEST_URI']; ?>' enctype='multipart/form-data'>
<input type="file" name="import_file" >
<input type="submit" name="butimport" value="Import">
</form>
<script type="text/javascript" src="https://code.jquery.com/jquery-1.12.4.min.js"></script>
<script>
// $(document).ready(function(){
// $("form").submit(function(event) {
// alert('확인 클릭 후 약 20초 소요됩니다. \n잠시만 기다려주세요.');
// });
// });
</script>
<?php
return ob_get_clean();
}
post 받았을시에 먼저 시간이 소요된다는 알림으로 시작하고 싶습니다.
버퍼가 채워지기 전에 먼저 출력하기 위해 ob_flush를 생각했는데 모두 insert된 후에 출력이 되네요.
insert 이루어지긴 전에 alert 방법이없을까요?
현재는 약 15초 정도 빈 화면에서 로딩만 이루어지고 이후에 알림과 함께 완료됩니다.
조언 부탁드립니다 :)
새해 복 많이받으세요 !
안녕하세요~^^
답변이 늦어 이미 해결하셨을지도 모르겠습니다.
실행을 해볼 수 없어 정확한 답변은 어렵지만
post를 확인하는 if문을 ob_start() 이전에 위치하고,
ob_start() 이전에 alert 코드를 작성해보시겠어요?
고맙습니다.