[ask] Penjumlahan Tables Pada PHP


Status
Not open for further replies.
nice ... :63:
terima kasih sudah mengamalkan "prepared statement" dan "parameterized query" (walaupun jadi agak ribet ya). mudah-mudahan, sambil menyelam (belajar PHP/MySQL) + minum jus buah (aspek keamanan).... hehehe

data tidak di-input ke database, karena kode ini:
PHP:
$sql = "INSERT INTO `absen`(`userid`, `nama`, `status`, 'jammasuk', 'jampulang', 'tanggal', 'keterangan') VALUES (:userid, :nama, :status, :jammasuk, :jampulang, :tanggal, :keterangan);";
$sth = $dbh->prepare($sql);

incomplete.

mana "parameterized query"nya?
PHP:
$sth->bindParam(':userid', ....);
$sth->bindParam(':nama', ....);
// dst...

lalu, mana perintah eksekusinya?
PHP:
$sth->execute();

tambahan:
- kalau punya waktu luang, ada baiknya membaca juga topik mengenai XSS (Cross-Site Scripting).
 
sdh dicoba om tp masih blm terinput jg ke tables databasenya, namun tak ada error yg muncul
berikut perubahan yg saya buat di bagian simpanabsen.phpnya :

Code:
$sql = "INSERT INTO 'absen' ('userid', 'nama', 'status', 'jammasuk', 'jampulang', 'tanggal', 'keterangan') VALUES (:userid, :nama, :status, :jammasuk, :jampulang, :tanggal,  :keterangan);";
$sth = $dbh->prepare($sql);

$sth->bindParam(':userid', $userid);
$sth->bindParam(':nama', $nama);
$sth->bindParam(':status', $status);
$sth->bindParam(':jammasuk', $jammasuk);
$sth->bindParam(':jampulang', $jampulang);
$sth->bindParam(':tanggal', $tanggal);
$sth->bindParam(':keterangan', $keterangan);
$sth->execute();
echo "Input data... Selesai.";

saya harusnya belajar dari awal lg kayaknya yg perihal PDO ini
 
coba pindahkan potongan kode yang telah direvisi (diatas) ke dalam fungsi "input_absen()" + sedikit perubahan:

PHP:
// penambahan $param....
function input_absen($user_id, $param2, $param3, .... , dst){
  global $dbh;

  $now = date("Y-m-d G:i:s", time());
  $tanggal = date("Y-m-d");

  // cari data user tertanggal "hari ini"
  $query = "SELECT * FROM `absen` WHERE `userid` = :userid AND DATE_FORMAT(`jammasuk`, '%Y-%m-%d') = CURDATE();";
  $sql = $dbh->prepare($query);
  $sql->bindParam(':userid', $userid);
  $sql->execute();
  $data = $sql->fetchAll(PDO::FETCH_ASSOC);

  if(!empty($data[0]["jammasuk"]) && !empty($data[0]["jampulang"])){
    // record user untuk hari ini sudah terisi. skip...
    return;
  }

  if(empty($data[0]["jammasuk"])){
    // record user untuk hari ini belum ada. catat jam masuk. (NEW RECORD)
    $jammasuk = $now;
    $jampulang = NULL;
  }else{
    // record user untuk hari ini sudah ada. catat jam keluar. (UPDATE RECORD)
    $jammasuk = $data[0]["jammasuk"];
    $jampulang = $now;
  }

  //
  // catatan: perlu dibedakan mana entri BARU, mana entri LAMA (UPDATE)....
  // kalau semua menggunakan INSERT, maka data akan bertumpuk.
  // silahkan cari referensi mengenai "MySQL Update Query"
  //
  $sql = "INSERT INTO 'absen' ('userid', 'nama', 'status', 'jammasuk', 'jampulang', 'tanggal', 'keterangan') VALUES (:userid, :nama, :status, :jammasuk, :jampulang, :tanggal, :keterangan);";
  $sth = $dbh->prepare($sql);

  $sth->bindParam(':userid', $userid);
  $sth->bindParam(':nama', $nama);
  $sth->bindParam(':status', $status);
  $sth->bindParam(':jammasuk', $jammasuk);
  $sth->bindParam(':jampulang', $jampulang);
  $sth->bindParam(':tanggal', $tanggal);
  $sth->bindParam(':keterangan', $keterangan);
  $sth->execute();
  echo "Input data... Selesai.";
}

kemudian fungsi tsb dipanggil dengan:

PHP:
input_absen($user_id, $param2, $param3, .... , dst);
 
Terimakasih pencerahannya Om,
dari semalam saya coba2 namun belum bisa,
tp ini w coba pahami dan pelajari dlu baris per barisnya jika nanti mentok jg akan saya update di sini
 
mau tanya nih dibagian kelebihan (jam, blok, tanggal) itu isinya apa yah?
trus juga yang di hari dan total,

bisa coba buat table nya di excel trus coba masukkan datanya seperti apa yang diinginkan outputnya trus baru screenshot jadi lebih mudah dipahami dari pada penjelasan dengan kata, kalau dengan excel kan bisa ditandai dengan membuat border berwarna trus baru diberikan keterangan cell itu isi nya apa dan maunya apa dengan apa yang dihitung. :)
 
