Sabtu, 07 Mei 2022

PDF to TEXT

 <?php
$time_start = microtime_float();

$doc="ypathfile/Kejuaraan-Nasional-Karate-Piala-Panglima-TNI-III-2014.pdf";
$ada=strpos($doc,".txt")+0;


require_once __DIR__ . '/vendor/autoload.php';
$isidoc="";

if(strpos($doc,".txt")>0){
$fh = fopen($doc,'r');
while ($line = fgets($fh)) {
$isidoc.=$line;
}
fclose($fh);
    }

else{//pdf
$initop = new \Smalot\PdfParser\Parser();
$ekstrakpdf = $initop->parseFile($doc);
$isidoc= $ekstrakpdf->gettext();
    }

$initos = new \Sastrawi\Stemmer\StemmerFactory();
$bikinos = $initos->createStemmer();
$stemming=$bikinos->stem($isidoc);
echo"Isi Doc=$isidoc<hr>";
echo"Stemming=$stemming<hr>";

 

$time_end = microtime_float();
$waktu = $time_end - $time_start;


function microtime_float(){
    list($usec, $sec) = explode(" ", microtime());
   return ((float)$usec + (float)$sec);
}

?>

Bonus Normalisasi Text:

 <?php

function getBersih($var){	
$var = mb_convert_encoding($var, 'UTF-8', 'UTF-8');
$var = preg_replace('/\xE0[\x80-\x9F][\x80-\xBF]'.
 '|\xED[\xA0-\xBF][\x80-\xBF]/S','?', $var );
 
 $var = preg_replace('/[\x00-\x08\x10\x0B\x0C\x0E-\x19\x7F]'.
 '|[\x00-\x7F][\x80-\xBF]+'.
 '|([\xC0\xC1]|[\xF0-\xFF])[\x80-\xBF]*'.
 '|[\xC2-\xDF]((?![\x80-\xBF])|[\x80-\xBF]{2,})'.
 '|[\xE0-\xEF](([\x80-\xBF](?![\x80-\xBF]))|(?![\x80-\xBF]{2})|[\x80-\xBF]{3,})/S',
 '?', $var );
return $var;
}
function getNorm($konten){
	$konten=getBersih($konten);
	$konten = iconv("UTF-8", "UTF-8//IGNORE", $konten);
	$konten=strtolower("$konten");
	$konten = mb_convert_encoding($konten, 'UTF-8', 'UTF-8');
			
require_once __DIR__ . '/vendor/autoload.php';
$initos = new \Sastrawi\Stemmer\StemmerFactory();
$bikinos = $initos->createStemmer();
$stemming=$bikinos->stem($konten);
$stemmingnew=strtolower($stemming);

$ak=getStopNumber();
$ar=getStopWords();
$wordStop=$stemmingnew;
for($i=0;$i<count($ar);$i++){
 $wordStop =str_replace(" ".$ar[$i]." "," ", $wordStop); 
}

for($i=0;$i<count($ak);$i++){
 $wordStop =str_replace($ak[$i],"", $wordStop); 
}

$juduluji=str_replace("  "," ", $wordStop); 
$juduluji=str_replace("  "," ", $wordStop); 
$juduluji=str_replace("  "," ", $wordStop); 

//=====================================================	
 $stemming=$juduluji;
 $arAsli=explode(".",$stemming);
 $arr=explode(" ",$stemming);
 $unique = array_unique($arr); 
 $dupes = array_diff_key( $arr, $unique ); 
 //$m=array_count_values($dupes); 

 $gab= implode(" ",$unique)
 return trim($gab);
}
 
