Sebelumnya saya pengen ngucapin Selamat Hari Raya Idil Fitri bagi yang Merayakannya, Mohon maaf lahir dan batin.


untuk tablenya lebih kurang begini mas :

|a_101 |a_102 |a_103 |
|A10001 |Tes #1 |Percobaan #1 |
|A10002 |Tes #2 |Percobaan #2 |
|A10003 |Tes #3 |Percobaan #3 |
|.... |... |... |
|.... |... |... |

Mas, bagaimana caranya jika pada saat menyimpan data, khususnya untuk field "a_101" akan tersimpan A10001, jika belum ada data yang disimpan. nah, jika sudah ada maka akan tersimpan A10002,A10003,A10004,A10005 dan seterusnya ...

Mohon bantuannya Mas ya ...
Silahkan login untuk menjawab!
0
Loading...
Bella · Sep 4, 2011 · 0 Suka · 0 Tidak Suka
terima kasih mas atas pencerahannya.

oh iya mas, bagaimana perintah untuk menampilkan nilai increment yang terakhir ?
Bagaimana cara merubah data bertype Character ke Number ? dan sebaliknya (Number ke Character) ?
umpama "field A_101" tersimpan 00001, nah saya mau ngambil dari kanan sebanyak n charakter.
0
Loading...
Ellyx Christian · Sep 4, 2011 · 0 Suka · 0 Tidak Suka
varchar tidak memiliki nilai increment. Jadi akan susah mendapatkan nilai terakhir. kecuali kamu tambahkan satu field lagi "timestamp" bertipe datetime yang isinya adalah tanggal dan waktu data disimpan. Dan itupun tidak akan menghasilkan nilai yang akurat jika ada data yang disimpan pada waktu yang sama.
0
Loading...
Bella · Sep 4, 2011 · 0 Suka · 0 Tidak Suka
oohh gitu ya mas ..., trus perintah untuk menampilkan nilai increment yg terakhir gimana mas ? bantuin dong ... :(
0
Loading...
Ellyx Christian · Sep 5, 2011 · 0 Suka · 0 Tidak Suka
$sql = "select max(nama_field) from nama_table";
$row = mysql_fetch_array(mysql_query($sql));
$lastId = $row[0];
ref:http://www.myphptutorials.com/tutorials/222/menampilkan-data-beberapa-tabel
0
Loading...
Bella · Sep 6, 2011 · 0 Suka · 0 Tidak Suka
Terima kasih mas saya berhasil, hasil dari percobaan saya, untuk field "b_101" typenya saya tetap menggunakan varchar, namun pada saat input data awal, saya inputkan secara manual, sedangkan untuk data kedua dan seterusnya saya menggunakan coding sbb :
<?php
require_once( '../opendb.php' );
require_once( '../setudf.php' );


// Mengambil dari form Inputan.
$nama      = $_POST['comNama'];
$harga     = $_POST['txtHarga'];
$jumlah    = $_POST['txtJumlah'];
$merk      = $_POST['comMerk'];
$warna	   = $_POST['comWarna'];
$berat     = $_POST['comBerat'];
$tglterima = date_to_db( $_POST['txtTglTerima'] );
$namaPen   = $_POST['txtNamaPen'];
$kondisi   = $_POST['comKondisi'];
$posisi	   = $_POST['comPosisi'];


if( $_POST['btn_update'] == 'Update' ) {
	// Proes Update ....

} else {
	// Proses Insert ...
	$db = "SELECT MAX(b_101) AS last_id from tb_brg";
	$qu = mysql_query($db);
	$tampil = mysql_fetch_array( $qu );
	$last_id = $tampil['last_id'];

	//echo "Id terakhir yang tersimpan : ".$last_id."</br>";

	$awal   = "A";
	$tambah = 1;
	$ambil  = substr($last_id,1,12);
	$jadi   = $ambil + $tambah;
	$new_id = $awal.$jadi;

	/*
	echo "<br> yang di ambil dari Id terakhir : ".$last_id. " adalah : ".$ambil."</br>";
	echo "Maka ".$ambil." di tambahkan ". $tambah." = ".$jadi.",</br>";
	echo "dan Id yang akan di simpan sekarang adalah : ".$new_id."</br>";
	*/


	$simpan = "INSERT INTO tb_brg VALUES('$new_id','$nama','$harga','$jumlah',
					     '$merk','$warna','$berat','$tglterima',
					     '$namaPen','$kondisi','$posisi')";
	$run     = mysql_query( $simpan );
	if ( $run )
		$msg = "Data berhasil di simpan";
	else
		$msg = "Data tidak dapat disimpan ..!! ".mysql_error();
}
?>


Nah, setelah dijalankan coding tersebut, field b_101, tersimpan seperti yang saya harapkan
(A100000000001,A100000000002,A100000000003,A100000000004,...), setelah 20 record saya coba untuk nyimpan,kemudian saya hapus semua record yg tersimpan pada tb_brg teserbut. lalu pada codingnya, saya tambahkan perintah mysql_num_rows(), untuk pengecheckan data ada atau tidak, jika ada, maka ditambahkan 1 (satu), dan jika tidak ada, maka field b_101 akan tersimpan A100000000001. untuk codingnya saya ubah begini mas :
<?php
require_once( '../opendb.php' );
require_once( '../setudf.php' );

