提交按钮可进行多项选择,无需使用单选按钮



当我想使用codeigniter自动提交我的选择时,遇到了一个问题。我在数据库中的返回值是ID(integer(、status(enum('masu'、'stirahat'、'kembali'、'pulang'((、waktu(datetime(。如果用户从"状态"按钮中选择一个,我希望变量"waktu"是我的当前日期时间。

这是我在视图文件夹中的代码:

<html>
<head>
<title>Form Tambah Presensi</title>
</head>
<body>
<h1>Form Tambah Data Presensi</h1>
<hr>
<!-- Menampilkan Error jika validasi tidak valid -->
<div style="color: red;"><?php echo validation_errors(); ?></div>
<?php echo form_open("presensi/tambah"); ?>
<tr>
<td>ID</td>
<td><input type="number" name="input_id" value="<?php echo set_value('input_id'); ?>"></td>
</tr><br><br>
<tr>
<td>Status:</td><br>
<input type="submit" id="input_status" name="input_status" value="masuk">
<label for="masuk"></label><br>
</tr>
<tr>
<input type="submit" id="input_status" name="input_status" value="istirahat">
<label for="istirahat"></label><br>
</tr>
<tr>
<input type="submit" id="input_status" name="input_status" value="kembali">
<label for="kembali"></label><br>
</tr>
<tr>
<input type="submit" id="input_status" name="input_status" value="pulang">
<label for="pulang"></label><br><br>
</tr>
<?php echo form_close(); ?>
</body>
</html>

我在模型文件夹中的代码:

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class PresensiModel extends CI_Model {

// Fungsi untuk validasi form tambah dan ubah
public function validation($mode){
$this->load->library('form_validation'); // Load library form_validation untuk proses validasinya

// Tambahkan if apakah $mode save atau update
if($mode == "save")
$this->form_validation->set_rules('input_id', 'id', 'required|numeric|max_length[11]');

$this->form_validation->set_rules('input_status', 'status');
$this->form_validation->set_rules('input_waktu', 'waktu', 'required');

if($this->form_validation->run()) // Jika validasi benar
return TRUE; // Maka kembalikan hasilnya dengan TRUE
else // Jika ada data yang tidak sesuai validasi
return FALSE; // Maka kembalikan hasilnya dengan FALSE
}

// Fungsi untuk melakukan simpan data ke tabel presensi
public function save(){
$data = array(
"id" => $this->input->post('input_id'),
"status" => $this->input->post('input_status'),
"waktu" => $this->input->post('input_waktu')
);

$this->db->insert('presensi', $data); // Untuk mengeksekusi perintah insert data
}
}

控制器文件夹中的我的代码:

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Presensi extends CI_Controller {

public function __construct(){
parent::__construct();

$this->load->model('PresensiModel'); // Load PresensiModel ke controller ini
}

public function index(){
$data['presensi'] = $this->PresensiModel->view();
$this->load->view('presensi/form_tambah', $data);
}

public function tambah(){
if($this->input->post('submit')){ // Jika user mengklik tombol submit yang ada di form
if($this->PresensiModel->validation("save")){ // Jika validasi sukses atau hasil validasi adalah TRUE
$this->PresensiModel->save(); // Panggil fungsi save() yang ada di SiswaModel.php
redirect('presensi');
}
}

$this->load->view('presensi/form_tambah');
}
}

只需在两个位置更改validation()save()

validation()函数中,如果用户选择任何状态,我们希望将其设为可选,因为我们将在服务器上生成waktu,因此更改

$this->form_validation->set_rules('input_waktu', 'waktu', 'required');

if(empty( $this->input->post('input_status') ) )
$this->form_validation->set_rules('input_waktu', 'waktu', 'required');

这意味着如果用户没有选择任何状态,那么waktu是强制性的,否则(默认情况下(它将是可选的


然后在save()函数中,进行类似的检查

$data = array(
"id" => $this->input->post('input_id'),
"status" => $this->input->post('input_status'),
"waktu" => empty($this->input->post('input_status'))? $this->input->post('input_waktu'): date('Y-m-d H:i:s')
);

这意味着如果未选择状态,则使用用户提供的waktu值,但如果用户已选择状态,那么使用服务器当前日期时间

相关内容

  • 没有找到相关文章