Senin, 29 Maret 2021

PHP Timer Jika Waktu Habis 30 menit

 


$sql="select * from `$tbbooking` where `status`='Booking' order by `id_booking` desc";

$jum=getJum($conn,$sql);

if($jum > 0){

$arr=getData($conn,$sql);

foreach($arr as $d) {

$id_booking=$d["id_booking"];

$tanggal_booking=($d["tanggal_booking"]);

$jam_booking=$d["jam_booking"];

$awal  = strtotime($tanggal_booking.' '.$jam_booking);

$wkt=date("Y-m-d H:i:s");

$akhir = strtotime($wkt);

$diff  = $akhir - $awal;


$jam   = floor($diff / (60 * 60));

$menit = $diff - $jam * (60 * 60);

echo 'Waktu tinggal: ' . $jam .  ' jam, ' . floor( $menit / 60 ) . ' menit<br>';


if($jam>0){

$sql="Update `$tbbooking` set `status` ='Batal' where `id_booking`='$id_booking'";

$up=process($conn,$sql);

$sql="Update `$tbdetail` set `status_main` ='Batal' where `id_booking`='$id_booking'";

$up=process($conn,$sql);

}

else if($menit>30){

$sql="Update `$tbbooking` set `status` ='Batal' where `id_booking`='$id_booking'";

$up=process($conn,$sql);

$sql="Update `$tbdetail` set `status_main` ='Batal' where `id_booking`='$id_booking'";

$up=process($conn,$sql);

}


}

}






function getData($conn,$sql){

$rs=$conn->query($sql);

$rs->data_seek(0);

//$arr = $rs->fetch_all(MYSQLI_ASSOC);

//$arr = $rs->fetch_assoc();

while ($row = $rs->fetch_assoc()) {

     $arr[] = $row;

   }

$rs->free();

return $arr;

}


$hr = date('l', strtotime($tanggal_main));

//$hr=date("l");

$kat="Weekday ";

$hari="Minggu";

if($hr=="Sunday"){$hari="Minggu";$kat="Weekend";}

else if($hr=="Monday"){$hari="Senin";}

else if($hr=="Tuesday"){$hari="Selasa";}

else if($hr=="Wednesday"){$hari="Rabu";}

else if($hr=="Thrusday"){$hari="Kamis";}

else if($hr=="Friday"){$hari="Jumat";}

else if($hr=="Saturday"){$hari="Sabtu";$kat="Weekend";}







Jumat, 05 Maret 2021

Random Unique Array Static

 

<?php

$i=0;

$arN[$i]="Adiarray";

$arB[$i]="Matlab, Pyton, Bahasa R, Android, C++, Statistik";$i++;


$arN[$i]="Nico";

$arB[$i]="PHP Mysql, Desain Grafis, Layout, Photoshop, AuVi Apps";$i++;


$arN[$i]="Heru KZW";

$arB[$i]="Android Studio, Web Desain, CMS, CSS";$i++;


$arN[$i]="Tony Blair";

$arB[$i]="Java, Android, PHP Mysql, Matlab, C#, VBNET";$i++;


$arN[$i]="Rini DA";

$arB[$i]="Adobe Flash, Ms Office, Excell, Animation ";$i++;


$arN[$i]="JLaksamana";

$arB[$i]="Management Project, Pajak, Brevet, Accounting ";$i++;


$arN[$i]="Boy Chandra";

$arB[$i]="Unity 3D, Blender, VR, AR, Gamer Apps";$i++;


$arN[$i]="Poedji";

$arB[$i]="PHP Native, Laravel, Codeigneter, YII2, Database";$i++;


$arN[$i]="Sandri M";

$arB[$i]="Codeigneter, Android, PHP Mysql, Desainer, SEO";$i++;


$max = $i-1;

$done = false;

while(!$done){

    $numbers = range(0, $max);

    shuffle($numbers);

    $done = true;

    foreach($numbers as $key => $val){

        if($key == $val){

            $done = false;

            break;

        }

    }

}

//var_dump($numbers);

?>

<div class="staff-bottom text-center">

<div class="col-md-3 staff-left">

<img src="img/foto_pengajar.jpg" alt="" />

<h4><?php echo $arN[$numbers[0]];?></h4>

<p><?php echo $arB[$numbers[0]];?></p>

</div>

<div class="col-md-3 staff-left">

<img src="img/foto_pengajar.jpg" alt="" />

<h4><?php echo $arN[$numbers[1]];?></h4>

<p><?php echo $arB[$numbers[1]];?></p>

</div>

<div class="col-md-3 staff-left">

<img src="img/foto_pengajar.jpg" alt="" />

<h4><?php echo $arN[$numbers[2]];?></h4>

<p><?php echo $arB[$numbers[2]];?></p>

</div>

<div class="col-md-3 staff-left">

<img src="img/foto_pengajar.jpg" alt="" />

<h4><?php echo $arN[$numbers[3]];?></h4>

<p><?php echo $arB[$numbers[3]];?></p>

</div>

<div class="clearfix"></div>

</div>

</div>

</div>


ATAU

$arr = range(0, 30);
shuffle($arr );
$arr = array_slice($arr ,0,6);
var_dump($arr);

hasilnya:

array(6) { [0]=> int(4) [1]=> int(28) [2]=> int(9) [3]=> int(22) [4]=> int(12) [5]=> int(6) }









Senin, 28 Desember 2020

Implementasi Sistem Web Mahasiswa

 


*Web Portal Penjualan Online hasil Panen Padi*

+Bootstrap (agar kompatibel dgn layar HP)

+Ada aktor toko/petani dan customer + Super Admin Web

+Bisa Banyak akun admin sbg wakil masing2 Toko petani

+tidak membahas stok, keberadan barang hanya dalam status: tersedia atau tidak tersedia

+sistem pembayaran:

pilih barang tiap2 toko

masuk keranjang di tiap2 toko

selama msh di keranjang data order bisa diubah: jumlah/hapus/catatan

