Pregunta:
Fecha: 21-01-2019 12:54:51
(En Español)
el error completo es
Severity: Notice
Message: Trying to get property 'nombres_cliente' of non-object
Filename: clientes/edit_vista.php
Line Number: 31
Backtrace:
File: C:\xampp\htdocs\ventas_ci\application\views\admin\clientes\edit_vista.php
Line: 31
Function: _error_handler
File: C:\xampp\htdocs\ventas_ci\application\controllers\mantenimiento\clientes.php
Line: 76
Function: view
File: C:\xampp\htdocs\ventas_ci\index.php
Line: 315
Function: require_once
este el el codigo html completo de la vista
Adjunto tb el codigo del controlador clientes
error trying to property of non-object - no encuentro el motivo del error[No resuelta]
me sale el siguiente error pero no consigo dar con el motivo del mismo.. espero alguno pueda darme alguna mano.. muchas gracias..el error completo es
Severity: Notice
Message: Trying to get property 'nombres_cliente' of non-object
Filename: clientes/edit_vista.php
Line Number: 31
Backtrace:
File: C:\xampp\htdocs\ventas_ci\application\views\admin\clientes\edit_vista.php
Line: 31
Function: _error_handler
File: C:\xampp\htdocs\ventas_ci\application\controllers\mantenimiento\clientes.php
Line: 76
Function: view
File: C:\xampp\htdocs\ventas_ci\index.php
Line: 315
Function: require_once
este el el codigo html completo de la vista
<!-- Content Wrapper. Contains page content -->
<div class="content-wrapper">
<!-- Content Header (Page header) -->
<section class="content-header">
<h1>
Clientes
<small>Editar Cliente</small>
</h1>
</section>
<!-- Main content -->
<section class="content">
<!-- Default box -->
<div class="box box-solid">
<div class="box-body">
</div>
<hr><!-- /.box-body -->
<div class="row">
<div class="col-md-12">
<?php if($this->session->flashdata("error")):?>
<div class="alert alert-danger alert-dismissible">
<button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button>
<p><i class="icon fa fa-ban"></i><?php echo $this->session->flashdata("error");?></p>
</div>
<?php endif;?>
<form action="<?php echo base_url();?>mantenimiento/clientes/update" method="POST">
<input type="hidden" name="idCliente" value="<?php echo $cliente->id_cliente;?>">
<div class="form-group">
<label for="nombres">Nombres: </label>
<input type="text" class="form-control" id="nombres" name="nombres" value="<?php echo $cliente->nombres_cliente;?>">
</div>
<div class="form-group">
<label for="apellidos">Apellidos: </label>
<input type="text" class="form-control" id="apellidos" name="apellidos" value="<?php echo $cliente->apellidos_cliente;?>">
</div>
<div class="form-group">
<label for="telefono">Teléfono: </label>
<input type="text" class="form-control" id="telefono" name="telefono" value="<?php echo $clientes->telefono_cliente;?>">
</div>
<div class="form-group">
<label for="direccion">Dirección: </label>
<input type="text" class="form-control" id="direccion" name="direccion" value="<?php echo $cliente->direccion_cliente;?>">
</div>
<div class="form-group">
<label for="ruc">Ruc: </label>
<input type="text" class="form-control" id="ruc" name="ruc" value="<?php echo $cliente->ruc_cliente;?>">
</div>
<div class="form-group">
<label for="empresa">Empresa: </label>
<input type="text" class="form-control" id="empresa" name="empresa" value="<?php echo $cliente->empresa_cliente;?>">
</div>
<div class="form-group">
<button type="submit" class="btn btn-succes btn-flat">Guardar</button>
</div>
</form>
</div>
</div>
</div>
<!-- /.box -->
</section>
<!-- /.content -->
</div>
<!-- /.content-wrapper -->
Adjunto tb el codigo del controlador clientes
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class Clientes extends CI_Controller
{
public function __construct()
{
parent::__construct();
$this->load->model("Clientes_models");
}
public function index()
{
$data = array(
'clientes' => $this->Clientes_models->getClientes_models(),
);
$this->load->view('layouts/header');
$this->load->view('layouts/aside');
$this->load->view('admin/clientes/list_clientes',$data);
$this->load->view('layouts/footer');
}
public function add_funcion()
{
$this->load->view('layouts/header');
$this->load->view('layouts/aside');
$this->load->view('admin/clientes/add_vista');
$this->load->view('layouts/footer');
}
public function store_funcion()
{
$nombre = $this->input->post("nombre");
$apellido = $this->input->post("apellido");
$telefono = $this->input->post("telefono");
$direccion = $this->input->post("direccion");
$ruc = $this->input->post("ruc");
$empresa = $this->input->post("empresa");
if ($nombre=='')
{
$this->session->set_flashdata("error", " El campo nombre no puede quedar en blanco");
redirect(base_url()."mantenimiento/clientes/add_funcion");
}
else
{
$data = array(
'nombres_cliente' => strtoupper($nombre),
'apellidos_cliente' => strtoupper($apellido),
'telefono_cliente' => strtoupper($telefono),
'direccion_cliente' => strtoupper($direccion),
'ruc_cliente' => $ruc,
'empresa_cliente' => strtoupper($empresa),
'estado_cliente' => "1"
);
if ($this->Clientes_models->save_model($data))
{
redirect(base_url()."mantenimiento/clientes");
}
else
{
$this->session->set_flashdata("error","Hubo un problema al guardar la informacion");
redirect(base_url()."mantenimiento/clientes/add_vista");
}
}
}
public function edit_funcion($id)
{
$data = array
(
'cliente' => $this->Clientes_models->getClientes_models($id),
);
$this->load->view('layouts/header');
$this->load->view('layouts/aside');
$this->load->view('admin/clientes/edit_vista', $data);
$this->load->view('layouts/footer');
}
public function update_funcion()
{
$idCliente = $this->input->post("idCliente");
$nombre = $this->input->post("nombres");
$apellido = $this->input->post("apellidos");
$telefono = $this->input->post("telefono");
$direccion = $this->input->post("direccion");
$ruc = $this->input->post("ruc");
$empresa = $this->input->post("empresa");
if ($nombre=='')
{
$this->session->set_flashdata("error", " El campo nombre no puede quedar en blanco");
redirect(base_url()."mantenimiento/clientes/add_funcion");
}
else
{
$data = array(
'nombres_cliente' => strtoupper($nombre),
'apellidos_cliente' => strtoupper($apellido),
'telefono_cliente' => strtoupper($telefono),
'direccion_cliente' => strtoupper($direccion),
'ruc_cliente' => $ruc,
'empresa_cliente' => strtoupper($empresa),
);
if ($this->Clientes_models->update_model($idCliente, $data))
{
redirect(base_url()."mantenimiento/clientes");
}
else
{
$this->session->set_flashdata("error","Hubo un problema al guardar la informacion");
redirect(base_url()."mantenimiento/clientes/add_vista");
}
}
}
}
Votos: 0 -
Respuestas: 9 -
Vistas: 7
Compartir en: Google
Facebook
Twitter
LinkedIn
Link
Respuestas:
-
Fecha: 21-01-2019 14:57:22 Hola..
Yo sacaria un var_dump($data) en el controlador antes de llamar a la vista, tal vez tu modelo no te esta trayendo todos los campos..
public function edit_funcion($id) { $data = array ( 'cliente' => $this->Clientes_models->getClientes_models($id), ); // aqui sacaria un var_dump($data); }
Lo otro que veria es si tu modelo te esta entregando 1 solo cliente o un arreglo de clientes, entonces en la vista deberias tratarlo distinto. Votos: 1 - Link respuesta -
Fecha: 22-01-2019 00:12:17 muchas gracias por tu respuesta @Raul rch. Realmente como sospechabas esta retornando un arreglo de clientes, podrias darme una recomendacion de como proceder? como veras estoy iniciando en esto.. aunq como anecdota te cuento que en otra pagina del mismo sistemita estoy usando el mismo sistema y funciona perfectamente, solo q tiene menos columnas la tabla xq sera?
var_dump($data)===>
array(1) { ["cliente"]=> array(7) { [0]=> object(stdClass)#21 (8) { ["id_cliente"]=> string(1) "1" ["nombres_cliente"]=> string(7) "GRAFICA" ["apellidos_cliente"]=> string(11) " BIEN HECHO" ["telefono_cliente"]=> string(10) "0985642137" ["direccion_cliente"]=> string(14) "BO. SAN ISIDRO" ["ruc_cliente"]=> string(10) "80034325-0" ["empresa_cliente"]=> string(18) "GRAFICA BIEN HECHO" ["estado_cliente"]=> string(1) "1" } [1]=> object(stdClass)#22 (8) { ["id_cliente"]=> string(1) "2" ["nombres_cliente"]=> string(6) "KARINA" ["apellidos_cliente"]=> string(6) "ROMERO" ["telefono_cliente"]=> string(10) "0985647687" ["direccion_cliente"]=> string(14) "BO. SAN ISIDRO" ["ruc_cliente"]=> string(9) "4198524-8" ["empresa_cliente"]=> string(11) "MAXI MARKET" ["estado_cliente"]=> string(1) "1" } [2]=> object(stdClass)#23 (8) { ["id_cliente"]=> string(1) "3" ["nombres_cliente"]=> string(8) "FERNANDO" ["apellidos_cliente"]=> string(6) "BRITOS" ["telefono_cliente"]=> string(10) "0987412137" ["direccion_cliente"]=> string(14) "BO. SAN ISIDRO" ["ruc_cliente"]=> string(9) "4856971-8" ["empresa_cliente"]=> string(10) "GRANJA B&M" ["estado_cliente"]=> string(1) "1" } [3]=> object(stdClass)#24 (8) { ["id_cliente"]=> string(1) "4" ["nombres_cliente"]=> string(13) "JAVIER ELADIO" ["apellidos_cliente"]=> NULL ["telefono_cliente"]=> NULL ["direccion_cliente"]=> NULL ["ruc_cliente"]=> NULL ["empresa_cliente"]=> NULL ["estado_cliente"]=> string(1) "1" } [4]=> object(stdClass)#25 (8) { ["id_cliente"]=> string(1) "5" ["nombres_cliente"]=> string(17) "ELVIO MAXIMILIANO" ["apellidos_cliente"]=> NULL ["telefono_cliente"]=> NULL ["direccion_cliente"]=> NULL ["ruc_cliente"]=> NULL ["empresa_cliente"]=> NULL ["estado_cliente"]=> string(1) "1" } [5]=> object(stdClass)#26 (8) { ["id_cliente"]=> string(1) "6" ["nombres_cliente"]=> string(12) "MARIANA INES" ["apellidos_cliente"]=> string(13) "BRITOS MORENO" ["telefono_cliente"]=> string(10) "0973373035" ["direccion_cliente"]=> string(14) "BO. SAN ISIDRO" ["ruc_cliente"]=> string(11) "45632145656" ["empresa_cliente"]=> string(7) "MEDIMAR" ["estado_cliente"]=> string(1) "1" } [6]=> object(stdClass)#27 (8) { ["id_cliente"]=> string(1) "8" ["nombres_cliente"]=> string(5) "ELVIO" ["apellidos_cliente"]=> string(13) "BRITOS ROMERO" ["telefono_cliente"]=> string(10) "0983596508" ["direccion_cliente"]=> string(9) "PIRA PYTA" ["ruc_cliente"]=> string(9) "258963147" ["empresa_cliente"]=> string(7) "ñA ANI" ["estado_cliente"]=> string(1) "1" } } } Votos: 0 - Link respuesta -
Fecha: 22-01-2019 00:54:15 Buen dia.
Esta consulta la construiste vos ?
'cliente' => $this->Clientes_models->getClientes_models($id)
porque te habla de plural, lo que debes hacer es crearte un metodo en el modelo que te entregue un solo cliente, o sea una consulta sql con la condicion que el campo id, sea igual a la variable $id que le estas pasando.
algo asi:
SELECT * FROM nombreTabla WHERE nombreCampoID = $id;
Saludos... Votos: 1 - Link respuesta -
Fecha: 22-01-2019 00:56:00
public function getClientes_models() { $this->db->where("estado_cliente","1"); $resultados = $this->db->get("clientes"); return $resultados->result(); }
este es el modelo getCliente tenia entendido que en el return el enviaba solo un registro, y ese registro iba mostrando uno x vez. Votos: 0 - Link respuesta -
Fecha: 22-01-2019 01:05:39 Aqui en este metodo lo que te esta diciendo que te devuelve todos los clientes (Todos) que su estado sea activo (1), NO esta entrando la condicion ID, debes ver si tienes otro metodo o crearte otro igual a y poner que la condicion sea id (suponiendo que tu tabla tenga un valor id) , $id. la variable $id, estas seguro que te esta trayendo el valor del id del cliente ?
que framework estas usando ?, debes tener un metodo que te devuelva un cliente en el caso de tener que construir la consulta fijate bien el nombre de los campos, en el metodo para recuperar un cliente tiene que recibir un parametro que seria el id.
Algo asi...(Singular)
public function getCliente_models($id) { $this->db->where("id_cliente",$id); $resultados = $this->db->get("clientes"); return $resultados->result(); }
suerte.. Votos: 1 - Link respuesta -
Fecha: 22-01-2019 03:26:07 no, la vd estoy siguiendo un tutorial, en este el profesor hace de esta manera y le funciona, pero tiene sentido loq me decis, lo probe pero sigue tirandome el mismo error. ese $cliente->id_cliente q busca tomar como valor en la linea 28 del primer codigo.. donde se declara esa variable? osea como mi programa sabe q $cliente se refiere a la tabla cliente en la columna id_cliente? gracias x tu ayuda amigo!! Votos: 0 - Link respuesta
-
Fecha: 22-01-2019 03:44:26 Hola, trabaja sobre este metodo del controllador:
public function edit_funcion($id) { $data = array ( 'cliente' => $this->Clientes_models->getClientes_models($id), ); $this->load->view('layouts/header'); $this->load->view('layouts/aside'); $this->load->view('admin/clientes/edit_vista', $data); $this->load->view('layouts/footer'); }
saca un echo ($id) antes del array data, y comenta todo el array y las vistas, que dentro del metodo solo te quede el echo,
llama a tu codigo y ahi deberia imprimirte el id del cliente que estas tratando de recuperar los datos para editarlo, si no te imprime nada, ya deberias ver para atras donde esta el problema.
luego:
en el modelo agrega este método:
public function getCliente_models($id) { $this->db->where("id_cliente",$id); $resultados = $this->db->get("clientes"); return $resultados->result(); }
luego en el controllador en vez de llamar al getClientes (plural) llama getCliente
descomenta unicamente el llamado al modelo, y saca un var_dump del data, haber si te trae datos hasta ahi. comentame y seguimos
saludos. Votos: 1 - Link respuesta -
Fecha: 22-01-2019 07:38:57 Al fin, solucion!! jaja.. tenias razon, despues de crear otro metodo comparando solo el id del cliente pudo hacer la consulta!! muchas gracias x la ayuda y la paciencia gran amigo!! Votos: 0 - Link respuesta
-
Fecha: 22-01-2019 07:48:30 Por nada, estamos todos en la misma "Aprendiendo".
Saludos... Votos: 0 - Link respuesta
Para participar activamente de la comunidad primero debes autenticarte, ingresa al sistema.Iniciar Sesión
