Duplicate entry for key 'PRIMARY'

para mastah tolong di bantu dong saya masih newbie nihhh gimana sih caranya agar ketika kita menginsert data primary yang sama akan muncul tampilan error yang kita buat atau field diinputnya ditandai bahwa nama field telah dipakai agar tidak tampil eror seperti ini :

Error Number: 1062

Duplicate entry 'pkkm' for key 'PRIMARY'

INSERT INTO `gallery` (`nama_acara`, `subject`, `date`, `gambar_acara`) VALUES ('pkkm', 'aa', '11/Mar/2018 08:15 PM', 'Acara_2018-03-11_TIME_08-15-08-PM_22.png')

Filename: C:/xampp/htdocs/HMIFFF/system/database/DB_driver.php

Line Number: 691

ini kodingan controllernya

 public function acara_gallery(){
if($this->session->has_userdata('username')){
	$this->form_validation->set_rules('nama_acara','Nama acara','trim|required|min_length[3]');
		$this->form_validation->set_rules('subject','subject','required');
		$this->form_validation->set_rules('date','required');
		if (empty($_FILES['gambar_acara']['name']))
{
	$this->form_validation->set_rules('gambar_acara', 'GAMBAR', 'required');
}

if($this->form_validation->run()===FALSE){
			$this->load->view('admin/pages/static/header');
	$this->load->view('admin/pages/forms/galleryacara');
		$this->load->view('admin/pages/static/footer');
}else{
	if (!empty($_FILES['gambar_acara']['name']))
{
	 $config['upload_path'] = './uploads/';
	 $config['allowed_types'] = 'gif|jpg|png|jpeg';
	 $new_name = "Acara_".date('Y-m-d')."_TIME_".date('h-i-s-A')."_".$_FILES['gambar_acara']['name'];
			$config['file_name'] = $new_name;

	 $this->upload->initialize($config);

	 if ($this->upload->do_upload('gambar_acara'))
	 {

			 $img = $this->upload->data();

			 $this->admin_model->set_gallery($new_name);
			 $this->session->set_flashdata('success', 'Insert data succes');

			 redirect('admin/galleryacara');

	 }
	 else
	 {
			 $this->session->set_flashdata('error', 'Somthing worng. Error!!');
			 echo $this->upload->display_errors();

	 }
}

}

}else {
	redirect('admin/login');
}

	}

ini kodingan admin model saya

 public function set_gallery($file_name){
  $this->load->helper('url');
  $nmacara=url_title($this->input->post('nama_acara'),'dash',true);
  $this->load->library('upload');
  $data= array(
    'nama_acara'=>$nmacara,
    'subject' =>$this->input->post('subject'),
    'date' =>$this->input->post('date'),
    'gambar_acara'=>$file_name
 );
 return $this->db->insert('gallery',$data);
}

public function set_message(){
    $data=array(
      'nama' =>$this->input->post('nama') ,
      'email' =>$this->input->post('email') ,
      'message'=>$this->input->post('message'),
      'date'=>$this->input->post('date')
  );

  return $this->db->insert('contact_message',$data);
}

sama sekaliang dong kalo key unique kegunaannya di php atau di database apa aja sih ?bakal berpengaruhnya diapa aja terimakasih agan agan mastah :)

avatar farisdewantoro
@farisdewantoro

119 Kontribusi 16 Poin

Diperbarui 6 tahun yang lalu

4 Jawaban:

sebelumnya udah ada validasinya gan? bisa dilihat validasinya seperti apa?

Kalau belum/sudah, Seharusnya Validasi ditaruh sebelum fungsi set_gallery dipanggil, misal:


//Buat validasi pkkm
public function check_pkkm($nama_acara){
hasil = db->getPkkm($nama_acara);
return hasil;
}

//Validasi Pkkm tersebut, jika null / 0 maka di insert
if(check_pkkm == null || check_pkkm == 0){

//Insert ke database
set_gallery;

//Jika ada pkkm tersebut, maka muncul error message (duplicate)
} else {
echo "error duplicate" . $nama_acara;
}

"kalo key unique kegunaannya di php atau di database apa aja sih ?bakal berpengaruhnya diapa aja"

jawab: unique key tujuannya supaya tidak ada duplicate data (sehingga tidak berulang2), pengaruhnya supaya data lebih spesifik (tidak sulit untuk di filter).

avatar keccikun
@keccikun

364 Kontribusi 196 Poin

Dipost 6 tahun yang lalu

gann disini saya menggunakan routes jadi ketika menekan button akan di arahkan ke function yang saya inputkan nahh terus gimana caranya agar function yang agan @abyanjksatu akan saya terapkan? apakah validasinya diterapkan di function insert?

avatar farisdewantoro
@farisdewantoro

119 Kontribusi 16 Poin

Dipost 6 tahun yang lalu

Jawaban Terpilih

Ralat, Validasinya bisa didalam function set_gallery dengan membuat fungsi check_pkkm dulu, seperti ini:


//pertama buat dulu fungsi validasinya + query db nya
public function check_pkkm($nama_acara){
hasil = db->countPkkm($nama_acara);
return hasil;
}

//ini saat set_gallery dipanggil (buatan agan)
public function set_gallery($file_name){
  $this->load->helper('url');
  $nmacara=url_title($this->input->post('nama_acara'),'dash',true);

//Disini seharusnya ada validasi untuk $nmacara
if (check_pkkm($nmacara) == null || check_pkkm($nmacara) == 0){
//Jika belum ada $nmacara tersebut, maka Melakukan insert
 $this->load->library('upload');
  $data= array(
    'nama_acara'=>$nmacara,
    'subject' =>$this->input->post('subject'),
    'date' =>$this->input->post('date'),
    'gambar_acara'=>$file_name
 );
 return $this->db->insert('gallery',$data);

} else {
//Jika sudah ada, maka Melakukan Error message duplicate
return echo "error duplicate" . $nmacara;
}
}

**btw sorry kalo salah syntax nya, intinya: 1. bikin fungsi check duplicate nya (hasilnya integer/hasil count dari pkkm nya) 2. buat if else untuk check $nmacara nya, jika 0 maka insert, jika tidak 0 maka duplicate data

**untuk query db->countPkkm($nama_acara) nya bisa kaya gini:


SELECT COUNT(Pkkm) AS hasil FROM gallery;

avatar keccikun
@keccikun

364 Kontribusi 196 Poin

Dipost 6 tahun yang lalu

gannn functionnya ga kepanggil terus nih kenapa ya?

avatar farisdewantoro
@farisdewantoro

119 Kontribusi 16 Poin

Dipost 6 tahun yang lalu

Login untuk ikut Jawaban