adanya tagihan tiap2 toko

upload transfer langsung ke tiap2 toko sesuai ordernya masing2

mode pengiriman adalah sistem COD jadi tidak ada ongkir dengan syarat kuota pembelian mencapai sekian KG, jika kurang dari kuota misal <30Kg ada ongkir 30rb


*_Pilihan paket Bimbel:_*

*OPTION 1 /WEB Bootstrap: 1.5jt*

+semua fitur di atas

+sistem native (Web base murni) jadi tidak akses kamera HP

+program menggunakan PHP+mysql (Bukan framework CI/Laravel)

+adanya tambahan aktor GUEST:

yaitu jika belum login maka hanya bisa melihat2 saja.....


+200rb lg jika ada tambahanA 

+fasilitas promo di tiap2 toko

+Ada pesan/chat antara toko petani dgn pelanggan (private)

+ada review thd @barang setelah belanja berstatus selesai 


+200rb lg jika ada tambahanB

+ada review thd @barang setelah belanja berstatus selesai 

+ada notif di setiap pelanggan jika ada barang /produk petani baru

+ada notif di petani jika ada yang konfirmasi belanja

+ada notif di pelanggan terhadap status belanja


------------------------------

*_Pilihan paket Bimbel:_*

*OPTION 2 /WEB Bootstrap + Android Studio: 2jt*


_Super Admin dan Toko Petani menggunakan Web Boostrap_

+semua fitur admin di atas

+sistem native (Web base murni) jadi tidak akses kamera HP

+program menggunakan PHP+mysql (Bukan framework CI/Laravel)

+adanya tambahan aktor GUEST:

yaitu jika belum login maka hanya bisa melihat2 saja.....


_Pelanggan/Customer menggunakan Android Studio_

+semua fitur pelanggan di atas

+upload gambar bisa pakai kamera dan galeri (Non Native)


+200rb lg jika ada tambahanA 

+fasilitas promo di tiap2 toko

+Ada pesan/chat antara toko petani dgn pelanggan (private)


+200rb lg jika ada tambahanB

+ada review thd @barang setelah belanja berstatus selesai 

+ada notif di setiap pelanggan jika ada barang /produk petani baru

+ada notif di petani jika ada yang konfirmasi belanja

+ada notif di pelanggan terhadap status belanja


++++++++

misal pilih Option 1 saja=1.5jt

misal pilih Option 1 dan tambahanA=1.5jt+200=1.7jt

misal pilih Option 1 dan tambahanA+tambahanB=1.5jt+200+200=1.9jt

NB Option 1 target 10-15xpertemuan

NB Option 2 target 10-20xpertemuan


untuk belajar siswa disarankan ikut belajar dari hari pertama sd selesai...

atau jika berhalangan sistem aplikasi bisa kita kerjakan dahulu....

nanti di pertengahan jalan hingga akhir sewaktu2 bisa datang untuk belajar basic, testing dan finising....


+++++++++++++++++++++++++++++++++


*Aplikasi Layanan Informasi Akademik Sekolah SMK XYZ*


+Aplikasi berbasis Bootstrap (Layout support di mobile)

+aktor Guru Pengampu, Siswa, Super Admin

+tidak sampai pembahasan nilai raport

+Update profil pengguna (Siswa/guru pengampu)

+Info Pengampu : Guru Pengajar dan matapelajaran yang diampu

jadi tidak perlu info jadwal (hari, jam matpel)

+info pembayaran sekolah kelas X,XI,XII (Siswa Datang ke lokasi dan bisa lihat arsip pembayaran via aplikasi)

+info pengumuman sekolah

+adanya fitur :

_penugasan di awal di setiap materi matpel pengampu berdasarkan kelas, tahun ajaran dan guru pengampu masing2... dan para siswa yang mengampu materi matpel tsb bias upload jawabannya...Serta Nilai bisa Diberikan oleh Guru Pengampu YBS /Manual_


_kuis (Multiple choice) di ahir di setiap materi matpel pengampu berdasarkan kelas, tahun ajaran dan guru pengampu masing2...dan para siswa yang mengampu materi matpel tsb bias upload jawabannya Serta Nilai bisa Diberikan oleh Guru Pengampu YBS /Automatis_


Pembuatan Aplikasi bisa pilih Option2 sbb:


OPTION I:1.5jt

_WEBBASE + BOOTSTRAP (Layout support Mobile):_

+semua fitur di atas

+adanya fitur Guest...yaitu pihak umum yang tidak login bisa melihat2 informasi yang bersifat public atau profil sekolah


Tambah 200rb jika ada fitur Forum

Tambah 200rb jika ada fitur Chatting + Notif jika ada transaksi pembayaran

atau tagihan bulanan pembayaran



OPTION II: 2jt

WEBBASE + BOOTSTRAP:Super Admin, Guru Pengampu

Android Studio: Siswa


+semua fitur di atas

+tidak ada fitur Guest


Tambah 200rb jika ada fitur Forum

Tambah 200rb jika ada fitur Chatting + Notif jika ada transaksi pembayaran

atau tagihan bulanan pembayaran


++++++++

misal pilih Option I saja=1.5jt

misal pilih Option I dan Forum=1.5jt+200=1.7jt

misal pilih Option I dan Forum+Chat+Notif=1.5jt+200+200=1.9jt

NB Option 1 target 10-15xpertemuan

NB Option 2 target 10-20xpertemuan


untuk belajar siswa disarankan ikut belajar dari hari pertama sd selesai...

atau jika berhalangan sistem aplikasi bisa kita kerjakan dahulu....

nanti di pertengahan jalan hingga akhir sewaktu2 bisa datang untuk belajar basic, testing dan finising...


++++++++++++++++++++++++++


*Rancang Bangun E-recruitment Pegawai Berbasis Web*


+Aplikasi berbasis WebBase Bootstrap (Support layout Mobile)

+Aplikasi Menggunakan PHP +Mysql (Bukan Framework CI/Laravel)

