AJAX PHP MySQL CSV
Uploading a CSV file via a web form to populate a MySQL table with Ajax and PHP.
html
<div> <form class="form-inline" name="csv_form" id="csv_form" action="#" onsubmit="uploadCSV(this.id, 'DEST_PAGE.php?');" method="post" enctype="multipart/form-data"> <fieldset> <label class="btn btn-default btn-file"> <input name="csv_file" id="csv_file" type="file" /> <input type="hidden" id="campname" name="campname" value="{{campname}}" /> <div class="radio"> <label> <input type="radio" id="newline" name="newline" value="\n">unix</label> </div> <div class="radio"> <label> <input type="radio" id="newline" name="newline" value="\r\n">dos</label> </div> <div class="radio"> <input type="submit" class="btn btn-success btn-sm glyphicon glyphicon-upload" name="csv" id="csv" value="upload" /> </div> </label> </fieldset> </form> </div>
javascript (jquery)
function uploadCSV(id, dst) { var getdata = $('#' + id).serialize(); var file_data = $('#csv_file').prop('files')[0]; var form_data = new FormData(); form_data.append('file', file_data); $.ajax({ url: dst + getdata, dataType: 'text', cache: false, contentType: false, processData: false, data: form_data, type: 'post', success: function(data) { alert(data); } }); }
php
if (isset($_GET['newline'])) { $nl = $_GET['newline']; } else { $nl = '\r\n'; } if (0 < $_FILES['file']['error']) { echo 'Error: ' . $_FILES['file']['error'] . '<br>'; } else { $campname = $_GET['campname']; $path = getcwd(); move_uploaded_file($_FILES['file']['tmp_name'], 'csv/' . $campname . '.csv'); $sql = $mysqli->query("LOAD DATA INFILE '$path/csv/$campname.csv' IGNORE INTO TABLE numbers CHARACTER SET UTF8 FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '\"' LINES TERMINATED BY '$nl' (`number`, `last_name`, `name`, `middle_name`, `born`) set `camp` = '$campname', `status` = 'NOANS'"); }
Только авторизованные участники могут оставлять комментарии.