我已经有点绝望了,因为我正在CodeIgniter中编程一个项目,该项目是在线食品商店。问题是,当我必须创建产品时,我有一个要求管理员输入的表单,其中包含产品的名称,品牌,描述,价格,增值税,类别等,并且介于两者之间另一个字段是产品图像。好吧,当我填写该表格并将其提交时,产品被添加到数据库中,并且一切正常,除了产品图像未复制从我的硬盘驱动器到服务器文件夹。
我正在使用:PHP 7.3.9MySQL 5.7.26CodeIgniter 3.1.8
我放置了这种形式的代码(视图),我已经对其进行了很多次更改,以至于必须有太多的错误:]
<div class="container"> <?php if (isset($error)) {?> <div class="alert alert-danger"> <?php echo validation_errors('<div class="container"><b><ul><li>','</li></ul></b></div>') ?> </div> <?php }?> <div class="panel panel-default"> <div class="panel-body"> <h3 style='margin-left: 4em'>Crear Producto</h3> <h6 style='margin-left: 8em'>Rellena los siguientes campos con los datos del producto y una vez termines pulsa el botón.</h6> <hr> <?php echo form_open_multipart('Inicio/verificarProducto'); ?> <div class="row"> <div style='margin-left: 6em' class="container"> <div class="col-xs-3"> <div class="form-group"> <label for="user">Nombre *</label> <input type="text" name="nombre" value="<?=set_value('nombre')?>" class="form-control" id="nombre" placeholder="Nombre del Producto" > </div> </div> <div class="col-xs-3"> <div class="form-group"> <label for="pass">Descripción *</label> <input type="text" name="descripcion" value="<?=set_value('descripcion')?>" class="form-control" id="descripcion" placeholder="Descripción del Producto" > </div> </div> </div></div><hr> <div style='margin-left: 6em' class="container"> <div class="row"> <div class="col-xs-4"> <div class="form-group"> <label for="image">Imagen *</label> <!--El name del campo tiene que ser si o si "userfile"--> <input type="file" name="imagen" value="<?=set_value('imagen')?>" /> </div> </div> </div> <div class="row"> <div class="col-xs-4"> <div class="form-group"> <label for="marca">Marca *</label> <input type="text" name="marca" value="<?=set_value('marca')?>" class="form-control" id="marca" placeholder="Marca del Producto" > </div> </div> <div class="col-xs-2"> <div class="form-group"> <label for="pvp">PVP *</label> <input type="numeric" name="pvp" value="<?=set_value('pvp')?>" class="form-control" id="pvp" placeholder="0" > </div> </div> <div class="col-xs-2"> <div class="form-group"> <label for="iva">IVA *</label> <input type="number" step=".01" name="iva" value="<?=set_value('iva')?>" class="form-control" id="iva" placeholder="0" > </div> </div> </div><h6 style='color: #2874A6;'>*El IVA no puede ser negativo.</h6> <div class="row"> <div class="col-xs-2"><hr> <div class="form-group"> <label for="stock">Stock *</label> <input type="number" name="stock" value="<?=set_value('stock')?>" class="form-control" id="stock" placeholder="0" > </div> </div> </div> <div class="row"> <div class="col-xs-4"> <div class="form-group"> <label for="categoria">Categoria *</label> <input type="text" name="categoria" value="<?=set_value('categoria')?>" class="form-control" id="categoria" placeholder="Categoria del Producto" > </div> </div> </div> <div class="row"> <div class="col-xs-2"> <div class="form-group"> <label for="finicio_dest">Fecha inicio de destacado (opcional)</label> <input type="date" name="finicio_dest" value="<?=set_value('finicio_dest')?>" class="form-control" id="finicio_dest"> </div> </div> <div class="col-xs-2"> <div class="form-group"> <label for="ffin_dest">Fecha final de destacado (opcional)</label> <input type="date" name="ffin_dest" value="<?=set_value('ffin_dest')?>" class="form-control" id="ffin_dest"> </div> </div> </div> </div> <hr> <a class="btn btn btn-default" style="margin-left: 50px;" href="<?=site_url().'/Inicio/cargarVista/panel_usuario_admin'?>"><b><span class="glyphicon glyphicon-chevron-left"></span> Volver atrás</b></a></center><button style='margin-left: 7em' type="submit" name="bcontinuar" class="btn btn-success"><B>Finalizar</B> <span class="glyphicon glyphicon-chevron-right"></span></button><br> </div> <?php echo form_close() ?> </div>
这里是负责形式的控制器的片段:
public function verificarProducto() { $prueba = $this->mproducto->verCategoriasEx($this->input->post('category')); if($this->mproducto->verCategoriasEx($this->input->post('category')) >= 0){ $a = intval($this->mproducto->verCategoriasEx($this->input->post('category'))); }else{ $datos_cat = array( 'name' => $this->input->post('category'), 'description' => "", 'announce' => 0, 'show' => 1 ); $a = $this->mproducto->insertaCategoria($datos_cat); } $datos = array( 'category_id' => $a , 'name' => $this->input->post('nombre'), 'brand' => $this->input->post('marca'), 'description' => $this->input->post('descripcion'), 'discount' => 0, 'announce' => 0, 'image' => $this->input->post('image'), 'pvp' => $this->input->post('pvp'), 'iva' => $this->input->post('iva'), 'stock' => $this->input->post('stock'), 'show' => 1, 'finicio_dest' => $this->input->post('finicio_dest'), 'ffin_dest' => $this->input->post('ffin_dest'), 'destacado' => 1 ); $this->mproducto->insertaProducto($datos); $cuerpo = $this->load->view("producto_creado", "", TRUE); $this->cargaPlantilla($cuerpo, ""); }
这里是上传图像的控制器的片段:
<?php if(!defined('BASEPATH')) exit('No direct script access allowed'); class subir_controller extends CI_Controller { public function __construct(){ parent::__construct(); } public function index(){ $this->load->view('nuevoProducto', array('error' => ' ' )); } public function subir(){ $dato = $this->input->post("txt_dato"); $image_name = $_FILES['archivoImagen']['name']; $data = array("dato" => $dato, "image" => $image_name); $guardar = $this->msubir->guardar($data); $this->subirImagen(); } public function subirImagen(){ $nombreCompleto = $_FILES['archivoImagen']['name']; $config['upload_path'] = './assets/img/productos/'; $config['allowed_types'] = 'jpg|jpeg|png'; $config['file_name'] = $nombreCompleto; $this->load->library('upload', $config); if(!$this->upload->do_upload('archivoImagen')) { $data['error'] = array('error' => $this->upload->display_errors()); } else { $data['infoImagen'] = $this->upload->data(); } } } ?>
最后是这里的模型:
数据(包括图像名称)保存到数据库,但是不要将图像复制到服务器文件夹。<?php class Subir_model extends CI_Model { function guardar($data) { $this->db->insert("subir", $data); if ($this->db->affected_rows() > 0) { return true; } else { return false; } } }
我已经尝试了很长时间,并且肯定是从我尝试过的各种解决方案中得出的,关于代码的某些内容并没有多大意义,但是现在,它可以像我在顶部告诉您的那样工作问题。将全部
[如果您听不懂,请告诉我,我会尽快答复您。
感谢您的帮助。
我已经有点绝望了,因为我正在CodeIgniter中编程一个项目,该项目是在线食品商店。问题是,当我必须创建产品时,我具有以下形式:...
我认为您希望对表单打开器使用“ form_open_multipart”功能,因为它允许上传文件。否则,它仅发送文本。