// Mengambil dari form Inputan.
$nama      = $_POST['comNama'];
$harga     = $_POST['txtHarga'];
$jumlah    = $_POST['txtJumlah'];
$merk      = $_POST['comMerk'];
$warna	   = $_POST['comWarna'];
$berat     = $_POST['comBerat'];
$tglterima = date_to_db( $_POST['txtTglTerima'] );
$namaPen   = $_POST['txtNamaPen'];
$kondisi   = $_POST['comKondisi'];
$posisi	   = $_POST['comPosisi'];

if( $_POST['btn_update'] == 'Update' ) {
	// Proes Update ....

} else {
	// Proses Insert ...
	$db = "SELECT MAX(b_101) AS last_id from tb_brg";
	$qu = mysql_query($db);
	$tampil = mysql_fetch_array( $qu );
	if ( mysql_num_rows( $qu ) > 0 ) {
		$last_id = $tampil['last_id'];

		//echo "Id terakhir yang tersimpan : ".$last_id."</br>";

		$awal   = "A";
		$tambah = 1;
		$ambil  = substr($last_id,1,12);
		$jadi   = $ambil + $tambah;
		$new_id = $awal.$jadi;

		/*
		echo "<br> yang di ambil dari Id terakhir : ".$last_id. " adalah : ".$ambil."</br>";
		echo "Maka ".$ambil." di tambahkan ". $tambah." = ".$jadi.",</br>";
		echo "dan Id yang akan di simpan sekarang adalah : ".$new_id."</br>";
		*/

		$simpan = "INSERT INTO tb_brg VALUES('$new_id','$nama','$harga','$jumlah',
					     	     '$merk','$warna','$berat','$tglterima',
					     	     '$namaPen','$kondisi','$posisi')";
		$run     = mysql_query( $simpan );
		if ( $run )
			$msg = "Data berhasil di simpan";
		else
			$msg = "Data tidak dapat disimpan ..!! ".mysql_error();
	} else {
	    $a = "A";
	    $b = "100000000001";
	    $c = $a.$b;
	   
	    // Tampilkan Hasilnya.
	    echo "<br>Table kosong maka, Id yg akan di simpan : ".$c."</br>";

	    $save  = "INSERT INTO tb_brg VALUES('$c','$nama','$harga','$jumlah',
		 			        '$merk','$warna','$berat','$tglterima',
					        '$namaPen','$kondisi','$posisi')";

	    $hasil = mysql_query( $save );
	    if ( $hasil )
		 $msg = "Data berhasil di simpan";
	    else
		 $msg = "Data tidak dapat disimpan ..!! ".mysql_error();
	 }
}
?>


Namun setelah saya jalankan coding tersebut, koq nggak ada reaksi apa2 ya mas ... ??
mumet kepalaku aaaaarrrrgggghhh ......!!! bantuin dong mas ...... :(
0
Loading...
Ellyx Christian · Sep 8, 2011 · 0 Suka · 0 Tidak Suka
kamu tidak bisa menggunakan SELECT MAX(b_101) AS last_id from tb_brg jika menggunakan varchar. itu hanya bisa digunakan untuk field primary int auto_increment. Jika digunakan pada varchar, hasilnya tidak akan benar, contoh jika kamu punya data seperti ini
A100000000013,A1000000000031 SELECT MAX(b_101) AS last_id from tb_brg hasilnya adalah A100000000013 bukan A1000000000031
0
Loading...
Bella · Sep 9, 2011 · 0 Suka · 0 Tidak Suka
Mas sebelumnya saya mohon maaf, bukan bearti saya tidak mengindahkan pejelasan dari mas Ellyx, berdasarkan dari percobaan saya, saya menginput data sampai dengan record ke 100, kemudian saya check di tb_brg untuk filed b_101 tersimpan dari A100000000001 s/d A100000000100 lalu saya coba lagi untuk input beberapa record, dan field b_101 yang terakhir tersimpan A100000000106. Sekali lagi saya mohon maaf, jika saya liat penjelasan dari mas kayaknya nggak ngaruh deh.

Namun yang manjadi kendala saya, jika saya tambahin mysql_num_rows() untuk pengecheck data, ada atau tidak, jika ada, maka di tambah 1 dan jika tidak makan untuk field b_101 akan tersimpan A100000000001 seperti pada coding di atas. Namun jika dijalankan coding tersebut nggak ada reaksi apa-apa ...
0
Loading...
Ellyx Christian · Sep 9, 2011 · 0 Suka · 0 Tidak Suka
oh salah ya penjelasan saya? sekarang coba mana yang lebih besar A1999999999999 (14 digit) apa A10000000000000 (15 digit) ?
0
Loading...
Bella · Sep 10, 2011 · 0 Suka · 0 Tidak Suka
Jadi begini mas, dari penjelasan mas Ellyx, apabila saya mempunyai data A100000000013,
A100000000031. SELECT MAX(b_101) AS last_id from tb_brg hasilnya adalah A100000000013
bukan A1000000000031.

Sementara dari hasil percobaan saya, saat data terakhir yg tersimpan A100000000030, dan saya coba lagi untuk input data selanjutnya, maka b_101 tersimpan A100000000031. Untuk field b_101 saya menentukan panjangnya 13 Digit, nah kalau saya bandingkan penjelasan dari mas Ellyx, dengan percobaan saya maaf..., makanya saya bilang nggak ngaruh, berdasarkan hasil dari percobaan saya.

Menurut saya A1999999999999 dan A10000000000000, saya meliat dari 2 sisi.
sisi pertama jelas lebih besar 15 Digit, dari pada 14 Digit.
sisi kedua jelas lebih besar 9 dari pada 0.