function getStopWords(){
        return array(
            'yang', 'untuk', 'pada', 'ke', 'para', 'namun', 'menurut', 'antara', 'dia', 'dua',
            'ia', 'seperti', 'jika', 'jika', 'sehingga', 'kembali', 'dan', 'tidak', 'ini', 'karena',
            'kepada', 'oleh', 'saat', 'harus', 'sementara', 'setelah', 'belum', 'kami', 'sekitar',
            'bagi', 'serta', 'di', 'dari', 'telah', 'sebagai', 'masih', 'hal', 'ketika', 'adalah',
            'itu', 'dalam', 'bisa', 'bahwa', 'atau', 'hanya', 'kita', 'dengan', 'akan', 'juga',
            'ada', 'mereka', 'sudah', 'saya', 'terhadap', 'secara', 'agar', 'lain', 'anda',
            'begitu', 'mengapa', 'kenapa', 'yaitu', 'yakni', 'daripada', 'itulah', 'lagi', 'maka',
            'tentang', 'demi', 'dimana', 'kemana', 'pula', 'sambil', 'sebelum', 'sesudah', 'supaya',
            'guna', 'kah', 'pun', 'sampai', 'sedangkan', 'selagi', 'sementara', 'tetapi', 'apakah',
            'kecuali', 'sebab', 'selain', 'seolah', 'seraya', 'seterusnya', 'tanpa', 'agak', 'boleh',
            'dapat', 'dsb', 'dst', 'dll', 'dahulu', 'dulunya', 'anu', 'demikian', 'tapi', 'ingin',
            'juga', 'nggak', 'mari', 'nanti', 'melainkan', 'oh', 'ok', 'seharusnya', 'sebetulnya',
            'setiap', 'setidaknya', 'sesuatu', 'pasti', 'saja', 'toh', 'ya', 'walau', 'tolong',
            'tentu', 'amat', 'apalagi', 'bagaimanapun'
        );
    }


function getStopNumber(){
        return array(
            '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '!', '@', '#', '$', '%'
        );
    }
 
 
 
function getUnix($array){
error_reporting(0);
$unique = array_flip(array_flip($array));
//print_r($unique);
$jd=count($array);
//echo $jd."#<br>";
$m=0;
for($i=0;$i<$jd;$i++){
 if(strlen($unique[$i])>0){
  //echo "$m =".$unique[$i]."<br>";
  $M[$m]=$unique[$i];
  $m++;
 }
}
 return $M;
}
?>



Kamis, 17 Maret 2022

TextArea Online

  <script src='https://cdn.tiny.cloud/1/gtchaymz2iqbfj7hkc7qv2n43wqxr2js4rbdd32u5nhyoecm/tinymce/5/tinymce.min.js' referrerpolicy="origin">

  </script>

  <script>

    tinymce.init({

      selector: '#mytextarea'

    });

  </script>

Jumat, 11 Maret 2022

JS DOM

 <form name="myForm">

<p id="demo"></p>

<input type="text" id="demoJS">

</form>




<script>

document.getElementById("demo").innerHTML = "Hello JavaScript!";

document.getElementById("demoJS").value = "Hello JavaScript!";

var isian = document.myForm.demoJS.value;

console.log('ISI:', isian);

</script> 

Current time is <span id="show_date"></span>

<script>

var show_date = document.getElementById("show_date");

var current_date = new Date();

var date = `${current_date.getHours()}:${current_date.getMinutes()}`;

show_date.innerHTML = date;

</script>




Senin, 28 Februari 2022

Codeigneter Paging Where

 Misal kita kerja pada halaman menu sbb:
http://localhost/apps/index.php/welcome/beritarb

Artinya...controller kerja kita ada di welcome.php

pada Construct tambahkan:

 $this->load->library("pagination");

$this->load->helper(array('url'));


berdasarkan link kerja di atas, beritarb adalah submenu yang dituju,,,

pada sub-bagian / method/ void welcome/beritarb tambahkan:

