Tolong pilih kategori sesuai, jenis posting (pertanyaan atau bukan) dan sertakan tag/topik yang sesuai misal komputer, php, mysql, dll.
Promosi atau posting tidak pada tempatnya akan kami hapus.
Mencantumkan kode program di posting Anda, tolong ikuti aturan yang sesuai, baca http://diskusiweb.com/discussion/39204/aturan-cara-menyisipkan-kode-program-di-diskusiweb

Baca cara posting gambar/image di post Anda: http://www.diskusiweb.com/discussion/47345/cara-menyisipkan-menyertakan-image-pada-posting/p1

[ASK] Bagaimana cara membuat kode otomatis dengan PDO

Salam Master semua,

saya baru belajar PDO , membuat koneksi sudah bisa dan crud juga udah bisa,
saat ini kendala saya , saya membuat kode otomatis yang generate dengan PHP tapi dengan PDO, saya mencoba kode dibawah ini cuma bisa menampilkan BR001 terus, untuk kode ke dua tidak bisa BR002 dstnya. Mohon dibantu , kira2 kekurangannya dimana ya?
<?php
include "koneksi.php";
$sql = $conn->prepare("SELECT max(kode) as maxKode FROM pemasukan");
$sql->execute();
$hasil = $sql->fetch();
$kodeBarang = $hasil['maxKode'];
$noUrut = (int) substr($kodeBarang, 3, 3);
$noUrut++;
$char = "BR";
$newID = $char . sprintf("%03s", $noUrut);
 
?>



Mohon bantuannya , sebelum dan sesudah nya saya ucapkan terimakasih.

