Codeigniter使用表格的每一行的表格来传递id

时间:2017-01-20 01:23:57

标签: php mysql codeigniter

我有一个我想编辑的数据表。我目前通过url将id传递到编辑页面,并提供一个从数据库加载详细信息的表单。但是,如果存在任何验证错误,表单将重置,详细信息将消失。我想如果每一行都是一个表单,我可以发布数据,即使刷新,id仍然会保留。但是我担心它会变得多慢。 有没有人可以使用任何其他方法?谢谢。

这是我的代码

查看

<?php if($edit == "false"){
        echo form_open_multipart('Control/Products/ProductDetail/addProduct','class="productdetail"');
 }else{
        echo form_open_multipart('Control/Products/ProductDetail/editProduct','class="productdetail"');
       }?>
                            <label for="inputproductname">Product Name</label>
                            <input type="text" class="form-control" id="inputproductname" name="inputproductname" placeholder="Name" value="<?php echo $name; ?>">
                            <label for="inputproductdescription">Product Description</label>
                            <textarea class="form-control" id="inputproductdescription" name="inputproductdescription" placeholder="Description" rows="7" 
                            ><?php echo $description; ?></textarea>
                            <label for="inputproductprice">Product Price</label>
                            <input type="price" class="form-control" id="inputproductprice" name="inputproductprice" placeholder="Price" value="<?php echo $price; ?>">
                            <label for="inputproductimage">Product Image</label>
                            <p><input type="file" class="form-control-file" name="upload" id="upload" aria-describedby="fileHelp"></p>
                            <input type="hidden" class="form-control" id="inputcurrentid" name="inputcurrentid" value="<?php echo $currentid; ?>">
                            <input type="hidden" class="form-control" id="inputcurrentstatus" name="inputcurrentstatus" value="<?php echo $currentstatus; ?>">
            <button type="submit" class="btn btn-primary">
                     <?php if($edit == "false"){
                         echo "Add";
                      }else{
                          echo "Edit";
                      }?>
             </button>
<a href="<?php echo base_url();?>Control/Products/Products">Cancel</a>
<?php echo form_close(); ?>
<?php echo validation_errors(); ?>
<p><?php echo $this->session->flashdata('Form'); ?></p> 

控制器

public function index(){
      $productid = $this->uri->segment(5);
      $editstatus = $this->uri->segment(6);
      if($editstatus == "false"){
          $data['name'] = '';
          $data['description'] = '';
          $data['price'] = '';
          $data['edit'] = "false";
          $data['message']='';
          $data['currentid'] = '';
          $data['currentstatus'] = '';
      }else{
          $product = $this->ProductsModel->getProduct($productid);
          foreach ($product as $productdetail){
            $data['name'] = $productdetail->name;
            $data['description'] = $productdetail->description;
            $data['price'] = $productdetail->price;
          }
          $data['edit'] = "true";
          $data['message']='';
          $data['currentid'] = $productid;
          $data['currentstatus'] = $editstatus;
      }
      $this->load->view('control/controlMenu/navigationLink');
      $this->load->view('control/controlProducts/productDetail',$data);
      $this->load->view('control/controlMenu/navigationJquery');
    }

public function editProduct(){
      $this->form_validation->set_error_delimiters('<p class="error">', '</p>');
      $this->form_validation->set_rules('inputproductname', 'Name', 'trim|required');
      $this->form_validation->set_rules('inputproductdescription', 'Description', 'trim|required');
      $this->form_validation->set_rules('inputproductprice', 'Price', 'trim|required');
      if (empty($_FILES['userfile']['name']))
      {
          $this->form_validation->set_rules('upload', 'Image', 'required');
      }

      $inputproductname = $this->input->post('inputproductname');
      $inputproductdescription = $this->input->post('inputproductdescription');
      $inputproductprice = $this->input->post('inputproductprice');
      $inputdateadded = date('Y-m-d');
      $inputcurrentid = $this->input->post('inputcurrentid');
      $inputcurrentstatus = $this->input->post('inputcurrentstatus');

      $config['upload_path'] = $this->getProductImageFolderPath();
      $config['allowed_types'] = 'jpg|jpeg|png'; 
      $config['max_size'] = 3000;  
      $config['remove_spaces'] = TRUE;
      $config['overwrite'] = TRUE;
      $config['file_name'] = $inputproductname;
      $this->load->library('upload', $config);


      if($this->form_validation->run()==false){
          redirect('/Control/Products/ProductDetail/index/'.$inputcurrentid.'/'.$inputcurrentstatus);
        }else{
          if(!$this->upload->do_upload('upload')){
            $this->session->set_flashdata('Form',$this->upload->display_errors());
            redirect('Control/'.$this->getCurrentModule().'/'.$this->getClassName());
          }else{
              $extension = $this->upload->data('file_ext');
              $productdetails = array(
                'name'=>$inputproductname,
                'description'=>$inputproductdescription,
                'price'=>$inputproductprice,
                'imagePath'=>$config['upload_path'].$config['file_name'].$extension,
                'dateAdded'=>$inputdateadded
              );
              $this->db->trans_start();
              $this->ProductsModel->editProduct($productid,$productdetails);
              $this->db->trans_complete();
              if($this->db->trans_status()===false){

              }else{
                  $this->session->set_flashdata('Form', $inputproductname . ' has been altered on the database');
                  redirect('/Control/Products/Products');
              }
          }
        }
  }

1 个答案:

答案 0 :(得分:0)

我的建议是,你可以使用不同的方法来添加和编辑,或者你可以使用ajax来调用数据和setInterval函数来管理你获取数据的时间