Kali ini kita akan mencoba untuk membangun sebuah sistem pendaftaran mahasiswa baru di mana user mulai dari mendaftar username, e-mail, dan password. Kemudian bagaimana user akan mendapat e-mail notifikasi. Juga apabila data yang diisikan sudah lengkap, maka admin akan mendapat e-mail notifikasi.
Salin kode di bawah dan simpan sebagai controller dengan nama register.php:
<?php
class Register extends CI_Controller{
public function index(){
$this->load->helper(array('url','form'));
$fields = array('username','password','email','nama_depan','nama_belakang');
$data = array();
foreach($fields as $field){
$data[$field] = '';
}
echo "Selamat Datang! Silahkan Daftar";
echo "</br>";
$this->default_page($data);
echo "Sudah punya username? Silahkan ";
echo anchor('register/login','Login');
}
public function default_page($data){
$this->load->helper(array('url','form','email'));
$this->load->view('registration',$data);
}
public function userregister(){
$this->load->helper(array('url','form','email'));
$this->load->library('form_validation');
$fields = array('username','password','email','nama_depan','nama_belakang');
foreach($fields as $field){
$this->form_validation->set_rules($field, $field, 'required');
}
if ($this->form_validation->run() == FALSE){
$data = array();
foreach ($fields as $field){
$data[$field] = '';
}
$this->load->helper(array('url','form','email'));
$this->load->view('registration',$data);
}
else{
if (valid_email($this->input->post('email')))
{
$recipient = $this->input->post('email');
$subject = "Registrasi Data Mahasiswa (Do not reply)";
$message = 'Registrasi anda berhasil. Silahkan ke localhost/CodeIgniter/index.php/register/login untuk meneruskan pendaftaran.
username anda adalah '.$this->input->post('username').' dan password anda adalah '.$this->input->post('password');
if(send_email($recipient, $subject, $message)){
$columns = array('username','password','email');
$data_mhs = array();
foreach ($columns as $column){
$data_mhs[$column] = $this->input->post($column);
}
$data_mhs['nama_mhs'] = ($this->input->post('nama_depan')).' '.($this->input->post('nama_belakang'));
$this->load->model("Tabel_model", "tabel_model");
$this->tabel_model->save($data_mhs);
echo "Registrasi berhasil! Cek e-mail anda.";
}
}
else
{
echo 'email tidak valid';
$data = array();
foreach ($fields as $field){
$data[$field] = '';
}
$this->load->helper(array('url','form','email'));
$this->load->view('registration',$data);
}
}
}
public function registration($username){
$fields = array('nrp','anak_urutan','jumlah_saudara','tempat_lahir','tanggal_lahir',
'bulan_lahir','tahun_lahir','warga_negara','agama','nama_sma','alamat_sma',
'prov_sma','jur_sma','nilai_uan','no_telp_mhs',
'nama_ortu','alamat_ortu','prov_ortu','krj_ayah','krj_ibu','ket_ayah','ket_ibu',
'alamat_mlg','prov_alamat','no_telp_ortu');
$data = array();
foreach ($fields as $field){
$data[$field] = '';
}
$resultSet = $this->tabel_model->load_user($username);
foreach($resultSet->result() as $row){
$data['nama_mhs'] = $row->nama_mhs;
$data['email'] = $row->email;
}
$data['status'] = 'new';
$data['username'] = $username;
$this->load->helper(array('url','form'));
$this->load->view('form_register',$data);
}
public function login(){
$this->load->helper(array('url','form'));
$this->load->library('form_validation');
$fields = array('username','password');
foreach($fields as $field){
$this->form_validation->set_rules($field, $field, 'required');
}
if ($this->form_validation->run() == FALSE){
$this->load->helper(array('url','form'));
$this->load->view('login');
}
else{
$this->load->model("Tabel_model", "tabel_model");
$curr_user = $this->input->post('username');
$curr_pass = $this->input->post('password');
$resultSet = $this->tabel_model->load_user($curr_user);
foreach($resultSet->result() as $row){
$username = $row->username;
$password = $row->password;
}
if (($username != $curr_user) || ($password != $curr_pass)){
echo "username atau password salah!";
$this->load->view('login');
}
else{
$this->registration($curr_user);
}
}
}
public function send(){
$config['upload_path'] = './images/';
$config['allowed_types'] = 'gif|jpg|jpeg|png';
$config['max_size'] = '1000';
$config['max_width'] = '2024';
$config['max_heigth'] = '1468';
$this->load->helper(array('url','form'));
$this->load->library('form_validation');
$this->load->library('upload',$config);
$this->form_validation->set_rules('nama_mhs', 'Nama Mahasiswa', 'required');
$this->form_validation->set_rules('tempat_lahir', 'Tempat Lahir', 'required');
$this->form_validation->set_rules('tanggal_lahir', 'Tanggl Lahir', 'required');
$this->form_validation->set_rules('bulan_lahir', 'Bulan Lahir', 'required');
$this->form_validation->set_rules('tahun_lahir', 'Tahun Lahir', 'required');
$this->form_validation->set_rules('nama_sma', 'Nama SMA Asal', 'required');
$this->form_validation->set_rules('alamat_sma', 'Alamat SMA Asal', 'required');
$this->form_validation->set_rules('jur_sma', 'Jurusan SMA', 'required');
$this->form_validation->set_rules('nilai_uan', 'Nilai UAN', 'required');
$this->form_validation->set_rules('no_telp_mhs', 'No Telp/HP Mahasiswa', 'required');
$this->form_validation->set_rules('nama_ortu', 'Nama Orang Tua/Wali', 'required');
$this->form_validation->set_rules('alamat_ortu', 'Alamat Orang Tua/Wali', 'required');
if ($this->form_validation->run() == FALSE){
$fields = array('nrp','status','nama_mhs','anak_urutan','jumlah_saudara','tempat_lahir','tanggal_lahir',
'bulan_lahir','tahun_lahir','warga_negara','agama','nama_sma','alamat_sma',
'prov_sma','jur_sma','nilai_uan','no_telp_mhs',
'nama_ortu','alamat_ortu','prov_ortu','krj_ayah','krj_ibu','ket_ayah','ket_ibu',
'alamat_mlg','prov_alamat','no_telp_ortu','email','username');
$data = array();
foreach ($fields as $field){
$data[$field] = $this->input->post($field);
}
$data['nrp'] = '';
$this->load->view('form_register',$data);
}
else{
$data = array();
$data['tabel_mhs'] = array(
array('Nama',$this->input->post('nama_mhs')),
array('Jenis Kelamin',$this->input->post('jenis_kelamin'),
'Anak ke',$this->input->post('anak_urutan'),'Jumlah Saudara',$this->input->post('jumlah_saudara')),
array('Tempat/Tanggal Lahir',($this->input->post('tempat_lahir')).'/'.
($this->input->post('tanggal_lahir')).' '.($this->input->post('bulan_lahir')).' '.($this->input->post('tahun_lahir'))),
array('Warga Negara',$this->input->post('warga_negara'),'Agama',$this->input->post('agama')),
array('SMA/SMK Asal',$this->input->post('nama_sma')),
array('Alamat SMA/SMK',$this->input->post('alamat_sma')),
array('Provinsi SMA/SMK',$this->input->post('prov_sma')),
array('Jurusan di SMA/SMK',$this->input->post('jur_sma'),'Total Nilai UAN',$this->input->post('nilai_uan')),
array('No. Telp/HP',$this->input->post('no_telp_mhs'))
);
$data['tabel_ortu'] = array(
array('Nama Orang Tua/Wali',$this->input->post('nama_ortu')),
array('Alamat Orang Tua/Wali',$this->input->post('alamat_ortu')),
array('Kota Provinsi',$this->input->post('prov_ortu')),
array('Pekerjaan Ayah',$this->input->post('krj_ayah'),'Pekerjaan Ibu',$this->input->post('krj_ibu')),
array('Keterangan Pekerjaan Ayah',$this->input->post('ket_ayah')),
array('Keterangan Pekerjaan Ibu',$this->input->post('ket_ibu')),
array('Alamat di Malang',$this->input->post('alamat_mlg')),
array('Provinsi',$this->input->post('prov_alamat')),
array('No. Telp/HP:',$this->input->post('no_telp_ortu'))
);
$fields = array('nama_mhs','jenis_kelamin','anak_urutan','jumlah_saudara','tempat_lahir','tanggal_lahir',
'bulan_lahir','tahun_lahir','warga_negara','agama','nama_sma','alamat_sma',
'prov_sma','jur_sma','nilai_uan','no_telp_mhs',
'nama_ortu','alamat_ortu','prov_ortu','krj_ayah','krj_ibu','ket_ayah','ket_ibu',
'alamat_mlg','prov_alamat','no_telp_ortu','email');
$this->load->model("Tabel_model", "tabel_model");
$data_mhs = array();
foreach($fields as $column){
$data_mhs[$column] = $this->input->post($column);
}
$data_mhs['data_lengkap'] = 1;
if($this->upload->do_upload()){
$image['upload_data'] = $this->upload->data();
$config_resize['source_image'] = $image['upload_data']['full_path'];
$config_resize['maintain_ratio'] = TRUE;
$config_resize['width'] = 150;
$config_resize['height'] = 228;
$this->load->library('image_lib', $config_resize);
$this->image_lib->resize();
$data_mhs['image_src'] = $image['upload_data']['full_path'];
}
else{
$data_mhs['image_src'] = '';
}
$recipient = 'admin@mail.com';
$subject = "Registrasi Data Mahasiswa (Do not reply)";
$message = 'Terdapat registrasi baru.
Untuk melihat daftar mahasiswa dengan data lengkap: localhost/CodeIgniter/index.php/register/site_admin/1 .
Untuk melihat daftar mahasiswa dengan data belum lengkap: localhost/CodeIgniter/index.php/register/site_admin/0 .';
if(send_email($recipient, $subject, $message)){
$this->tabel_model->update($this->input->post('username'),$data_mhs);
echo "data tersimpan";
$data['image_src'] = $image['upload_data']['full_path'];
$this->load->helper(array('url','html'));
$this->load->view('form_view',$data);
echo anchor('register','Kembali ke Index');
}
else{
echo "data gagal tersimpan";
$this->load->view('form_register',$data_mhs);
}
}
}
public function view_list($lengkap){
$this->load->helper('url');
$this->load->model('Tabel_model','tabel_model');
$fields = array('nrp','nama_mhs','anak_urutan','jumlah_saudara','tempat_lahir','tanggal_lahir',
'bulan_lahir','tahun_lahir','warga_negara','agama','nama_sma','alamat_sma',
'prov_sma','jur_sma','nilai_uan','no_telp_mhs',
'nama_ortu','alamat_ortu','prov_ortu','krj_ayah','krj_ibu','ket_ayah','ket_ibu',
'alamat_mlg','prov_alamat','no_telp_ortu');
$resultSet = $this->tabel_model->load($lengkap);
foreach($resultSet->result() as $row){
foreach($fields as $column){
echo $row->$column."|";
}
echo anchor("register/edit_mahasiswa/".$row->nrp,'Edit Mahasiswa');
echo " ";
echo anchor("register/delete_mahasiswa/".$row->nrp,'Hapus Mahasiswa');
echo "<br />";
}
}
public function site_admin($lengkap){
$this->load->library('pagination');
$this->load->model('Tabel_model','tabel_model');
$resultSet = $this->tabel_model->load();
$config['base_url'] = 'localhost/CodeIgniter/index.php/register/view_list/'.$lengkap;
$config['total_rows'] = $resultSet->num_rows();
$config['per_page'] = 10;
$this->pagination->initialize($config);
echo $this->pagination->create_links();
}
public function edit_mahasiswa($nrp){
$fields = array('nrp','nama_mhs','anak_urutan','jumlah_saudara','tempat_lahir','tanggal_lahir',
'bulan_lahir','tahun_lahir','warga_negara','agama','nama_sma','alamat_sma',
'prov_sma','jur_sma','nilai_uan','no_telp_mhs',
'nama_ortu','alamat_ortu','prov_ortu','krj_ayah','krj_ibu','ket_ayah','ket_ibu',
'alamat_mlg','prov_alamat','no_telp_ortu','username','email');
$this->load->model('Tabel_model','tabel_model');
$resultSet = $this->tabel_model->load_single($nrp);
$data = array();
foreach($resultSet->result() as $row){
foreach($fields as $column){
$data[$column] = $row->$column;
}
}
$data['status'] = 'old';
$this->load->helper(array('form'));
$this->load->view('form_register',$data);
}
public function delete_mahasiswa($nrp){
$this->load->model('Tabel_model','tabel_model');
$this->tabel_model->delete_record($nrp);
echo "Data berhasil dihapus!";
$this->index();
}
}
?>
Terdapat beberapa function baru, yaitu default_page, userregister, registration, login, serta site_admin. Begitu pula dengan index, juga mengalami perubahan. Default_page ini akan mengarahkan user ke view baru, yaitu untuk meregistrasi e-mail. Sementara userregister ini fungsinya adalah untuk validasi username dan e-mail. Registration bertujuan untuk mengarahkan user ke halaman untuk pelengkapan data. Login untuk login serta site_admin untuk pengaturan data.
Jika kita perhatikan bahwa tabel yang digunakan sama dengan bagian yang lalu. Hanya saja kita menambahkan kolom username, email, image_src, serta password. Masing-masing untuk menyimpan username, e-mail, link untuk foto, dan password.
Kode:
$recipient = $this->input->post('email');
$subject = "Registrasi Data Mahasiswa (Do not reply)";
$message = 'Registrasi anda berhasil. Silahkan ke localhost/CodeIgniter/index.php/register/login untuk meneruskan pendaftaran.
username anda adalah '.$this->input->post('username').' dan password anda adalah '.$this->input->post('password');
if(send_email($recipient, $subject, $message)){
Bertujuan untuk mengirimkan e-mail notifikasi kepada user. Jika pengiriman berhasil, maka data user akan disimpan ke database. Jika tidak, maka user akan melakukan penyimpanan ulang.
Begitu pula kode:
$recipient = 'admin@mail.com';
$subject = "Registrasi Data Mahasiswa (Do not reply)";
$message = 'Terdapat registrasi baru. Untuk melihat daftar mahasiswa dengan data lengkap: localhost/CodeIgniter/index.php/register/site_admin/1 .
Untuk melihat daftar mahasiswa dengan data belum lengkap: localhost/CodeIgniter/index.php/register/site_admin/0 .';
if(send_email($recipient, $subject, $message)){
Kode ini mengirim e-mail notifikasi pada admin apabila ada user yang melengkapi data.
Kemudian bagian
$config['upload_path'] = './images/';
$config['allowed_types'] = 'gif|jpg|jpeg|png';
$config['max_size'] = '1000';
$config['max_width'] = '2024';
$config['max_heigth'] = '1468';
$this->load->library('upload',$config);
if($this->upload->do_upload()){
$image['upload_data'] = $this->upload->data();
$config_resize['source_image'] = $image['upload_data']['full_path'];
$config_resize['maintain_ratio'] = TRUE;
$config_resize['width'] = 150;
$config_resize['height'] = 228;
$this->load->library('image_lib', $config_resize);
$this->image_lib->resize();
$data_mhs['image_src'] = $image['upload_data']['full_path'];
}
else{
$data_mhs['image_src'] = '';
}
Adalah untuk upload foto serta menyimpannya dalam server(disk). Kemudian link(path) foto tadi akan disimpan ke dalam database.
public function site_admin($lengkap){
$this->load->library('pagination');
$this->load->model('Tabel_model','tabel_model');
$resultSet = $this->tabel_model->load();
$config['base_url'] = 'localhost/CodeIgniter/index.php/register/view_list/'.$lengkap;
$config['total_rows'] = $resultSet->num_rows();
$config['per_page'] = 10;
$this->pagination->initialize($config);
echo $this->pagination->create_links();
}
Pada dasarnya site_admin adalah untuk melakukan view data mahasiswa, hanya saja dengan parameter kelengkapan data serta dilakukan pagination, membagi maksimal jumlah data yang ditampilkan per-halaman.
Adapun kita akan memerlukan dua view baru, yaitu login.php serta registration.php
Kode untuk registration.php:
<html>
<head>
<title>Pendaftaran Mahasiswa Baru</title>
</head>
<body>
<?php
echo validation_errors();
echo '<h2>Data Calon Mahasiswa</h2>';
echo form_open('register/userregister');
echo form_label('username: ','username');
echo form_input('username',$username);
echo "</br>";
echo form_label('E-Mail: ','email');
echo form_input('email',$email);
echo "</br>";
echo form_label('Password ','password');
echo form_input('password',$password);
echo "</br>";
echo form_label('Nama Depan: ','nama_depan');
echo form_input('nama_depan',$nama_depan);
echo "</br>";
echo form_label('Nama Belakang: ','nama_belakang');
echo form_input('nama_belakang',$nama_belakang);
echo "</br>";
echo form_submit('register_user', 'Daftar!');
echo form_close();
?>
</body>
</html>
Sementara kode untuk login.php:
<html>
<head>
<title>Pendaftaran Mahasiswa Baru</title>
</head>
<body>
<?php
echo validation_errors();
echo '<h2>Data Calon Mahasiswa</h2>';
echo form_open('register/login');
echo form_label('username: ','username');
echo form_input('username','');
echo "</br>";
echo form_label('Password ','password');
echo form_password('password','');
echo "</br>";
echo form_submit('login_user', 'Login');
echo form_close();
?>
</body>
</html>
form_password('password',''); Adalah bentuk inputan berupa password.
Kita juga melakukan modifikasi pada tabel_model.php serta form_view.php dan form_register.php
Pada tabel_model:
<?php
class Tabel_model extends CI_Model{
function __construct()
{
parent::__construct();
$this->load->database('akademik');
}
function save($data)
{
$this->db->insert('data_mahasiswa', $data);
//echo $this->db->last_query();
}
function load($lengkap){
$result = $this->db->get_where('data_mahasiswa',array('data_lengkap'=>$lengkap));
return $result;
}
function update($id, $data){
$this->db->set($data);
$this->db->where('username',$id);
$this->db->update('data_mahasiswa');
}
function load_single($id){
$query = $this->db->get_where('data_mahasiswa', array('nrp' => $id));
return $query;
}
function delete_record($id){
$this->db->where('nrp', $id);
$this->db->delete('data_mahasiswa');
}
function load_user($username){
$result=$this>db>get_where('data_mahasiswa',array('username'=>$username);
return $result;
}
}
?>
Pada form_view kita cukup menambahkan echo img($image_src);
Pada form_register kita menambahkan echo form_label('Foto: ','foto_mhs');
echo form_upload('userfile'); setelah membuka form.
No comments:
Post a Comment