Tanggapan

  • edited December 2
    kode di generate di koding ?

    coba dipikir panjang dulu mas ...

    taruh kata bisa jalan ...
    berapa user yg kira2 bisa pake aplikasi ini secara bersamaan ?
    semisal ada 2 user aja dah ... user A & B

    A request halaman, dapat kode BR001,
    di increment jadi BR002, belum disimpan, masih isi yg lain.

    B request halaman, dapat kode BR001 juga, karena yg dari A belum disimpan,
    di increment jadi BR002, belum disimpan, masih isi yg lain.

    bagaimana kejadiannya kalo 2 user itu simpan data ?
    sama2 isiannya dapat kode BR002.

    sekalipun elo bikin field nya unique, salah satu pasti jadi error.
    dan terpaksa harus isi ulang form lagi dari awal.
    tapi user pasti bingung,
    "gw isi bener, kok error ?"
    - oh, error nya karena kode kembar
    "lho gw ndak isi kode kok"
    - itu kode di generate by program
    ... dan user pun bengong "kenapa salah programmer ditimpakan ke gw yak" :D

    itu baru 2 user ... gimana kalo 100 user isi kode barengan ? :D
    100 user dapet kode baru BR002 semua, lalu simpan barengan :D
    1 doang yg masuk, 99 orang ngamuk-ngamuk :D



    btw, sudah banyak kok yg bahas ttg kode di aplikasi di tret2 lama ...
    http://www.diskusiweb.com/discussion/42933/kode-otomatis
    http://www.diskusiweb.com/discussion/44475/membuat-no-pendaftar-otomatis
    http://www.diskusiweb.com/discussion/49029/membuat-nik-unik-otomatis-di-codeigniter
  • terimakasih masukkannya master, tapi ini untuk penggunaan pribadi kok master. user nya cuma saya sendiri.

    saya mencoba belajar pemrograman dengan membuat pembukuan sendiri yang dimana sebelumnya saya menggunakan excell tapi saya coba dengan membuat form input crud sendiri.

    mohon masukannya master.
    terimakasih sebelumnya :)
  • edited December 2
    ya kalo pun dipake sendiri ... bikinnya dgn alur dan logika yg bener.
    siapa tau lain waktu kodenya bisa dipake ulang di project yg berbeda.
    kalo masalah pilihan sih emang terserah elo mau pake alur kaya apa.

    dgn asumsi tulisan awal elo benar, bahwa elo sdh bisa koding crud nya,
    artinya query select sdh bisa dan jalan ...
    dan data sdh ada isinya.

    kalo yg awal itu kenapa dapetnya selalu 002 ...
    ya karena emang belum pernah elo insert ke database.
    di database datanya emang cuma ada yg 001.

    kalo mau dapet 003, ya data yg 002 harus elo insert ke database.
    baru hasil max() nya jadi "BR002", elo +1 jadinya BR003.
    begitu seterusnya.
  • Makasi master,
    Iya di database yg berhasil ke input selalu 001,
    Walau sudah dijumlahkan tapi selalu dapat 001.

    Gimana caranya ya master, biar dapat 002 dstnya, karena 002 aja ga pernah dapat atau gagal incrementnya.
  • edited December 2
    koding utuh nya kaya apa to ?
    itu setelah generate kode sudah di INSERT ke database ?
    koding yg elo tunjukin di atas ndak ada INSERT nya.

    kalo ndak pernah di INSERT ya ndak akan pernah nambah.
    karena hasil MAX() nya selalu itu2 aja.
  • edited December 4
    Maaf mas ini kode lengkapnya:

    file koneksi:
    <?php
    $host = "localhost";
    $username = "root";
    $password = "";
     
    try{
    $conn = new PDO("mysql:host=$host;dbname=dataku",$username, $password);
    $conn->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
    }
    catch(PDOException $e){
    echo "Connection failed: ".$e->getMessage();
    }
    ?>


    File Input nya:
    https://gist.github.com/anonymous/61abe965b036f08cc8c450a2e1d41756

    dan file save.php nya
    <?php
    include "koneksi.php";
     
    $kde = $_POST['kode'];
    $user = $_POST['user'];
    $tgl = $_POST['tanggal'];
    $jml = $_POST['jumlah'];
     
    try{
    $sql = "INSERT INTO pemasukan (kode,user,tanggal,jumlah)
    VALUES ('$kde','$user','$tgl','$jml')";
    $conn->exec($sql);
    echo "berhasil disimpan";
    }
    catch(PDOException $e){
    echo $sql."&lt;br>".$e->getMessage();
    }
    ?>
  • edited December 4
    ndak ada masalah dgn koding elo.
    gw coba jalan.

    isi form dgn benar, simpan,
    bener masuk kode nya sesuai yg elo mau.
  • edited December 4
    oh iya mas makasi ga masalah ternyata, soalnya kemarin saya coba selalu masuk 001,
    mungkin saya belum clear chache atau gimana.

    Maaf mau tanya lagi, saya agak bingung dengan substr(),sudah baca manualnya di
    http://php.net/manual/en/function.substr.php

    tapi masih agak bingung,
    klo misal saya mau bikin kode seperti ini: PAY17A0001 , PAY17A0002 , dst
    apakah benar dengan begini:

    substr($kodePay, 8)

    saya test dimana seharusnya hasilnya 10 digit tapi hasilnya PAY17A002 ==> 9 digit .

    kira2 format yang benar agar PAY17A0002 gimana ya mas?

    makasi banyak.
  • di test aja to mas ...
    pake script sederhana biar gampang.

    <?php
    $str = 'PAY17A0001';

    echo substr($str,9); echo '<br>';
    echo substr($str,8); echo '<br>';
    echo substr($str,7); echo '<br>';
    echo substr($str,6); echo '<br>';

    echo substr($str,-1); echo '<br>';
    echo substr($str,-2); echo '<br>';
    echo substr($str,-3); echo '<br>';
    echo substr($str,-4); echo '<br>';
    ?>

    <?php
    $str = 1;

    echo sprintf('%02s',$str); echo '<br>';
    echo sprintf('%03s',$str); echo '<br>';
    echo sprintf('%04s',$str); echo '<br>';
    echo sprintf('%05s',$str); echo '<br>';
    ?>
  • makasi mas.
    mantap
Sign In or Register to comment.