+Aktor Super Admin, Manager, HRD

+HRD Menginput manual data2 calon pegawai yang didapatnya dari email, surat2 dsb...

+HRD membuat sistem periodik penerimaan misal bulanan atau setiap 3bln an dsb...

+HRD memilih2 data calon pegawai dan melakukan proses perangkingan(Pencarian yang terbaik secara skala prioritas)

berdasarkan kriteria2 yang dicari dan diprioritaskan mengacu pada (misal):

Pendidikan, Keahlian, sertifikasi, IPK, jurusan, usia, alamat, pengalaman dsb...


+HRD memproses hasil menggunakan algoritma objektif / SPK

+HRD mendapatkan hasil...lalu data masuk ke bagian HRD untuk approval/proses lebih lanjut...


Pengerjaan aplikasi bisa dikerjakan dengan beberapa option sbb:


OPTION 1:Statis + SPK level 1(WP,SAW,Smart)

Kriteria Statis (misal tetap 10 kriteria sj):

Rp. 1.2jt


OPTION 2:Statis + SPK level 2(AHP, Promethe, Topsis, Fuzzy)

Kriteria Statis (misal tetap 10 kriteria sj):

Rp. 1.5jt


OPTION 3:Dinamis + SPK level 2(WP,SAW,Smart)

Kriteria Dinamis(bisa berubah2 disetiap periode penerimaan):

Rp. 1.5jt


OPTION 4:Dinamis + SPK level 2(AHP, Promethe, Topsis, Fuzzy)

Kriteria Dinamis (bisa berubah2 disetiap periode penerimaan):

Rp. 2jt


NB 

aplikasi yng menggunakan Framework CI/Laravel +500rb

aplikasi yng menggunakan Android Studio +500rb


NB Option 1/2 target 10-15xpertemuan

NB Option 3/4 target 15-20xpertemuan


untuk belajar siswa disarankan ikut belajar dari hari pertama sd selesai...

atau jika berhalangan sistem aplikasi bisa kita kerjakan dahulu....

nanti di pertengahan jalan hingga akhir sewaktu2 bisa datang untuk belajar basic, testing dan finising...
























Jumat, 11 Desember 2020

Grafik Multi Line Multi Category


   <script type="text/javascript"> 

     var itr=1;

    </script>  

  <script type="text/javascript" src="https://www.gstatic.com/charts/loader.js">

  </script>

  

  

<?php

//http://localhost/____2021/heru/DrinkSalePrediction/index.php?mnu=grafik

 

 $sqlq="select distinct(tanggal) from `$tbinvoice` order by `id_invoice` asc limit 0,40";

$arrq=getData($conn,$sqlq);

$arTgl=array();$i=0;

foreach($arrq as $dq) {

$tanggal=$dq["tanggal"];

$arTgl[$i]=$tanggal;

$i++;

}

$jt=$i;

$itr=0;

 $sqlv="select distinct(`kategori`) from `$tbproduk` order by `kategori` asc ";

$arrv=getData($conn,$sqlv);

foreach($arrv as $dvv) {

$kategori=$dvv["kategori"];

$itr++;

 $sql="select * from `$tbproduk` where `kategori`='$kategori' order by `nama_produk` asc ";

$arr=getData($conn,$sql);

$no=0;

foreach($arr as $d) {

$id_produk=$d["id_produk"];

$nama_produk=$d["nama_produk"];

$kategori=$d["kategori"];

$arP[$no]=$nama_produk;

$arI[$no]=$id_produk;

$arK[$no]=$kategori;

$no++;

}

$jb=$no;

$gab="";

for($jj=0;$jj<$jt;$jj++){

$tanggal=$arTgl[$jj];

$no=$jj+1;

$gab.="[$no,";

for($i=0;$i<$jb;$i++){

$id_produk=$arI[$i];

$sqlq="select `id_invoice` from `$tbinvoice` where `id_produk`='$id_produk' and `tanggal`='$tanggal'";

$jumq=rand(10,200);//getJum($conn,$sqlq)+0;

$no++;

$gab.="$jumq,";

}//$i

//$gab.=substr($gab,0,strlen($gab)-1);

$gab.="],";

}//j

$gab=substr($gab,0,strlen($gab)-1);

$gab=str_replace(",]","]",$gab);

//echo $gab;

?>




    <script type="text/javascript">

      google.charts.load('current', {'packages':['line']});

      google.charts.setOnLoadCallback(drawChart);


    function drawChart() {


      var data = new google.visualization.DataTable();

      data.addColumn('number', 'Produk');

  <?php

  for ($i=0;$i<$jb;$i++){

  $NP=$arP[$i];

  ?>

      data.addColumn('number', '<?php echo $NP;?>');

<?php

  }

  ?>

      data.addRows([<?php echo $gab;?>]);


  

      var options = {

        chart: {

          title: 'Box Office Earnings in First Two Weeks of Opening',

          subtitle: 'in millions of dollars (USD)'

        },

        width: 1200,

        height: 500,

        axes: {

          x: {

            0: {side: 'top'}

          }

        }

      };


      var chart = new google.charts.Line(document.getElementById('line_top_x'+itr.toString()));

 


      chart.draw(data, google.charts.Line.convertOptions(options));

  itr=itr+1;

  alert(itr);

    }

  </script>


  <div id="line_top_x<?php echo $itr;?>"></div>


<hr>

<?php

}

?>

</html>


SBB adalah Sumber aslinya:

<html>