public function beritarb() {
$kat="Reformasi Birokrasi";
$jumlah_data = $this->berita_model->jumlah_data($kat);
$this->load->library('pagination');
$config['base_url'] = base_url().'index.php/welcome/beritarb';
$config['total_rows'] = $jumlah_data;
                
                $config['full_tag_open'] = '<div class="pagination">';
$config['full_tag_close'] = '</div>';

$config['per_page'] = 10; //artinya setiap kelipatan 10 akan pindah halaman
$from = $this->uri->segment(3);  //posisi path link
$this->pagination->initialize($config);
$data['listberita'] = $this->berita_model->AmbilData($config['per_page'],$from,$kat);
$this->load->view('beritarb',$data);

}

lalu pada berita_model tambahkan method (JumlahData(kategori) dan AmbilData(number,offset,kategori))

function AmbilData($number,$offset,$kategori){
return $this->db->get_where($this->_table, array('kategori' => $kategori), $number,$offset)->result();
}
 
function JumlahData($kategori){
return $this->db->get_where($this->_table, ["kategori" => $kategori])->num_rows();
}


lalu pada interface (beritarb.php) masukkan css:

<style type="text/css">
.pagination {
display: flex;
padding: 1em 0;
}

.pagination a,
.pagination strong {
border: 1px solid silver;
border-radius: 8px;
color: black;
padding: 0.5em;
margin-right: 0.5em;
text-decoration: none;
}

.pagination a:hover,
.pagination strong {
border: 1px solid #008cba;
background-color: #008cba;
color: white;
}
</style>



NB: bagi yang tanpa kategori:

function AmbilData($number,$offset){
return $this->db->get($this->_table, $number,$offset)->result();
}
 
function JumlahData(){
return $this->db->get($this->_table)->num_rows();
}






Tombol Online





<script language="JavaScript">
function buka(url) {window.open(url, 'window_baru', 'width=800,height=600,left=320,top=100,resizable=1,scrollbars=1');}
</script>


<link rel="stylesheet" type="text/css" href="assets/css/bootstrap/css/bootstrap.min.css">
<link rel="stylesheet" type="text/css" href="assets/css/font-awesome.min.css">
<link rel="stylesheet" type="text/css" href="assets/css/style.css">

<link rel="stylesheet" type="text/css" href="https://cdn.datatables.net/1.11.3/css/dataTables.bootstrap4.min.css">

<div class="col-md-12 grid-margin stretch-card">
    <div class="card">
     <div class="card-body">
        <h5 class="card-title"> Data Berita</h5><hr>
<div class="table-responsive pt-3">
   <table id="example" class="table table-hover table-bordered" style="width:100%">
<thead>
<tr bgcolor="#DCDCDC">
   <th width="2%">No</th>
   <th width="10%">Gambar</th>
   <th width="80%">Data Berita</th>
   <th width="8%">Menu</th>
</tr>
</thead>
<tbody>
<?php  
include "konmysqli.php";
$sql="SELECT * FROM `$tbberita` ORDER by `id_berita` asc";
$jum=getJum($conn,$sql);
if($jum > 0){
$no=1;
$arr=getData($conn,$sql);
foreach($arr as $d) {
$id_berita=$d["id_berita"];
$id_eskul=$d["id_eskul"];
$nama_eskul=getEskul($conn,$d["id_eskul"]);
$judul=ucwords($d["judul"]);
$deskripsi=$d["deskripsi"];
$tanggal=WKT($d["tanggal"]);
$jam=$d["jam"];
$status=$d["status"];
$gambar=$d["gambar"];
$keterangan=$d["keterangan"];

echo"<tr>
<td>$no</td>
<td><div align='center'>
<a href='#' onclick='buka(\"berita/zoom.php?id=$id_berita\")'><b>$nama_eskul</b>
<img src='$YPATH/$gambar' width='100' height='100' /></a>
</div></td>

<td><b>$judul ";
if($status=="Publish"){
  echo"<label class='badge badge-success'><small>$status</small></label>";
} else if($status=="UnPublish"){
  echo"<label class='badge badge-danger'><small>$status</small></label>";
}

echo"</td>
<td><div>
<a href='?mnu=berita&pro=ubah&kode=$id_berita'><i class='fa fa-edit bg-primary' title='edit'></i></a>
<a href='?mnu=berita&pro=hapus&kode=$id_berita&judul=$judul'><i class='fa fa-trash-o bg-danger'  title='hapus' onClick='return confirm(\"Apakah Anda benar-benar akan menghapus \"$judul\" pada data Berita?..\")'></i></a>
</div></td>
</tr>";
$no++;
}//for dalam
}//if
else{echo"<tr><td colspan='6'><blink>Maaf, Data belum tersedia...</blink></td></tr>";}
?>
</tbody>
</table>
</div>
</div>
</div>
</div>   



