Necesito hacer una comparación de código entre dos tablas, si el código existe actualizar solo el precio y si no existe insertar el registro completo.
Dejo el código que estoy intentando armar con algunos comentarios, espero me puedan ayudar ya que hace rato estoy dando vueltas con esto, desde ya muchas gracias!
controller
Código PHP:
public function actProductosconImportacion(){
$this->load->library('form_validation');
$this->data['custom_error'] = '';
// if codigoImportar == codigoProducto
// actualizo el precio
// else
// inserto todos los campos
// if ($codigoImportar == $codigoProducto) {
// no logré levantar estos datos
if ($this->form_validation->run('productos') == false) {
$this->data['custom_error'] = (validation_errors() ? '<div class="form_error">' . validation_errors() . '</div>' : false);
} else {
$precioProducto = $this->input->post('precioProducto');
$precioProducto = str_replace(",","", $precioProducto);
$data = array(
'precioProducto' => $precioProducto,
);
// actualizo campo precio
if ($this->productos_model->edit('productos', $data, 'idProductos', $this->input->post('idProductos')) == TRUE) {
$this->session->set_flashdata('success','Producto editado con éxito!');
redirect(base_url() . 'index.php/productos/editar/'.$this->input->post('idProductos'));
} else {
$this->data['custom_error'] = '<div class="form_error"><p>Ocurrió un error</p></div>';
}
}
$this->data['result'] = $this->productos_model->getById($this->uri->segment(3));
// $this->data['view'] = 'productos/editarProductos';
$this->load->view('tema/topo', $this->data);
}
// inserto el registro completo a la tabla productos
else {
$precioProducto = $this->input->post('precioProducto');
$precioProducto = str_replace(",","", $precioProducto);
$data = array(
'codigoProducto' => $this->input->post('codigoProducto'),
'detalleProducto' => $this->input->post('detalleProducto'),
'precioProducto' => $precioProducto,//$this->input->post('precioProducto'),
);
if ( is_numeric($id = $this->productos_model->add('productos', $data, true)) ) {
$this->session->set_flashdata('success','La Productos se agregó correctamente');
redirect('productos/editar/'.$id);
} else {
$this->data['custom_error'] = '<div class="form_error"><p>An Error Occured.</p></div>';
}
}
$this->data['view'] = 'productos/adicionarProductos';
$this->load->view('tema/topo', $this->data);
}
}
estos son los models para insertar y editar
Código PHP:
function add($table,$data,$returnId = false){
$this->db->insert($table, $data);
if ($this->db->affected_rows() == '1')
{
if($returnId == true){
return $this->db->insert_id($table);
}
return TRUE;
}
return FALSE;
}
function edit($table,$data,$fieldID,$ID){
$this->db->where($fieldID,$ID);
$this->db->update($table, $data);
if ($this->db->affected_rows() >= 0)
{
return TRUE;
}
return FALSE;
}
Quizás haya otra forma de hacerlo, la ayuda será bienvenida :)