Showing posts with label Pemrograman. Show all posts
Showing posts with label Pemrograman. Show all posts

Captcha dengan PHP

Captcha PHP nih, sudah lumayan lama ngendon di "htdocs", dapetnya kapan?, kayaknya dah tahun kemaren :D

Oke, apa sih captcha itu?
Captca adalah gambar yang berisi text random, biasanya muncul saat kita ngisi komentar, pendaftaran atau transaksi di sebuah WEB. Captcha gunanya untuk mengurangi spam di komentar atau menghindari BOT yang membuat user secara otomatis. Captcha juga sering dipakai untuk mengindari download otomatis. :)

Biasanya cara kerja captcha seperti ini:
Jika input captcha tidak sama dengan yang tampil digambar, maka akan muncul pesan captcha tidak valid, maka harus mengulang dan membatalkan redirect ke halaman yang dituju.


Contoh captcha yg sudah dicoba dn di Upload
http://wolypop.tk/capchus/

Source Code
Download Source Code lengkap di sini

PHP yang jarang diketahui



Ini sih nggak rahasia-rahasia banget ya, cuma belum banyak yang tahu makanya terlihat rahasia.. hahah, ini bisa jadi nilai tambah ketika melakukan koding, atau ketika interview masalah PHP.
Berikut aturan-aturan dalam PHP yang jarang diketahui oleh kebanyakan programmer,,
  1. Fungsi dalam PHP incase-sensitif.
    Termasuk built-in fungsi dari PHP, fungsi echo bisa dipanggil dengan Echo, ECHO atau yang lainnya.
  2. constant case-sensitif.
    const VAR = "variabel",
    maka nilai VAR diatas hanya bisa dipanggil dengan VAR, error jika dipanggil dengan Var.
  3. keyword PHP seperti NULL incase-sensitif
    NULL, null, NUll dan yang lainnya adalah sama.
  4. Single quote (') dan Double quote(") adalah sama-sama string, tapi single quote tidak menerjemahkan nilai variabel.
    $v = 'variabel';
    
    echo 'nilai variabel = $x';  // mencetak nilai variabel = $x
    echo "nilai variabel = $x";  // mencetak nilai variabel = variabel
  5. close tag pada baris comment tetap dianggap sebagai penutup tag PHP.
    <?php
    echo "test";
    
    // close tag pada comment ini akan dianggap sebagai close tag dari kode php yang dibuat ?>
  6. Nilai false pada PHP
    1. keyword false.
    2. Keyword NULL
    3. integer 0
    4. floating point 0.0
    5. empty string ("")
    6. string "0"
    7. array dengan jumlah element nol.
    8. object tanpa nilai atau tanpa fungsi.
  7. Variabel yang tidak diinisialisasikan bernilai NULL.
  8. Nilai sebuah variabel bisa dijadikan variabel dengan double dollar ($$).
    $v = "satu";
    $$v = 1;
    Pada kode diatas baris kedua akan menciptakan sebuah variabel baru yaitu $satu yang bernilai 1.
  9. Variabel alias bisa dengan menggunakan ampersand(&).
    $x = "satu";
    $y =& $x ;
    Jika kita merubah nilai $y otomatis akan merubah nilai $x juga.
  10. Jika sebuah variabel alias diberikan perintah unset maka variabel aslinya tidak berubah.
    $x = "satu";
    $y =& $x ;
    echo "Nilai x = $x\n";
    echo "Nilai y = $y\n";
    
    $y = "dua";
    echo "Nilai x setelah y diruba $x\n";
    echo "Nilai y setelah dirubah $y\n";
    unset($y);
    
    echo "Nilai x setelah y diunset $x\n";
    echo "Nilai y setelah diunset $y\n";
    Pada baris terakhir akan menghasilkan error karena y telah dirubah.
  11. Selain menggunakan != untuk pertidaksamaan bisa juga dengan <>
  12. Persamaan dengan 3 samadengan (===) bernilai TRUE jika kedua variabel yang dijadikan perbandingan mempunyai nilai dan type data yang sama
  13. Int + Float, maka Int akan dirubah menjadi Float terlebih dahulu.
  14. String + Float, maka String dirubah menjadi Float.
  15. String + Int, String dirubah menjadi Number, jika Number adalah Float maka Int dirubah menjadi Float.
  16. String bisa di Increment.
  17. Operasi pada String dilakukan pada semua huruf sesuai posisinya.
    "satu" | "dua" sama dengan "s"|"d", "a"|"u", "t"|"a"
  18. Fungsi bisa bersarang(nested)
    function induk() {
    
       echo "ini dari fungsi induk\n";
       function anak() {
          echo "ini dari fungsi anak\n";
    
       }
    }
    Untuk memanggil fungsi anak() maka fungsi induk harus dipanggil terlebih dahulu.
  19. Memanggil fungsi bisa dengan nilai pada variabel.
    function test(){
      echo "ini fungsi test\n";
    
    }
    $var = "test";
    $var();
    Perintah terakhir diatas adalah memanggil fungsi test().
  20. Selain dengan function, untuk membuat fungsi bisa dengan create_function().
  21. Didalam double-quote nilai variabel yang ingin diambil bisa dipisahkan dengan {}.
  22. Jika escape karakter tidak diketahui, maka akan diignore atau diabaikan.
  23. echo bukanlah fungsi, karena itu echo lebih cepat dari print.
  24. Karakter yang akan dihapus oleh trim, ltrim, rtrim
    " "0x20Space
    "\t"0x09Tab
    "\n"0x0ANewline(linefeed)
    "\r"0x0DCarriage Return
    "\0"0x00Null Byte
    "\x0B0x0BVertical Tab
  25. Fungsi trim() bisa juga untuk menghapus karakter lain, dengan mengisi variabel kedua pada fungsi tersebut.
    $var = "XsatuX";
    echo ltrim($var, "X");
    Kode diatas akan mencetak "satuX";
  26. substr_replace() bisa digunakan untuk insert atau delete karakter.
  27. join() adalah alias dari implode(), sizeof() juga alias dari count().
  28. preg_match() bisa untuk mengcapture teks, tapi tak lebih dari 99 karakter.
  29. $variabel[3] sama dengan $variabel['3'] tapi tidak dengan $variabel['03']
  30. $variabel[index] sama dengan $variabel['index'], tapi yang pertama lebih lambat karena PHP akan melakukan cek terhadap nilai constant terlebih dahulu.
  31. Jika perintah pada opsi diatas dilakukan pada string atau diapit double-quote maka cara yang benar adalah cara pertama ($variabel[index]).
  32. array_push($array, 1) sama dengan $array[] = 1
  33. Kecuali natsort() dan natcasesort(), fungsi sort yang lainnya melakukan sorting berdasarkan ascii value.
    Normal SortAscii Sort
    1.txt1.txt
    5.txt10.txt
    10.txt5.txt
Referensi : PHP Manual

Definisi Algoritma Greedy dan Contoh Program

ALgoritma greedy merupakan salah satu dari sekian banyak algoritma yang sering di pakai dalam implementasi sebuah system atau program yang menyangkut mengenai pencarian “optimasi”

Dalam kehidupan sehari hari, banyak terdapat persoalan yang menuntut pencarian solusi optimum. Persoalan tersebut dinamakan persoalan optimasi(optimization Problems). Persoalan Optimasi adalah persoalan yang tidak hanya mencari sekedar solusi, tetapi mencari solusi terbaik.

Algoritma Greedy adalah salah satu algoritma yang dapat digunakan untuk mendapatkan solusi terbaik dan merupakan algoritma yang paling populer dalam hal ini.

Secara Harfiah Greedy artinya rakus atau tamak, sifat yang berkonotasi negatif. Orang yang memiliki sifat ini akan mengambil sebanayak mungkin atau mengambil yang paling bagus atau yang paling mahal. Sesuai dengan arti tersebut, Prinsip Greedy adalah take what you can get now. Dalam kehidupan sehari hari Greedy dapat digunakan dalam masalah seperti :
  • Memilih beberapa jenis investasi
  • Mencari jalur tersingkat
Ada juga yang dapat dilakukan algoritma ini dalam sesuatu yang biasa dilakukan mesyarakat modern, yaitu memilih spesifikasi komputer yang terbaik dengan budget maksimum tertentu seperti yang akan dibahas dalam makalah singkat ini.

1. Definisi Algoritma Greedy
Algoritma Greedy membentuk solusi langkah per langkah (step by step). Terdapat banyak pilihan yang perlu di eksplorasi pada setiap langkah solusi, karenanya pada setiap langkah harus dibuat keputusann yang terbaik dalam menentukan pilihan.Keputusan yang telah
diambil pada suatu langkah tidak dapat diubah lagi pada langkah selanjutnya. Sebagai contoh, jika kita manggunakan algoritma Greedy untuk menempatkan komponen diatas papan sirkuit, sekali komponen telah diletakkan dan dipasang maka tidak dapat dipindahkan lagi.
Pada setiap langkah diperoleh optimum lokal. Bila algoritma berakhir, kita berharap optimum lokal menjadi optimum global.

2. Skema umum Algoritma Greedy
Algoritma greedy disusun oleh elemen-elemen berikut:

  • Himpunan kandidat.
Berisi elemen-elemen pembentuk solusi.

  • Himpunan solusi
Berisi kandidat-kandidat yang terpilih sebagai solusi persoalan.

  • Fungsi seleksi (selection function)
Memilih kandidat yang paling memungkinkan mencapai solusi optimal. Kandidat yang sudah dipilih pada suatu langkah tidak pernah dipertimbangkan lagi pada langkah selanjutnya.

  • Fungsi kelayakan (feasible)
Memeriksa apakah suatu kandidat yang telah dipilih dapat memberikan solusi yang layak, yakni kandidat tersebut bersama-sama dengan himpunan solusi yang sudah terbentuk tidak melanggar kendala (constraints) yang ada. Kandidat yang layak dimasukkan ke dalam himpunan solusi, sedangkan kandidat yang tidak layak dibuang dan tidak pernah dipertimbangkan lagi.

  • Fungsi obyektif
yaitu fungsi yang memaksimumkan atau meminimumkan nilai solusi(misalnya panjang lintasan, keuntungan, dan lain-lain).Contoh pada masalah Pemilihan Processor, berdasarkan benchmark elemen-elemen algoritma greedy-nya adalah:

a.Himpunan kandidat: himpunan hardware yang terdiri dari Processor, Memory dan Graphic card
b.Himpunan solusi: Kombinasi Processor , Memory dan Graphic card dengan Benchmark terbaik namun dengan total harga yang tidak melebihi budget maksimum
c.Fungsi seleksi: Seleksi Processor, Memory dan Graphic card agar mendapat performa optimum dan tidak melebihi budget maksimum yang tersedia
d.Fungsi obyektif: Budget maksimum yang tersedia

Di dalam mencari sebuah solusi (optimasi) algoritma greedy hanya memakai 2 buah macam persoalan Optimasi,yaitu:

Maksimasi (maxizimation)
Minimasi (minimization)

Sebagai contoh saja:

1.Persoalan maksimasi
( MasalahPenukaranUang): Diberikan uang senilai A. Tukar A dengan koin-koin yang ada. Berapa jumlah minimum koin yang diperlukan untuk penukaran tersebut?

2. Persoalan minimasi
Contoh1: tersedia banyak koin 1, 5, 10, 25
Uang senilai A= 32 dapat ditukar dengan banyak cara berikut:

32 = 1 + 1 + …+ 1 (32 koin)
32 = 5 + 5 + 5 + 5 + 10 + 1 + 1(7 koin)
32 = 10 + 10 + 10 + 1 + 1(5 koin)…dst

## Minimum: 32 = 25 + 5 + 1 + 1 (4 koin)


Cara kerja algoritma ini adalah dengan membuat suatu rangkaian keputusan/pilihan, dimana masing masing merupakan pilihan pada posisi tersebut. Sekali suatu keputusan dipilih, maka tidak ada jalan untuk melakukan backtracking. Bentuk umumnya adalah :

while (problem belum selesai)
{
buat pilihan terbaik yang feasible
}

Contoh penyelesaian menggunakan algoritma greedy ini adalah mencari pohon perentang minimum, baik menggunakan Prim maupun Kruskal

Pohon perentang minimum
Misalkan G = (V, E) adalah suatu graph tidak berarah, terhubung, dan mempunyai bobot yang non negatif. Maka pohon perentang minimum adalah subgraph G yang mempunyai sifat berupa pohon
Mengandung semua simpul pada G
Mempunyai jumlah bobot pada busur yang minimum.

Y = {v0} untuk setiap v0 ? V

while (Y = V )
{
Cari busur (u,v)dengan bobot minimum dengan u ? Y
dan v ?/ Y
Masukkan busur (u, v) pada MST
Tambahkan v pada Y
}

Kode programnya adalah sebagai berikut

for (i = 1; i <= n; i ++)
{
V [i] . Reached = FALSE;
V [i] . Connect_Wt = INFINITY;
}

V [Start] . Connect_Wt = 0;
V [Start] . Connect_From = 0;

for (i = 1; i <= n; i ++)
{
Min_Connect = INFINITY;

for (j = 1; j <= n; j ++)

if (V [j] . Connect_Wt < Min_Connect)
{
Min_Connect = V [j] . Connect_Wt;
Min_V = j;
}

V [Min_V] . Reached = TRUE;

for (j = 1; j <= n; j ++)

if (! V [j] . Reached
&& Weight [Min_V] [j]
< V [j] . Connect_Wt)

{
V [j] . Connect_Wt = Weight [Min_V] [j];
V [j] . Connect_From = Min_V;
}
}

Algoritma Kruskal
Tempatkan masing masing simpul sebagai himpunan terpisah

for ( setiap busur (u,v) yang diurutkan bobotnya secara ascending)
if (u dan v berada dalam himpunan terpisah)
{
Masukkan busur (u,v) dalam MST
gabungkan himpunan yang mengandung u dan v
}

Inilah potongan programnya :
for (i = 1; i <= n; i ++)

{
V [i] . Reached = FALSE;
V [i] . Connect_Wt = INFINITY;
}

V [Start] . Connect_Wt = 0;
V [Start] . Connect_From = 0;

for (i = 1; i <= n; i ++)
{
Min_Connect = INFINITY;
for (j = 1; j <= n; j ++)
if (V [j] . Connect_Wt < Min_Connect)
{
Min_Connect = V [j] . Connect_Wt;
Min_V = j;
}
V [Min_V] . Reached = TRUE;

for (j = 1; j <= n; j ++)

if (! V [j] . Reached
&& Weight [Min_V] [j]
< V [j] . Connect_Wt)

{
V [j] . Connect_Wt = Weight [Min_V] [j];
V [j] . Connect_From = Min_V;
}
}


contoh algoritma greedy pada C++ dengan contoh aplikasi penukaran koin logam

#include
#include
#define size 99
void sort(int[], int);
main()
{
int x[size],i,n,uang,hasil[size];
printf("\n Banyak Koin :");
scanf("%d", &n);
printf("\n \n Masukkan Jenis Koin : \n");
for(i=1;i<=n;i++)
{
scanf("%d", &x[i]);
}
sort(x,n);
printf("\n Koin yang Tersedia :");
for(i=1;i<=n;i++)
{
printf("%d", x[i]);
printf("\n");
}
printf("\n");
printf("\n Masukkan Nilai yang Dipecah :");
scanf("%d", &uang);
printf("\n");
for(i=1;i<=n;i++)
{hasil[i]=uang/x[i];
uang=uang%x[i];
}
for(i=1;i<=n;i++)
{
printf("Keping %d", x[i]);
printf("-an sebanyak : %d", hasil[i]);
printf("\n \n");
}
getch();
return 0;
}

void sort(int a[], int siz)
{
int pass,hold,j;
for(pass=1;pass<=siz-1;pass++)
{
for(j=0;j<=siz-2;j++)
{ if(a[j+1] < a[j+2])
{
hold=a[j+1];
a[j+1]=a[j+2];
a[j+2]=hold;
}
}
}
}




Software : Dekompile APK Android ke JAVA

Hacker ato cracker emang selalu berusaha buat membalikkan rekayasa perangkat lunak dan aplikasi.
Berkat berbagai alat decompiling yang tersedia di pasaran, tidak sulit bwat mereka.

Ada Alat baru BERMARGA APK to Java, tidak persis siih, tapi berguna bwat dekompile tiap android apps yaitu APK to Java.

Decompiling aplikasi Android bukan hal yang baru, banyak sekali alat seperti APKTool, dex2jar juga bisa digunakan.


Lalu, Apa yang beda di APK to Java?
Jawabannya adalah :
Decompiling APK hanya sekali klik, mudah, cepat. Selain itu, dekompile nya ke Smali Code dan bisa sekalian dapet Source Code nya. :D



Alat ini memerlukan Java SDK 6 +, Windows.


Download versi terbaru dari Xda.

Algoritma Sorting plus Implementasinya

Sorting atau istilahnya untuk mengurutkan data, ada 2 bentuk terdiri dari Ascending dan Descending.

  • Sorting secara ascending adalah cara mengurutkan data mulai data bernilai terkecil sampai terbesar. 
  • Sedangkan descending mengurutkan data mulai dari data terbesar sampai terkecil.
Sebagai contoh misalkan diberikan data berupa bilangan berikut ini:
3 9 1 4 0 2
 Hasil sorting ascending adalah 0 1 2 3 4 9, dan hasil secara descending adalah 9 4 3 2 1 0.

Ascending
mengurutkan data secara ascending.


Untuk memudahkan pemrosesan data, lebih enak kalau kita nyatakan terlebih dahulu data bilangan di atas ke dalam bentuk notasi xi dengan i = 1, 2, …, 6. 
Sehingga dalam hal ini x1=3, x2=9, x3=1, x4=4, x5=0 dan x6=2.

Jika kita akan mengurutkan data secara ascending, maka harapan kita urutan data pertama adalah data yang memiliki nilai paling kecil. Karena itu kita harus mencari data terkecil dari semua data yang ada, lalu tempatkan ia ke data urutan pertama. 
Bagaimana dengan data urutan pertama sebelumnya? Bukankah nantinya dia akan tertimpa dengan data terkecil itu? Tidak… data urutan pertama sebelumnya akan kita tukar tempatnya dengan milik data terkecil. Misalkan data terkecil terletak pada urutan ke-4 dari seluruh data, maka data pertama kita tempatkan ke urutan ke-4 dan data terkecil diletakkan ke urutan pertama.

-->

Pseudocode dalam Pascal untuk mencari nilai terkecil dari semua data (x1, x2, …, x6) sekaligus mencari tempatnya.

min := x[1];
for i:=1 to 6 do
begin
    if (x[i] <= min) then
    begin
       min := x[i];
       tempatnya_min := i;
    end;
end;
Jadi pertama-tama, kita anggap nilai minimum adalah x1. Lalu nilai minimum ini kita bandingkan dengan semua data yang ada. Jika ditemukan nilai xi yang lebih kecil atau sama dengan nilai minimum, maka xi itulah nilai minimum yang baru, sekaligus tempat miliknya data minimum ini (i) kita catat. Nah setelah nilai minimum dari semua data ditemukan, maka selanjutnya kita tukar tempat nilai minimum tadi dengan tempat data pertama.

temp := x[1];
x[1] := x[tempatnya_min];
x[tempatnya_min] := temp;
Sehingga pseudocode proses mencari nilai terkecil dan menukar tempatnya dengan data pertama menjadi
min := x[1];
for i:=1 to 6 do
begin
    if (x[i] <= min) then
    begin
       min := x[i];
       tempatnya_min := i;
    end;
end;
temp := x[1];
x[1] := x[tempatnya_min];
x[tempatnya_min] := temp;
Nah setelah ditukar tempat antara data pertama dengan data terkecil maka urutan data menjadi
0 9 1 4 3 2

Proses selanjutnya, kita ulangi lagi proses yang sama yaitu mencari data terkecil dari kelompok data urutan ke-2 sampai dengan ke-6. Lalu tukar tempat data terkecil tersebut dengan tempat data urutan ke-2. Berikut ini pseudocodenya
min := x[2];
for i:=2 to 6 do
begin
    if (x[i] <= min) then
    begin
       min := x[i];
       tempatnya_min := i;
    end;
end;
temp := x[2];
x[2] := x[tempatnya_min];
x[tempatnya_min] := temp;
Tukar tempat antara data minimum dengan data ke-2 menghasilkan urutan data
0 1 9 4 3 2

Proses yang sama kembali dilakukan untuk kelompok data mulai urutan ke-3 sampai ke-6. Cari nilai minimumnya, lalu tukar tempat dengan data ke-3. Begitu seterusnya sampai dengan kelompok data ke-6 sampai ke-6. Berikut ini hasil urutan data untuk setiap proses

hasil urutan untuk kelompok data x3 s/d x6 : 0 1 2 4 3 9
hasil urutan untuk kelompok data x4 s/d x6 : 0 1 2 3 4 9
hasil urutan untuk kelompok data x5 s/d x6 : 0 1 2 3 4 9
hasil urutan untuk kelompok data x6 s/d x6 : 0 1 2 3 4 9

Nah… setelah proses selesai diperolehlah data yang terurut secara ascending. Pada contoh ini sebenarnya proses sorting ascending selesai pada kelompok data x4 s/d x6. Namun untuk keperluan generalisasi (bisa diterapkan ke semua kasus) maka kita selesaikan proses sampai dengan kelompok data terakhir.

Dengan demikian secara umum, untuk data x1 … xn, berikut ini pseudocode untuk sorting secara ascending
for kelompok := 1 to n do
begin
   min := x[kelompok];
   for i := kelompok to n do
   begin
      if (x[i] <= min) then
      begin
         min := x[i];
         tempatnya_min := i;
      end;
   end;
   temp := x[kelompok];
   x[kelompok] := x[tempatnya_min];
   x[tempatnya_min] := temp;
end;
Sedangkan berikut ini contoh implementasi algoritma sorting ascending di atas pada kasus yang diberikan di atas.

program sorting;
var x : array[1..100] of integer;
    i, n, min, kelompok, temp, tempatnya_min : integer;
begin
    { membuat data array yang terdiri dari data : 3 9 1 4 0 2 }
    x[1] := 3;
    x[2] := 9;
    x[3] := 1;
    x[4] := 4;
    x[5] := 0;
    x[6] := 2;
    n := 6; {jumlah data}
    { proses sorting ascending }
    for kelompok := 1 to n do
    begin
       min := x[kelompok];
       for i := kelompok to n do
       begin
          if (x[i] <= min) then
          begin
             min := x[i];
             tempatnya_min := i;
          end;
       end;
       temp := x[kelompok];
       x[kelompok] := x[tempatnya_min];
       x[tempatnya_min] := temp;
    end;
    { menampilkan hasil sorting }
    for i:=1 to n do
    begin
       writeln(x[i], ' ');
    end;
end.

Bagaimana dengan sorting descending? ,berarti kita tidak lagi mencari data minimum, tapi data maksimum. Bagaimana caranya? ya… tinggal ubah saja tanda <= menjadi >=. Oya, jangan lupa ubah pula nama variabel min menjadi max.
via : blog rosihani dot net

Mengenal Fungsi Waktu pada MySQL


Fungsi waktu memang harus ada dalam proses database, karena dalam proses pengolahan data akan sangat berpotensi bersinggungan dengan waktu. Berikut beberapa point penting dalam proses sql yang berhubungan dengan waktu

1. Type data.
Tipe data adalah format data yang akan dikenakan untuk rekord data yang berupa waktu tersebut.
a. Tipe data Time berformat : jam:menit:detik, contoh 12:00:01
b. Tipe data Date berformat : tahun-bulan-tanggal, contoh 2011-10-10
c. Tipe data datetime : tahun-bulan-tanggal jam:menit:detik, contoh 2011-10-10 12:00:01
d. Tipe data Timestamp : berformat datetime, namun terisi secara otomatis berupa tanggal dan waktu sekarang, jika tidak terisi

2. Beberapa Sintaksis
NOW() adalah Fungsi untuk menampilkan tanggal dan jam saat ini. Bentuknya adalah tipe data DateTime
CURDATE() adalah Fungsi untuk menampilkan tanggal saat ini. Bentuknya adalah tipe data Date
CURTIME() adalah Fungsi untuk menampilkan waktu saat ini. Bentuknya adalah tipe data Time
MONTH() adalah Fungsi untuk menampilkan bulan dalam waktu yang dimaksud.. Contoh SELECT MONTH(NOW()); Bentuknya adalah angka bulan ke
MONTHNAME() adalah Fungsi untuk menampilkan bulan dalam waktu yang dimaksud dengan bentuk nama..

Contoh :

SELECT MONTHNAME(NOW());

Bentuknya adalah nama bulan

YEAR() Fungsi untuk menampilkan tahun dalam waktu yang dimaksud.

Contoh:

SELECT YEAR(CURDATE());

Berisi tahun yang dimaksud

DAY() Fungsi untuk menampilkan hari kesekian dalam satu bulan pada waktu yang dimaksud.

Contoh:

SELECT DAY(NOW());

Berisi nomer hari ke “” dalam satu bulan

DAYNAME() Fungsi untuk menampilkan hari pada waktu yang dimaksud dalam bentuk Nama Hari.

Contoh:

SELECT DAY(NOW());

Berisi nama hari

weekday() Fungsi untuk menampilkan hari berskala mingguan pada waktu yang dimaksud.

Contoh:

SELECT WEEKDAY(NOW());

Hasilnya adalah hari dalam satu minggu

DATE_ADD, INTERVAL Berfungsi untuk menampilkan berapa hari ke depan, ke belakang, tahun ke ke depan dan belakang. Contoh, jika saya ingin menampilkan tanggal dua minggu ke sebelumnya adalah

SELECT DATE_ADD(NOW(), INTERVAL -2 WEEK)

atau

SELECT DATE_ADD(CURDATE(), INTERVAL -14 DAY)

Bentuknya sangat tergantung pada yang dikenai interval, apakah NOW(), CURDATE(), tanggal tertentu dll

DATE() berfungsi untuk menampilkan ‘tanggal’ pada waktu yang dimaksudkan di dalam kurung. Berwujud angka
hour() berfungsi untuk menampilkan ‘jam’ pada waktu yang dimaksudkan di dalam kurung. Berwujud angka
minute() berfungsi untuk menampilkan ‘menit’ pada waktu yang dimaksudkan di dalam kurung. Berwujud angka
second() berfungsi untuk menampilkan ‘detik’ pada waktu yang dimaksudkan di dalam kurung. Berwujud angka

Salah satu contoh jika diinginkan suatu data yang diinputkan dua minggu silam, kira-kira kode akan menjadi seperti ini:

SELECT 
`name` AS nama, 
`last_post` AS kapan, 
`income` AS jumlahsetor 
FROM 
`tb_income` 
WHERE 
`input_date` IN (SELECT DATE_ADD(NOW(), INTERVAL -14 DAY));

Semoga berguna…