Membuat Kode Otomatis Dengan PHP Mysqli Prosedural

Halaman saat register User



<?php require_once "core/init.php";

$error='';

if( isset($_POST['submit']) ){
  $nama   = $_POST['username'];
  $email  = $_POST['email'];
  $alamat = $_POST['alamat'];
  $telp   = $_POST['telp'];
  $pass   = $_POST['password'];

if(!empty(trim($nama)) && !empty(trim($email)) && !empty(trim($alamat)) && !empty(trim($telp)) && !empty(trim($pass)) ){

  if(register_cek_nama($nama) ){
    //memasukan database
          if(register_user($nama, $email, $alamat, $telp, $pass)) {
            $error= 'berhasil daftar register';
          }else{
            $error= 'gagal register';}
      }else{
      $error= ' nama sudah ada, tidak bisa daftar ';}
  }else{
      $error= 'form tidak boleh kosong';
  }
}

?>

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">

    <title></title>

  <!-- Latest compiled and minified css -->
     <link rel="stylesheet" href="view/css/bootstrap.min.css">
  <!-- optional theme-->
     <link rel="stylesheet" href="view/css/bootstrap-theme.min.css">
  <!--my custom css-->
     <link rel="stylesheet" href="view/css/style.css">
  <!--font-awesome-->
     <link rel="stylesheet" href="view/font-awesome/css/font-awesome.min.css">

<!---------------------------------->

<style>

body{

  font-family: arial monospace;
  background-color :#eee;
}

.container{

  display: flex;
  align-items: center;
  justify-content: center;}

.page{

padding:5px;
margin-top: 40px;
margin-bottom: 40px;
height: 510px;
width: 400px;
background: #fff;
}

.content{
  height: 100%;
  padding: 40px;
  display: flex;
  align-items: center;
  justify-content: center;
  text-align: center;
}

.logo-register h2{
  font-family:Chaparral Pro Light;
font-weight: bold;
}

.logo-register h5{
  font-family: calibri;
  color:#808080;
  border-bottom:1px solid #eee;
  padding-bottom: 5px;

}

.form-group .form-control{
  border-radius: 0;
  border:1px solid #eee;
  padding: 5px;
}

