⚝
One Hat Cyber Team
⚝
Your IP:
192.168.31.6
Server IP:
192.168.1.11
Server:
Linux pams 6.1.0-29-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.123-1 (2025-01-02) x86_64
PHP Version:
8.2.28
Buat File
|
Buat Folder
Upload File
Eksekusi
Dir :
~
/
var
/
www
/
apik
/
modules
/
Transaksi
/
Views
/
Viewing : sync.php
<div class="d-flex justify-content-between align-items-sm-center flex-column flex-sm-row mb-3"> <div class="me-4 mb-3 mb-sm-0"> <h1 class="mb-0"><?=$title?></h1> </div> </div> <div class="row"> <div class="col-12 mb-4"> <div class="card border-start-lg border-start-primary h-100 card card-header-actions"> <div class="card-header"> <div class="card-tools"> <a class="btn btn-warning btn-sm" onclick="sync()">Start</a> </div> </div> <div class="card-body"> <table id="myTable" class="table table-striped table-bordered" style="width:100%; text-align: center;"> <thead> <tr> <th>No</th> <th>Data</th> <th>Start</th> <th>End</th> <th>Status</th> </tr> </thead> <tbody> <?php $no =1; foreach ($tr as $k) { echo '<tr> <td>'.$no++.'</td> <td>Data Ke-'.$k['data'].'</td> <td>'.$k['start'].'</td> <td>'.$k['end'].'</td> <td>-</td> </tr>'; } ?> </tbody> </table> </div> </div> </div> </div> <script type="text/javascript"> $(document).ready(function(){ }) async function sync() { // 1. Ambil semua baris dari body tabel const rows = $('#myTable tbody tr'); // Loop menggunakan for...of agar bisa menggunakan 'await' for (let i = 0; i < rows.length; i++) { const row = $(rows[i]); // 2. Ambil data dari kolom (index dimulai dari 0) // Kolom 1: No, 2: Data, 3: Start, 4: End, 5: Status const dataName = row.find('td:eq(1)').text(); const startVal = row.find('td:eq(2)').text(); const endVal = row.find('td:eq(3)').text(); const statusCell = row.find('td:eq(4)'); // Kolom Status // 3. Update UI: Tandai sedang diproses statusCell.html('<span class="badge bg-warning text-dark">Processing...</span>'); row.addClass('table-warning'); // Beri warna pada baris yang sedang aktif try { // 4. Kirim Data via AJAX await $.ajax({ url: '<?= base_url("transaksi/prosesSync") ?>', // Sesuaikan URL controller Anda method: 'POST', dataType: 'JSON', data: { nama: dataName, start: startVal, end: endVal, order : 'tgl' }, success: function(d) { console.log(d); statusCell.html('<span class="badge bg-success">Success (Input : '+d.count.input+', Update : '+d.count.update+' )</span>'); row.removeClass('table-warning').addClass('table-success'); }, error: function() { // Update Status jadi Error statusCell.html('<span class="badge bg-danger">Error</span>'); row.removeClass('table-warning').addClass('table-danger'); } }); } catch (err) { console.error("Gagal memproses baris ke-" + (i+1)); } // 5. Jeda 2 detik sebelum lanjut ke baris berikutnya // Kita tidak ingin jeda di baris terakhir if (i < rows.length - 1) { await new Promise(resolve => setTimeout(resolve, 2000)); } } alert('Sinkronisasi Selesai!'); } </script>