<head>

  <script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script>

    <script type="text/javascript">

      google.charts.load('current', {'packages':['line']});

      google.charts.setOnLoadCallback(drawChart);

    function drawChart() {

      var data = new google.visualization.DataTable();

      data.addColumn('number', 'Day');

      data.addColumn('number', 'Guardians of the Galaxy');

      data.addColumn('number', 'The Avengers');

      data.addColumn('number', 'Transformers: Age of Extinction');


      data.addRows([

        [1,  37.8, 80.8, 41.8],

        [2,  30.9, 69.5, 32.4],

        [3,  25.4,   57, 25.7],

        [4,  11.7, 18.8, 10.5],

        [5,  11.9, 17.6, 10.4],

        [6,   8.8, 13.6,  7.7],

        [7,   7.6, 12.3,  9.6],

        [8,  12.3, 29.2, 10.6],

        [9,  16.9, 42.9, 14.8],

        [10, 12.8, 30.9, 11.6],

        [11,  5.3,  7.9,  4.7],

        [12,  6.6,  8.4,  5.2],

        [13,  4.8,  6.3,  3.6],

        [14,  4.2,  6.2,  3.4]

      ]);


      var options = {

        chart: {

          title: 'Box Office Earnings in First Two Weeks of Opening',

          subtitle: 'in millions of dollars (USD)'

        },

        width: 900,

        height: 500,

        axes: {

          x: {

            0: {side: 'top'}

          }

        }

      };


      var chart = new google.charts.Line(document.getElementById('line_top_x'));


      chart.draw(data, google.charts.Line.convertOptions(options));

    }

  </script>

</head>

<body>

  <div id="line_top_x"></div>

</body>

</html>






Jumat, 20 November 2020

PHP Fpgrowth Implementasi

Algoritma FPgrowth  digunakan agar komputer dapat mempelajari aturan hubungan, mencari pola relasi antar satu atau lebih item dalam suatu dataset (menggunakan konsep pembangunan tree dalam pencarian frequent itemset).

Algoritma ini banyak digunakan pada data transaksi atau biasa disebut market basket, misalnya sebuah swalayan memiliki market basket, dengan adanya Algoritma FPGrowth, pemilik swalayan dapat mengetahui pola pembelian seorang konsumen, jika seorang konsumen membeli item A , B, punya kemungkinan 50% dia akan membeli item C, pola ini sangat signifikan dengan adanya data transaksi selama ini. 

Tampilan Pendahuluan (Rumus/Formula):


Tampilan Masukan data Analisa dan Parameter Support dan Confidence:


Tampilan Pendataan Batasan Invoice yang sudah ada:


Hasil FPGrowth 1 Kombinasi:


Hasil FPGrowth 2 Kombinasi:


Hasil FPGrowth 3 Kombinasi:


echo"<H1>Perhitungan FPGrowth </h1>";


echo"Merupakan salah satu algoritma data mining. 

Algoritma FPGrowth digunakan agar komputer dapat mempelajari aturan hubungan, 

mencari pola relasi antar satu atau lebih item dalam suatu dataset (menggunakan konsep pembangunan tree dalam pencarian

frequent itemset).

<br>

Algoritma ini banyak digunakan pada data transaksi atau biasa disebut market basket, 

misalnya sebuah swalayan memiliki market basket, 

dengan adanya Algoritma FPGrowth, pemilik swalayan dapat mengetahui 

pola pembelian seorang konsumen, 

jika seorang konsumen membeli item A , B, punya kemungkinan 50% dia 

akan membeli item C, pola ini sangat signifikan dengan adanya data transaksi selama ini.

<br><br>

Dalam Aturan FPGrowth, ada 2 poin untuk menghasilkan aturan yang tepat, yaitu Nilai Support dan Confident.

<b>Nilai Support (s)</b> merupakan persentase jumlah kasus untuk kombinasi item tertentu.

<img src='ypathfile/app1.png' width='300' height='180'>

Dimana X∪Y merupakan jumlah transaksi yang berisi X dan Y, sementara N merupakan total jumlah seluruh transaksi. Nilai support menjadi ukuran yang sangat penting dalam aturan asosiasi karena aturan yang sangat lemah nilai support-nya berarti asosiasi tersebut sangat jarang terjadi dalam dataset (seluruh data transaksi).

<br>

<b>Nilai Confident</b>

<img src='ypathfile/app2.png' width='300' height='180'>

Nilai Confident (c) merupakan persentase keakurasian dari Aturan FPGrowth yang dihasilkan.


<hr>";


$sql="select `tanggal` from `$tbinvoice` order by `tanggal` asc limit 0,1";

$d=getField($conn,$sql);

$tanggal1=WKT($d["tanggal"]);

$tanggal2=WKT(date("Y-m-d"));

$SUP=0.2;

$CONF=50;

$catatan="";


if(isset($_GET["id"])){

$id_pengujian=$_GET["id"];

$sql="select * from `$tbpengujian` where `id_pengujian`='$id_pengujian'";

$d=getField($conn,$sql);

$id_pengujian=$d["id_pengujian"];

$nama_pengujian=$d["nama_pengujian"];

$tanggal=WKT($d["tanggal"]);

$jam=$d["jam"];

$SUP=$d["support"];

$CONF=$d["confidence"];

$rekapitulasi=$d["rekapitulasi"];

$hasil=$d["hasil"];

$catatan=$d["catatan"]; 

}

if(isset($_GET["pro"]) && $_GET["pro"]=="reset"){

  $_SESSION["chitung"]="";

unset($_SESSION["chitung"]);

  

  $tanggal=date("Y-m-d");

  $jam=date("H:i:s");

  $sql="select `tanggal` from `$tbinvoice` order by `tanggal` asc limit 0,1";

$d=getField($conn,$sql);

$tanggal1=WKT($d["tanggal"]);

$tanggal2=WKT(date("Y-m-d"));

$SUP=0.2;

$CONF=50;


}


if(isset($_POST["Hitung"]) || isset($_SESSION["chitung"])){

$nama_pengujian=$_POST["nama_pengujian"];

$catatan=$_POST["catatan"];

$_SESSION["nama_pengujian"]=$nama_pengujian;

$_SESSION["catatan"]=$catatan;

$SUP=$_POST["sup"];

$CONF=$_POST["conf"];

$TGL1=$_POST["tanggal1"];

$TGL2=$_POST["tanggal2"];

}



echo"<form action='' method='post'>";

echo"<table width='100%' border='1'>";