<script type="text/javascript" src="assets/js/jquery/jquery.min.js "></script>
<script src="https://cdn.datatables.net/1.11.3/js/jquery.dataTables.min.js"></script>
<script src="https://cdn.datatables.net/1.11.3/js/dataTables.bootstrap4.min.js"></script>
<script>
$(document).ready(function() {
var table = $('#example').DataTable( {
fixedHeader: true
} );
} );
</script>

Minggu, 27 Februari 2022

PDO Extension 2022

 pdo_extension.php

<?php
$DBServer = 'localhost';
$DBUser   = 'root';
$DBPass   = '';
$DBName   = 'db_webinarcruds';
$conn = new PDO("mysql:host=$DBServer;dbname=$DBName", "$DBUser", "$DBPass");
function getData($conn,$sql){
$rs = $conn->query( $sql );  
while ( $row = $rs->fetch( PDO::FETCH_ASSOC ) ){  
    $ar[] =$row;
}  
return $ar;
}
?>

 latpdo.php

<?php
require_once"pdo_extension.php";
require_once"datatable.php";


?>
<h1>Koneksi Database PDO Extension</h1>
<table id="examplec" class="display" style="width:100%">
        <thead>
            <tr>
                <th>IDKat</th>
                <th>Nama Kategori</th>
                <th>Deskripsi</th>
                <th>Menu</th>
            </tr>
        </thead>
        <tbody>
<?php
$sql="select * from `tb_kategori`";
$arr=getData($conn,$sql);
foreach($arr as $d) {
$id_kategori=$d["id_kategori"];
$nama_kategori=$d["nama_kategori"];
$deskripsi=$d["deskripsi"];
$deskripsi = wordwrap($deskripsi, 100, "<br />"); 
echo "<tr>
                <td>$id_kategori</td>
                <td>$nama_kategori</td>
                <td><small>$deskripsi</small></td>
                <td>
<button type='button' class='btn btn-primary'>Ubah</button>
|
<button type='button' class='btn btn-primary'>Hapus</button>
</td>
            </tr> ";
}
?>
        </tbody>
        <tfoot>
            <tr>
                <th>IDKat</th>
                <th>Nama Kategori</th>
                <th>Deskripsi</th>
                <th>Menu</th>
            </tr>
        </tfoot>
    </table>

<?php 
function getJum($conn,$sql){
$rs = $conn->prepare( $sql ); 
$rs->execute();
return $rs->columnCount(); 
}
function getJum0($conn,$sql){
$rs = $conn->query( $sql ); 
return $rs->columnCount(); 
}
function getField($conn,$sql){
$rs = $conn->query($sql);  
    $d =  $rs->fetch( PDO::FETCH_ASSOC );  
return $d;
}
function process($conn,$sql){
$rs = $conn->prepare($sql ); 
$rs->execute(); 
return $rs;
}
function getKategori($conn,$kode){
$kolom="nama_kategori";
$sql="select `$kolom` from `tb_kategori` where `id_kategori`='$kode'";
$stmt = $conn->query($sql);  
   $d = $stmt->fetch(PDO::FETCH_OBJ );  
   return $d->$kolom;
}   
?>




datatable.php

