【问题标题】:Submit button for multiple choice without using radio button提交多选按钮而不使用单选按钮
【发布时间】:2020-11-13 21:06:39
【问题描述】:

我想使用 codeigniter 自动提交我的选择时遇到问题。我返回数据库的值是 ID(整数)、状态(枚举('masuk'、'istirahat'、'kembali'、'pulang'))、waktu(日期时间)。如果用户从“状态”按钮中选择一个,我希望变量“waktu”是我当前的日期时间。

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

<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');
  }
}

【问题讨论】:

    标签: php codeigniter datetime button


    【解决方案1】:

    很简单,您需要在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 的值,但如果用户选择了状态,则使用服务器当前日期时间

    【讨论】:

      猜你喜欢
      • 2013-04-10
      • 2018-05-12
      • 1970-01-01
      • 2015-09-19
      • 1970-01-01
      • 2017-12-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多