echo"<tr bgcolor='#ffff00'><td colspan='3'>Parameter FPGROWTH</tr>";

echo"<tr><td>Nama Pengujian<td>:<td><input type='text' name='nama_pengujian' value='$nama_pengujian'></tr>";

echo"<tr><td>Batas Minimum Support<td>:<td><input type='text' name='sup' value='$SUP'> </tr>";

echo"<tr><td>Batas Minimum Confident<td>:<td><input type='text' name='conf' value='$CONF'> </tr>";


echo"<tr><td>Batas Tanggal<td>:<td>

<input type='text' name='tanggal1' value='$tanggal1' id='tanggal1'> 

s/d

<input type='text' name='tanggal2' value='$tanggal2' id='tanggal2'> 

</tr>";


echo"<tr><td>Catatan<td>:<td><input type='text' name='catatan' value='$catatan'></tr>";


echo"<tr><td colspan='3' align='right'>

<input type='submit' class='btn btn-success'  value='HITUNG / ANALISA FPGROWTH' name='Hitung'>

<a href='?mnu=fpgrowth&pro=reset&id=$id_pengujian'><input type='button' class='btn btn-danger'  value='RESET' name='RESET'></a>


</tr>";

echo"</table>";

echo"</form>";


if(isset($_POST["Hitung"]) || isset($_SESSION["chitung"])){

$nama_pengujian=$_POST["nama_pengujian"];

$catatan=$_POST["catatan"];

$SUP=$_POST["sup"];

$CONF=$_POST["conf"];

$TGL1=$_POST["tanggal1"];

$TGL2=$_POST["tanggal2"];

$tanggal1=BAL($TGL1);

$tanggal2=BAL($TGL2);

$sql="select distinct(id_invoice) from `$tbinvoice` where not id_invoice=''  and `tanggal` between '$tanggal1' and '$tanggal2'  order by `id_invoice` desc ";

$jum0=getJum($conn,$sql);

  


$gabx="<b>Informasi Transaksi/Invoice  $TGL1 s/d $TGL2</b>";

$gabx.="<table width='100%' border='1'>";

$gabx.="<tr bgcolor='#ffff00'><td>No<td>Kode<td>List  Item</tr>";

$total=0;


$m=0;

  $jum0=getJum($conn,$sql);

if($jum0 <1){

echo"Maaf data Transaksi/Invoice $TGL1 s/d $TGL2 belum tersedia...<br>";

}

else{

$arr=getData($conn,$sql);

foreach($arr as $d) {

$clr="#dddddd";if($m%2==0){$clr="$eeeeee";}

$id_invoice=$d["id_invoice"];

$gab="$id_invoice#";

$mlist="";

//$sqlg="select `id_barang` from `$tbinvoice` where `id_invoice`='$id_invoice'";

$sqlg="select `id_produk`  from `$tbinvoice` where `id_invoice`='$id_invoice'";

$arrg=getData($conn,$sqlg);

foreach($arrg as $dg) {

$id_produk=$dg["id_produk"];

$np=getProduk($conn,$id_produk);

$jd0=cekAda($gab,$id_produk);

if($jd0>0){$gab.="#";$mlist.="#";$clr="#fff00f";}

$gab.="$id_produk#";

$mlist.="$np ($id_produk),";

}

$gab=substr($gab,0,strlen($gab)-1);

$arG[$m]=$gab;

//echo $arG[$m]."<br>";

$m++;

$mlist=substr($mlist,0,strlen($mlist)-1);

$gabx.="<tr bgcolor='$clr'><td>$m<td>$id_invoice<td>$mlist</tr>";

}//foreach

}//jum0

$gabx.="</table><br><br>";

echo $gabx;

//======================================================================

if( $jum0>0){

$record="<b>Perhitungan $jum0 Data Transaksi yang Terjadi Antara $TGL1 s/d $TGL2 <br>

Dengan Batas Ambang Support $SUP dan batas Ambang Confident $CONF adalah sebagai berikut</b><br>";

$_SESSION["cket"]="<b>Perhitungan dari $jum0 Data Transaksi yang Terjadi Antara $TGL1 s/d $TGL2</b> dengan Batas Ambang Support $SUP % dan batas Ambang Confident $CONF %";


$sqlg="select distinct(id_produk) from `$tbinvoice`";

$arrg=getData($conn,$sqlg);

$n=0;


echo $record;


$gab="<b>Hasil Pembentukan FP-tree itemset I ( k=1)</b><br>

Transaksi dengan pembangkitan itemset k=1, 

maka itemset yang dapat dibentuk beserta dengan jumlah kemunculan nya dalam seluruh transaksi sebagai berikut :<br>";

$gab.="<table width='60%' border='1'>";

$gab.="<tr bgcolor='#ffff00'><td>No<td>Kode<td>Nama Item<td>Jumlah<td>Support<td>Confident</tr>";

$total=0;

foreach($arrg as $dg) {

$id_produk=$dg["id_produk"];

$nm=getProduk($conn,$id_produk);

$jump=hitJumlah1($arG,$id_produk);

$support=($jump/$jum0)*100;

$support_="($jump/$jum0)x100";

$cc0="$id_produk";

$confident=($jump/$jump)*100; if($confident>100){$confident=100;}

if($support>=$SUP && $confident>=$CONF){//

$cc=$id_produk;

$arP[$n]=$cc;

$arN[$n]=$nm;

$arJ[$n]=$jump;

$arS[$n]=$support;

$total+=$jump;

$ARI[$cc]=$jump;

$confident_="($jump/".$ARI[$arP[$n]].")x100";

$arC[$n]=$confident;

$no=$n+1;

$clr="#dddddd";if($no%2==0){$clr="$eeeeee";}

$gab.="<tr bgcolor='$clr'><td>$no<td>$id_produk<td>$nm<td>$jump

<td><label title='$support_'>$support</label>

<td><label title='$confident_'>$confident</label></tr>";

$n++;

}

}

$gab.="<tr bgcolor='#ff00f0'><td colspan='3'>

Total Transaksi<td colspan='3'  align='left'>$total</tr>";

$gab.="</table><br>";

echo $gab;

$record.=$gab;

//https://prpm.trigunadharma.ac.id/public/fileJurnal/hpqZ6%20Ali%20Ikhwan%20.pdf

$gab="<b>Hasil Pembentukan FP-tree itemset II  (k=2)</b><br>

lanjut pada tahap iterasi kedua dengan nilai k=2, 

berarti kita akan membentuk kombinasi dari 2 buah itemset sebagai berikut :";


$gab.="<table width='80%' border='1'>";

$gab.="<tr bgcolor='#ffff00'><th>No<th>Kode1-Kode2<th>Nama Item1-Nama Item2-<th>Jumlah<th>Support<th>Confident</tr>";

$n=0;

$total=0;

$JTX1=count($arP);

for($i=0;$i<$JTX1-1;$i++){

$id_produk1=$arP[$i];

$nm1=$arN[$i];

for($j=$i+1;$j<$JTX1;$j++){

$id_produk2=$arP[$j];

$nm2=$arN[$j];

$jump=hitJumlah2($arG,$id_produk1,$id_produk2);

$support=($jump/$jum0)*100;

$support_="($jump/$jum0)x100";

$cc0=$id_produk1;

$confident=($jump/$ARI[$cc0])*100;if($confident>100){$confident=100;}

if($support>=$SUP && $confident>=$CONF){//

$cc="$id_produk1-$id_produk2";

$arP2[$n]=$cc;

$arN2[$n]="$nm1-$nm2";

$arJ2[$n]=$jump;

$arS2[$n]=$support;

$total+=$jump;

$confident_="($jump/".$ARI[$cc0].")x100";

$arC2[$n]=$confident;

$ARI2[$cc]=$jump;

$no=$n+1;

$clr="#dddddd";if($no%2==0){$clr="$eeeeee";}

$gab.="<tr bgcolor='$clr'><td>$no<td>$arP2[$n]<td>$arN2[$n]<td>$arJ2[$n]

<td><label title='$support_'>$support</label>

<td><label title='$confident_'>$confident</label></tr>";


$n++;

}

}//j

}//i

$gab.="<tr bgcolor='#ff00f0'><td colspan='3'>Total Transaksi<td colspan='3' align='left'>$total</tr>";

$gab.="</table><br>";

echo $gab;

$record.=$gab;


//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

error_reporting(0);

$kes="<b>Aturan FPGrowth :</b><br><ul>";


$gab="<b>Hasil Pembentukan FP-tree itemset III  (k=3)</b><br>

lanjut pada tahap iterasi kedua dengan nilai k=3, 

berarti kita akan membentuk kombinasi dari 3 buah itemset sebagai berikut :";


$gab.="<table width='100%' border='1'>";

$gab.="<tr bgcolor='#ffff00'><th>No<th>Kode1-Kode2-Kode3<th>Nama Item1-Nama Item2-Nama Item3

<th>Jumlah<th>Support<th>Confident</tr>";

$n=0;

$total=0;

$JTX1=count($arP);

for($i=0;$i<$JTX1-2;$i++){

$id_produk1=$arP[$i];

$nm1=$arN[$i];

for($j=$i+1;$j<$JTX1-1;$j++){

$id_produk2=$arP[$j];

$nm2=$arN[$j];

for($k=$j+1;$k<$JTX1;$k++){

$id_produk3=$arP[$k];

$nm3=$arN[$k];

$jump=hitJumlah3($arG,$id_produk1,$id_produk2,$id_produk3);

$support=($jump/$jum0)*100;

$support_="($jump/$jum0)x100";

$cc0="$id_produk1-$id_produk2";

$confident=($jump/$ARI2[$cc0])*100;if($confident>100){$confident=100;}

if($support>=$SUP && $confident>=$CONF){//

$cc="$id_produk1-$id_produk2-$id_produk3";

$kes.="<li>Jika membeli $nm1  ($id_produk1) dan $nm2  ($id_produk2) maka akan membeli $nm3 ($id_produk3) =$confident %</li>";

$arP3[$n]=$cc;

$arN3[$n]="$nm1-$nm2-$nm3";

$arJ3[$n]=$jump;

$total+=$jump;

$arS3[$n]=$support;

$confident_="($jump/".$ARI2[$cc0].")x100";

$arC3[$n]=$confident;

$ARI3[$cc]=$jump;

$no=$n+1;

$clr="#dddddd";if($no%2==0){$clr="$eeeeee";}

$gab.="<tr bgcolor='$clr'><td>$no<td>$arP3[$n]<td>$arN3[$n]<td>$arJ3[$n]

<td><label title='$support_'>$support</label>

<td><label title='$confident_'>$confident</label></tr>";


$n++;

}

}//k

}//j

}//i

$kes.="</ul>";


$gab.="<tr bgcolor='#ff00f0'><td colspan='3'>Total Transaksi<td colspan='3' align='left'>$total</tr>";

$gab.="</table><br><hr>";

echo $gab;

echo $kes;


$record.=$gab;

$record.=$kes;

$_SESSION["crecord"]=$record;

$_SESSION["chasil"]=$kes;


echo"<img src='ypathfile/print2.jpg' title='PRINT'  width='150' height='130' OnClick='PRINT()'> ||";

echo"<a href='?mnu=fpgrowth&pro=save&id=$id_pengujian'><img src='ypathfile/save.jpg' title='SIMPAN' width='120' height='100'></a>";


}// $jum0>0




   


   $time_end = microtime(true);

   $time = $time_end - $time_start;

   $_SESSION["cdurasi"]=$time;

   echo "<hr>Lama Proses $time seconds\n";

   

   

}//isset hitung