udah baca berulang" masih tetap gak ngerti maksud yang diinginkan sperti apa :confused:
yang paling binggung dibagian kelebihan dari hari :argue:
 
Terimakasih banyak Om Indra telah bergabung dithread saya dan mohon maaf juga jika penjelasan saya membingungkan
Berikut gambar yg sdh diinput nilainnya : http://postimg.org/image/8lqbux5x9/
8lqbux5x9

1. Nilai dari "jumlah jam" di dapat dari = jamkeluar - jammasuk (13:15 -07:05 = 6 jam 10 menit)
Jam Normal = 4 jam (kita anggap nilainnya sdh ditentukan)
2. Nila "jam" yg di kolom 'kelebihan' di dapat dari = "jumlah jam" - Jam Normal (6jam - 4 jam = 2 jam)
3. Nilai "Jumlah" di dapat dari = "jam" + "jumlah jam" (6 jam 10 menit + 2 jam = 8 jam 10 menit)
4. Nilai Total di dapat dari = "Jumlah" X 30 hari (8 jam 10 menit X 30 = 345 jam)
nah karena logikanya saya belum dapat untuk menterjemahkannya ke bahasa pemograman makanya pada post2 berikutnya saya sedikit melenceng yang mana yang saya buat yaitu form input absen
dengan tujuan rencana saya nanti ouputnya ada dua tampilan berbeda yaitu :
http://postimg.org/image/8lqbux5x9/
http://postimg.org/image/4sta7kz7l/
yang mana rencana saya masing2 nilainnya nanti akan diambil dari database sesuai data yang dipanggil pada halaman outputnya
nah kenapa saya mencoba pelajari kasus seperti ini karena menurut saya sangat ribet,
oleh sebab itu saya coba pelajari dulu dari awal yaitu mulai dari input data ke database kemudian memanggil data yg sudah direcord di database untuk ditampilkan ke halaman web

nah ternyata sambil belajar itu saya dapat ilmu baru yaitu tentang PDO prepare stetment yg sebelumnya belum saya pelajari, dan setelah saya baca2 ternyata PDO ini bagus untuk data objek dan juga katanya untuk system login lebih bagus segi keamanannya, jadi walaupun hasil yg ingin saya pelajari belum berhasil tapi setidaknya saya dapat ilmu baru
 
Last edited:
kalau dikehidupan nyata kira" ini untuk apayah? karena kalau untuk absensi ini kurang pas sih sepertinya (input nya ok, yang saya binggung output nya)
karena saya belum nangkap nih (ini juga ilmu, menjelaskan maksud kepada orang lain) hoho
kolom hari isinya senin, total 245 jam.
apa udah pasti bisa langsung dikali 30 yah? sedangkan user/orang/mhs tersebut datang dan pulang 1 kali aja
 
Kemudian apakah di jam masuk dan jam keluar memungkinkan untuk berbeda hari misalnya jam masuk 29.09.2014 09.50pm jam keluar 30.09.2014 11.00am
Kalau memungkinkan berarti jam masuk dan jam keluar nha jga butuh tanggal.
Krena sblum kita mulai buat harus tau dulu aturan mainnya. Jdi menurut saya jangan coding on the fly (sambil coding bru dipikirin maunya apa)
 
kalau dikehidupan nyata kira" ini untuk apayah? karena kalau untuk absensi ini kurang pas sih sepertinya (input nya ok, yang saya binggung output nya)
heheheh kl untuk kebutuhan nyatanya jg saya blm tahu om apakah system seperti ini akan dipakai atau tdk,
jd sebenarnya target saya coba ambil pelajari kasus seperti ini untuk belajar saja "semampu apa saya bisa mengaplikasikan sebuah system dan logika saya dan kemudian menterjemahkannya ke bahasa program"
kolom hari isinya senin, total 245 jam.
apa udah pasti bisa langsung dikali 30 yah? sedangkan user/orang/mhs tersebut datang dan pulang 1 kali aja
nah ini masukan yg sangat bagus karena belum tentu dalam 30 hari itu pasti masuk bisa saja ada yg ga masuk dan sebagainya,
hmmmmm saya punya ide, mungkin hasilnya bs dgn penjumlahan total saja dalam satu bulan tersebut
atau mungkin ada ide lain om ?

Kemudian apakah di jam masuk dan jam keluar memungkinkan untuk berbeda hari misalnya jam masuk 29.09.2014 09.50pm jam keluar 30.09.2014 11.00am
Kalau memungkinkan berarti jam masuk dan jam keluar nha jga butuh tanggal.
Krena sblum kita mulai buat harus tau dulu aturan mainnya. Jdi menurut saya jangan coding on the fly (sambil coding bru dipikirin maunya apa)

benar banget om, bisa jadi hari senin masuknya pukul 07:15 dan pulang pukul 14:00 dan hari selasa bisa jadi juga masuk pukul 09:45 dan pulang pukul 11:15

Thanks banget om banyak ilmu dan pelajaran baru yg saya dapat dari pembahasan ini
 
Status
Not open for further replies.
Back
Top