.bawah-submit h5{  font-family: calibri;
                                color:#808080;}

.punya-akun h5{font-family: calibri;
                    color:#808080;}

  #error{color: rgb(212, 19, 65);
                    }

</style>

</head>

<body>

              <div class="container">

                          <div class="page">
                                <div class="content">
                                    <div class="row">
                                        <div class="logo-register">
                                                <h2><a href="index.php">Wherco</a></h2>
                                              <h5>Buat akun untuk melakukan order</h5>
                                        </div>

                                              <?php
                                                  if(isset($_SESSION['msg'])) { ?>
                                                <div id="error">
                                                    <?php echo $_SESSION['msg'];
                                                    unset($_SESSION['msg']); ?>
                                                </div> <br>
                                              <?php }  ?>

                                        <?php if($error != ' '){ ?>
                                            <div id="error">
                                                <?php echo $error; ?>
                                            </div>
                                          <?php } ?>

                                  <form class="form-horizontal" action="register.php" method="post">
                                        <div class="form-group">
                                             <input type="text" class="form-control" style="text-transform:lowercase;"  name="username" placeholder="Nama lengkap" Required autofocus>
                                          </div>

                                          <div class="form-group">
                                               <input type="email" class="form-control"  name="email" placeholder="Alamat email" Required>
                                          </div>

                                          <div class="form-group">
                                              <textarea class="form-control" rows="3"  name="alamat" placeholder="Alamat tinggal" Required autofocus ></textarea>
                                            </div>

                                            <div class="form-group">
                                                 <input type="number" class="form-control"  name="telp" placeholder="Nomer yang bisa di hubungi" Required>
                                            </div>

                                            <div class="form-group">
                                                 <input type="password" style="text-transform:lowercase;"  class="form-control" name="password"   id="exampleInputEmail1" placeholder="Kata sandi untuk akun order" Required>
                                            </div>

                                            <div class="form-group">
                                              <input type="submit" name="submit" class="btn btn-info btn-block" value="Daftar">
                                            </div>

                                            <div class="bawah-submit">
                                                    <h5> Dengan mendaftar anda menyetujui Ketentuan<br>
                                                    dan Kebijakan Privasi kami </h5>
                                          </div>

                                          <div class="punya-akun">
                                            <h5> Punya akun? <a href="login.php">Masuk</a> </h5>
                                          </div>
                                </div>
                          </div>
                      </div>
                    </div

function register user



<?php

function register_user($nama, $email, $alamat, $telp, $pass){
global $connect;

//mencegah sql injection
$nama   = mysqli_real_escape_string($connect, $nama);
$email  = mysqli_real_escape_string($connect, $email);
$alamat = mysqli_real_escape_string($connect, $alamat);
$telp   = mysqli_real_escape_string($connect, $telp);
$pass   = mysqli_real_escape_string($connect, $pass);

//ssebelum insert kita haru mmengubah sebelumnya dengana hash
$pass = password_hash($pass, PASSWORD_DEFAULT);

  $query = "INSERT INTO pelanggan (username, email, alamat, telp, password) VALUES ('$nama', '$email', '$alamat', '$telp', '$pass')";

  if( mysqli_query($connect, $query) ){

        return true;
      }else{
        return false;
  }
}

Pertanyaan saya bagaimana cara membuat id dari kode saya menambahkan text otomatis contoh: id "02" menjadi "pelanggan02" atau "p02"

terimakasih.

avatar waliyurachman29
@waliyurachman29

58 Kontribusi 8 Poin

Diperbarui 7 tahun yang lalu

11 Jawaban:

id yang didatabase?

avatar CodenameJR
@CodenameJR

278 Kontribusi 107 Poin

Dipost 7 tahun yang lalu

Dalam code anda tidak kelihatan input untuk "id", jadi saya asumsikan id AUTOINCREMENT dan INTEGER. Setau saya tidak bisa memasukkan "pelanggan02" atau "p02" ke kolom INTEGER. Kecuali ada 1 kolom lagi berupa STRING

Misalkan uniqueid VARCHAR, jadi sekedar gambaran:


$newid = "SELECT (MAX(id)+1) FROM table";

$query = "INSERT INTO pelanggan (uniqueid, username, email, alamat, telp, password) VALUES ( CONCAT('pelangan',$newid), '$nama', '$email', '$alamat', '$telp', '$pass' )";


avatar mltobing
@mltobing

114 Kontribusi 77 Poin

Dipost 7 tahun yang lalu

makasih responnya. saya id pakek auto incremen dia kan udah otomatis 1-2-3-4-5 dst, maksud saya dsini bagaimana pas saya insert dia nambah lah mas seperti yang saya jelaskan sebelumnya, bisa menjadi pelanggan02 atau p3. termakash

avatar waliyurachman29
@waliyurachman29

58 Kontribusi 8 Poin

Dipost 7 tahun yang lalu

maksudnya id nya itu auto increment tapi isinya pelanggan1, pelanggan2, pelanggan3 gitu?

avatar Nandar
@Nandar

648 Kontribusi 204 Poin

Dipost 7 tahun yang lalu

iya mas benar. bingung sih

avatar waliyurachman29
@waliyurachman29

58 Kontribusi 8 Poin

Dipost 7 tahun yang lalu

Ga bisa Mas. id autoincrement berarti bertipe integer (angka) anda paksa masukkan input 'pelanggan02'. 'pelanggan02' ini string bukan integer, kecuali anda terapkan seperti yang saya sebutkan di atas.

Referensi: https://sekolahkoding.com/forum/bagaiman-cara-primary-key-auto-increment-dengan-kode-huruf

avatar mltobing
@mltobing

114 Kontribusi 77 Poin

Dipost 7 tahun yang lalu

syaa pernah liat. di program barang dia membuat kode otomatis dengan idnya contoh brg0976. itu gimana mas cara kerjanya ? bedaya saya disini saya mau di hidden di belakang layar, user yang menggunakan tidak tahu.

avatar waliyurachman29
@waliyurachman29

58 Kontribusi 8 Poin

Dipost 7 tahun yang lalu

tidak tahu dapat kode apa

avatar waliyurachman29
@waliyurachman29

58 Kontribusi 8 Poin

Dipost 7 tahun yang lalu

ga bisa, auto increment hanya untuk INT value. lebih baik tambahkan kolom varchar misalnya `id_slug` pada tabel dan proses insert pakai transaksi. jadi pada saat insert, kolom `id_slug` dikosongin dulu, setelah insert berhasil itu data langsung diupdate `id_slug`nya dengan value 'pelanggan' + last_insert_id. kalau kedua proses (insert dan update) berhasil, transaksi di commit, kalau ada yg gagal di rollback.

sebenernya pakai cara @mltobing juga bisa, hanya kekurangannya bila kita tidak sengaja atau perlu menghapus data terakhir, maka kolom `id` dan `uniqueid` ga bisa cocok. misalnya `id` terakhir di database adalah 15, kalau kita hapus itu id 15 dan manambahkan data baru, kolom `id` otomatis 16 karena autoincrement, tapi `uniqueid` jadinya pelanggan15 karena (MAX(id)+1) adalah 14+1. kalau bisa memastikan bahwa tidak akan terjadi penghapusan pada database, cara @mltobing lebih simple.

avatar rachmatsasongko
@rachmatsasongko

410 Kontribusi 426 Poin

Dipost 7 tahun yang lalu

nyimak sama kasusx

avatar jamalludin
@jamalludin

114 Kontribusi 17 Poin

Dipost 7 tahun yang lalu

sudah ketemu gan, terimakasih responnya

avatar waliyurachman29
@waliyurachman29

58 Kontribusi 8 Poin

Dipost 7 tahun yang lalu

Login untuk ikut Jawaban