if(isset($_GET["pro"]) && $_GET["pro"]=="save"){

  $tanggal=date("Y-m-d");

  $id_pengujian=$_GET["id"];

  $nama_pengujian=$_SESSION["nama_pengujian"];

  $catatan=$_SESSION["catatan"];

  $rekapitulasi=$_SESSION["chasil"];

  $durasi=$_SESSION["cdurasi"];

  $hasil=$_SESSION["cket"];

  

  $_SESSION["chitung"]="";

unset($_SESSION["chitung"]);

  $_SESSION["cdurasi"]="";

unset($_SESSION["cdurasi"]);

  

  $tanggal=date("Y-m-d");

  $jam=date("H:i:s");

  

$sql=" Update  `$tbpengujian` set `nama_pengujian`='$nama_pengujian', `catatan`='$catatan',`rekapitulasi`='$rekapitulasi Durasi: $durasi ms', `hasil`='$hasil' where `id_pengujian`='$id_pengujian'";

$simpan=process($conn,$sql);

if($simpan) {echo "<script>alert('Data $nama_pengujian berhasil disimpan !');document.location.href='?mnu=pengujian';</script>";}

else{echo"<script>alert('Data $nama_pengujian gagal disimpan...');document.location.href='?mnu=pengujian';</script>";}

}