<script src="https://code.jquery.com/jquery-3.5.1.js"></script>
<script src="https://cdn.datatables.net/1.11.3/js/jquery.dataTables.min.js"></script>
<script>
$(document).ready(function() {
    $('#examplec').DataTable();
} );
</script>
<link rel="stylesheet" href="https://cdn.datatables.net/1.11.3/css/jquery.dataTables.min.css">










Mysqli Extension 2022

mysqli_extension.php

 <?php
$DBServer = 'localhost';
$DBUser   = 'root';
$DBPass   = '';
$DBName   = 'db_webinarcruds';
$conn = new mysqli($DBServer, $DBUser, $DBPass, $DBName);
if ($conn->connect_error) {
  trigger_error('Database connection failed: '  . $conn->connect_error, E_USER_ERROR);
}
function getData($conn,$sql){
$rs = $conn->query($sql);
$arr=$rs->fetch_all(MYSQLI_ASSOC);
$rs->free_result();
return $arr;
}
?>

latmysqli.php

<?php
require_once"mysqli_extension.php";
require_once"datatable.php";

?>
<h1>Koneksi Database Mysqli Extension</h1>
<table id="examplec" class="display" style="width:100%">
        <thead>
            <tr>
                <th>IDKat</th>
                <th>Nama Kategori</th>
                <th>Deskripsi</th>
                <th>Menu</th>
            </tr>
        </thead>
        <tbody>
<?php
$sql="select * from `tb_kategori`";
$arr=getData($conn,$sql);
foreach($arr as $d) {
$id_kategori=$d["id_kategori"];
$nama_kategori=$d["nama_kategori"];
$deskripsi=$d["deskripsi"];
$deskripsi = wordwrap($deskripsi, 100, "<br />"); 
echo "<tr>
                <td>$id_kategori</td>
                <td>$nama_kategori</td>
                <td><small>$deskripsi</small></td>
                <td>
<button type='button' class='btn btn-primary'>Ubah</button>
|
<button type='button' class='btn btn-primary'>Hapus</button>
</td>
            </tr> ";
}
?>
        </tbody>
        <tfoot>
            <tr>
                <th>IDKat</th>
                <th>Nama Kategori</th>
                <th>Deskripsi</th>
                <th>Menu</th>
            </tr>
        </tfoot>
    </table>


<?php 
function getJum($conn,$sql){
  $rs=$conn->query($sql);
  $jum= $rs->num_rows;
$rs->free();
return $jum;
}

function getField($conn,$sql){
$rs=$conn->query($sql);
$rs->data_seek(0);
$d= $rs->fetch_assoc();
$rs->free();
return $d;
}

function process($conn,$sql){
$s=false;
$conn->autocommit(FALSE);
try {
  $rs = $conn->query($sql);
  if($rs){
    $conn->commit();
    $last_inserted_id = $conn->insert_id;
  $affected_rows = $conn->affected_rows;
  $s=true;
  }

catch (Exception $e) {
echo 'fail: ' . $e->getMessage();
  $conn->rollback();
}
$conn->autocommit(TRUE);
return $s;
}

function getKategori($conn,$kode){
$field="nama_kategori";
$sql="SELECT `$field` FROM `tb_kategori` where `id_kategori`='$kode'";
$rs=$conn->query($sql);
$rs->data_seek(0);
$row = $rs->fetch_assoc();
$rs->free();
    return $row[$field];
}
?>

datatable.php
<script src="https://code.jquery.com/jquery-3.5.1.js"></script>
<script src="https://cdn.datatables.net/1.11.3/js/jquery.dataTables.min.js"></script>
<script>
$(document).ready(function() {
    $('#examplec').DataTable();
} );
</script>
<link rel="stylesheet" href="https://cdn.datatables.net/1.11.3/css/jquery.dataTables.min.css">


Sweet Alert

Download library weetalert.min.js, letakkan dalam satu folder sejajar index !  https://drive.google.com/drive/folders/1uXhLjQv998HlVhtzObOPC...