?>




OKS

PHP Array Distinct

 array(5) { [0]=> int(3) [1]=> int(4) [2]=> int(1) [3]=> int(0) [4]=> int(2) }

<?php

$jenisproduk=5;

$numbers = range(0, $jenisproduk-1);

shuffle($numbers);

var_dump($numbers);

?>



PHP Code Generate Invoice

 Sebagai berikut adalah kode PHP untuk autoInput Nota Transaksi...
dengan amsing-masing Nota terdiri dari random N jumlah item Jenis barang, dan tiap2 jenis barang random M Jumlahnya....
dan setiap Transaksi/Nota terurut dari tanggal tertentu dan bulan tertentu (misal 10 bulan yang lalu) dst.....



<?php


$tanggal=WKT(date("Y-m-d"));

$lamabulan=10;//default

?>

 

<script type="text/javascript"> 

function PRINT(tgl){ 

win=window.open('penjualan/print.php?tgl='+tgl,'win','width=1000, height=400, menubar=0, scrollbars=1, resizable=0, location=0, toolbar=0, status=0'); } 

</script>

<script language="JavaScript">

function buka(url) {window.open(url, 'window_baru', 'width=800,height=600,left=320,top=100,resizable=1,scrollbars=1');}

</script>


<div id="accordion">

  <h3>Generate Data Invoice</h3>

  <div>

<!-- Accordion -->


<form action="" method="post" enctype="multipart/form-data">

<table class="table table-hover">

<tr>

<td height="24"><label for="lamabulan">Lama Bulan Yang Lalu</label>

<td>:<td colspan = "2"><input class="form-control" name="lamabulan" value="<?php echo $lamabulan;?>" type="number" id="lamabulan" value="<?php echo $jumlah;?>" size="30" />

</td>

</tr>


<tr>

<td height="24"><label for="keterangan">Catatan</label>

<td>:<td width="331"><textarea class="form-control" name="keterangan" cols="100" type="text" id="keterangan"><?php echo $keterangan;?> </textarea></td>

</tr>


<tr><td><td>

<td colspan="2">

<input name="Generate" type="submit" class="btn btn-success" id="Generate" value="Generate" />

        <a href="?mnu=aoq"><input name="Batal" class="btn btn-danger" type="button" id="Batal" value="Batal" /></a>

</td></tr>

</table>

</form>


</div>

<?php   

$sqlc="select distinct(`tanggal`) from `$tbinvoice` order by `tanggal` asc";

$arrc=getData($conn,$sqlc);

foreach($arrc as $dc) {

$tanggal=$dc["tanggal"];

?>

  <h3>Data Invoice <?php echo WKT($tanggal);?></h3>

  <div>

<br />


Data Invoice  <?php echo WKT($tanggal);?>: 

<img src='ypathicon/print.png' title='PRINT' OnClick="PRINT('<?php echo $tanggal;?>')">

<br>


<table class="table table-bordered table-striped table-hover">

  <tr bgcolor="#CCCCCC">

    <th width="3%">No</th>

    <th width="10%">IDInvoice</th>

<th width="70%">List Produk</th>

<th width="10%">Menu</th>

  </tr>

<?php  


  $sql="select distinct(`id_invoice`) from `$tbinvoice` where tanggal='$tanggal' order by `id_invoice` desc ";

  $jum=getJum($conn,$sql);

if($jum > 0){

$no=1;

$arr=getData($conn,$sql);

foreach($arr as $d) {

$id_invoice=$d["id_invoice"];

$gab="<ol>";

$sqlg="select * from `$tbinvoice` where `id_invoice`='$id_invoice'";

$arrg=getData($conn,$sqlg);

foreach($arrg as $dg) {

$id_produk=$dg["id_produk"];

$np=getProduk($conn,$id_produk);

$jumlah=$dg["jumlah"];

$catatan=$dg["catatan"];

$gab.="<li>$np ($id_produk) : $jumlah item $catatan</li>";

}

$gab.="</ol>";

$color="#dddddd";

if($no %2==0){$color="#eeeeee";}

echo"<tr bgcolor='$color'>

<td>$no</td>

<td>$id_invoice</td>

<td>$gab</td>

<td align='center'>

<a href='?mnu=invoice&pro=hapus&kode=$id_invoice'><img src='ypathicon/h.png' alt='hapus' 

onClick='return confirm(\"Apakah Anda benar-benar akan menghapus $id_invoice pada data invoice ?..\")'></a></td>

</tr>";

$no++;

}//while

}//if

else{echo"<tr><td colspan='7'><blink>Maaf, Data invoice belum tersedia...</blink></td></tr>";}

?>

</table>


</div>

<?php } ?>

</div>

</div>

</body>

<!-- Accordion -->


<?php

if(isset($_POST["Simpan"])){

$jum=strip_tags($_POST["i"]);

$id_invoice=strip_tags($_POST["id_invoice"]);

$tanggal=BAL($_POST["tanggal"]);

$keterangan=strip_tags($_POST["keterangan"]);

$sql="delete from `$tbinvoice` where `id_invoice`='$id_invoice'";

$hapus=process($conn,$sql);



$ada=0;

for($i=0;$i<=$jum;$i++){

$id_produk=strip_tags($_POST["idp$i"]);

$jumlah=strip_tags($_POST["jum$i"]);

$pil=strip_tags($_POST["pil$i"]);

$keterangan=strip_tags($_POST["cat$i"]);

if($pil==1 && isset($_POST["pil$i"]) && $jumlah>0){

$ada++;

$sql="INSERT INTO `tbinvoice` (

`id`, `id_invoice`, `id_produk`, `jumlah`, `keterangan`, `tanggal`) VALUES (

'', '$id_invoice', '$id_produk', '$jumlah', '$keterangan','$tanggal')";

$simpan=process($conn,$sql);


}//isset

}//for

if($ada>0){

$sql=" INSERT INTO `$tbinvoice` (

`id_invoice` ,

`tanggal` ,

`keterangan`

) VALUES (

'$id_invoice', 

'$tanggal', 

'$keterangan'

)";

$simpan=process($conn,$sql);

if($simpan) {echo "<script>alert('Data $id_invoice berhasil disimpan !');document.location.href='?mnu=generate';</script>";}

else{echo"<script>alert('Data $id_invoice gagal disimpan...');document.location.href='?mnu=generate';</script>";}

}

else{

echo"<script>alert('Silakan Lengkapi Data Anda DenganItem yang dipilih berikut Jumlahnya...');document.location.href='?mnu=generate';</script>";

}

}

?>


<?php

if($_GET["pro"]=="hapus"){

$id_invoice=$_GET["kode"];


$sql="delete from `$tbinvoice` where `id_invoice`='$id_invoice'";

$hapus=process($conn,$sql);



if($hapus) {echo "<script>alert('Data invoice $id_invoice berhasil dihapus !');document.location.href='?mnu=invoice';</script>";}

else{echo"<script>alert('Data invoice $id_invoice gagal dihapus...');document.location.href='?mnu=invoice';</script>";}

}



if(isset($_POST["Generate"])){

$keterangan=$_GET["keterangan"];

$lamabulan=$_POST["lamabulan"];//15


$sql="select `id_produk`,`kategori` from `$tbproduk` order by rand()";

$arr=getData($conn,$sql);

$n=0;

foreach($arr as $d) {

$id_produk=$d["id_produk"];

$kategori=$d["kategori"];

$arB[$n]=$id_produk;

$arH[$n]=$kategori;

$n++;

}

$sql0="Truncate `$tbinvoice`";

$simpan0=process($conn,$sql0);

$selthn=floor($lamabulan/12); //1

$selbln=$lamabulan%12;//3

$tahun=date("Y")-$selthn;//13

$bulan=date("m")-$selbln;

if($bulan<=0){$bulan=$bulan+12;$tahun=$tahun-1;}


$TH=$tahun;

$BL=$bulan;

for($b=0;$b<$lamabulan;$b++){//bln thn

if($BL>12){

$BL=1;$TH=$TH+1;

}

for($i=1;$i<24;$i++){//tgl


$ii=$i;

if($ii<10){$ii="0$i";}

$tanggal="$TH-$BL-$ii";

if($tanggal=="0000-00-00"){}

else{

$txharian=rand(1,5);

for($j=0;$j<$txharian;$j++){

$sql="select `id_invoice` from `$tbinvoice` order by `id_invoice` desc";

$q=mysqli_query($conn, $sql);

  $jum=mysqli_num_rows($q);

  $th=date("y");

  $bl=date("m")+0;if($bl<10){$bl="0".$bl;}

  

  $kd="PJL".$th.$bl;//KEG1610001

  if($jum > 0){

   $d=mysqli_fetch_array($q);

   $id_invoiceax=$d["id_invoice"];

   

   $bul=substr($id_invoiceax,5,2);

   $tah=substr($id_invoiceax,3,2);

    if($bul==$bl && $tah==$th){

     $urut=substr($id_invoiceax,7,4)+1;

     if($urut<10){$id_invoiceax="$kd"."000".$urut;}

     else if($urut<100){$id_invoiceax="$kd"."00".$urut;}

else if($urut<1000){$id_invoiceax="$kd"."0".$urut;}

     else{$id_invoiceax="$kd".$urut;}

    }//==

    else{

     $id_invoiceax="$kd"."0001";

     }   

   }//jum>0

  else{$id_invoiceax="$kd"."0001";}

  $id_invoice=$id_invoiceax;

  



$banyakProdukdalam1Nota=rand(1,5);//1 nota ada antara 1 sd 5 barang

if($banyakProdukdalam1Nota>5){$banyakProdukdalam1Nota=5;}

$numbers = range(0, $n-1);

shuffle($numbers);


for($k=0;$k<$banyakProdukdalam1Nota;$k++){

$r=$numbers[$k]+0;//rand(1,$n-1);//

if($r>$n-1){

$r=0;//rand(0,$n-1);

}

$id_produk=$arB[$r];//43201

$jumlah=rand(2,10);

$subtotal=$jumlah*$arH[$r];

$catatan="";


$sql1=" INSERT INTO `$tbinvoice` (

`id_invoice` ,`jumlah` ,`id_produk` ,

`tanggal` ,

`keterangan`

) VALUES (

'$id_invoice', '$jumlah', '$id_produk', 

'$tanggal', 

'Generate $lamabulan Bulan $keterangan '

)";

$simpan1=process($conn,$sql1);

//echo $sql1."<br>";

}//k banyak produk

}//j txharians

}//0000-00-00

}//i

$BL=$BL+1;

}//bulan thn

//sukses generate

echo "<script>alert('Generate Berhasil ');document.location.href='?mnu=generate';</script>";

}//generate

?>



 

Sweet Alert

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