elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Security Series.XSS. [Cross Site Scripting]


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  PHP (Moderador: #!drvy)
| | | |-+  PORQUE NO INSERTA DATOS PHP
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: PORQUE NO INSERTA DATOS PHP  (Leído 5,671 veces)
lokito1986

Desconectado Desconectado

Mensajes: 11


Ver Perfil
PORQUE NO INSERTA DATOS PHP
« en: 13 Abril 2012, 04:24 am »

 ;-)Observacion : Corregido Al FINAL PUSE EL CODIGO COMPLETO FUNCIONANDO PERFECTAMENTE
ME GUSTARIA RECIBIR OPINIONES SI LO QUE E CODIFICADO ES CORRECTO O DE QUE MANERA PUEDO MEJORARLO ...
;D
***********************************************
ante todos gracias por darse Un tiempo para ller este mensaje ..pero lo k pasa que soy un novato que estoy programando en PHP ...
bueno al intentar grabar no se puede y sale este error ...
Categoria si inserta Normal ..el problema viene cuando intento grabar UN PRODUcTO
Estoy Haciendo Lo correcto en progrmar de Esta forma ..si no es asi me gustaria que me hiceran ver donde ESTAN MIS HORRORES xD..

Error MOSTRADO :

Fatal error: Call to a member function EjecutarConsulta() on a non-object in C:\AppServ\www\trabajoMadrugada\Clases\Producto.ph p on line 34

Categoria.php
<?php
 
require_once 'Conexion.php';
class 
Categoria {
    private 
$codigoCategoria;
    private 
$_nombre;
    private 
$_descripcion;
    private 
$_objcon;
   
    public function 
getCodigoCategoria() {
        return 
$this->codigoCategoria;
    }
 
    public function 
setCodigoCategoria($codigoCategoria) {
        
$this->codigoCategoria $codigoCategoria;
    }
 
        function 
__construct() {
        
$this->_objcon=new Conexion();
    }
 
    public function 
get_nombre() {
        return 
$this->_nombre;
    }
 
    public function 
set_nombre($_nombre) {
        
$this->_nombre $_nombre;
    }
 
    public function 
get_descripcion() {
        return 
$this->_descripcion;
    }
 
    public function 
set_descripcion($_descripcion) {
        
$this->_descripcion $_descripcion;
    }
 
public function 
grabarCategoria(){
    
$query="insert into categoria(nombre,descripcion)values('$this->_nombre','$this->_descripcion')";
    
$resultado $this->_objcon->EjecutarConsulta($query);
    return 
$resultado;
}
}
?>

Producto.php
<?php
require_once 'Categoria.php';
 
class 
Producto {
    private 
$nombre;
    private  
$objCat;
    private 
$objcon;
   
   
    function 
__construct() {
        
$this->objcon=new Conexion();
        
$this->objCat=new Categoria();
    }
    public function 
getNombre() {
        return 
$this->nombre;
    }
 
    public function 
setNombre($nombre) {
        
$this->nombre $nombre;
    }
 
    public function 
getObjCat() {
        return 
$this->objCat;
    }
 
    public function 
setObjCat(Categoria $objcat) {
        
$this->objCat=$objcat;
    }
 
    public function 
grabarProducto(){
     
        
$micod=  $this->objCat->getCodigoCategoria();
    
$query="insert into producto (nombre,codcategoria)values('$this->nombre','$micod')";
    
$resultado $this->_objcon->EjecutarConsulta($query);
    return 
$resultado;
}
 
}
Prueba.php
<?php require_once '../Clases/Producto.php';
 
$objproducto=new Producto();
$objcat=new Categoria();
$objcat->setCodigoCategoria("2");
$objcat->set_nombre("lacteos");
$objcat->set_descripcion("tiene Calcio");
 
$objproducto->setNombre("Leche ");
$objproducto->setObjCat($objcat);
 
$resp $objproducto->grabarProducto();
 
if (
$resp) {
  echo 
'Grabo exitosamente';
}
else{
    echo 
'fallo algo';
}
 
?>


 
?>

ojala me pudieran ayudar porque en verdad este problema ya me tiene loco..
posdta : estoy tratando de Aprender a Usar POO con MVC basico no estoy utilizando PDO  ...gracias a todos por leer mi post   :-[


« Última modificación: 13 Abril 2012, 17:39 pm por lokito1986 » En línea

Graphixx


Desconectado Desconectado

Mensajes: 1.336


Full Stack Developer


Ver Perfil WWW
Re: PORQUE NO INSERTA DATOS PHP
« Respuesta #1 en: 13 Abril 2012, 05:16 am »

Intenta agregar a la clase  Producto.php:
require_once 'Conexion.php';

ya que estas creando un objeto:
$this->objcon=new Conexion();

el cual lo llama en la linea con el error:
$resultado = $this->_objcon->EjecutarConsulta($query);

Y segun el error no se creo satisfactoriamente el objeto, yo supondria que es por que no esta incluida la clase con el objeto Conexion.


En línea

Nada tiene fin solo hay pequeñas pausas, pausas que determinan el comienzo de otros. Graphixx Rōninnovation
WHK
Moderador Global
***
Desconectado Desconectado

Mensajes: 6.605


Sin conocimiento no hay espíritu


Ver Perfil WWW
Re: PORQUE NO INSERTA DATOS PHP
« Respuesta #2 en: 13 Abril 2012, 15:01 pm »

Habilita el error reporting en tu php.ini y podrás ver que error te da php, o toma la query y pegala en el phpmyadmin y verás porque no se inserta, eso se llama depurar el código e ir viendo como se solucionan los problemas.

Creo que mas adelante haré un post sobre como depurar un script en php.

reemplaza:
Código
  1. public function grabarCategoria(){
  2.    $query="insert into categoria(nombre,descripcion)values('$this->_nombre','$this->_descripcion')";
  3.    $resultado = $this->_objcon->EjecutarConsulta($query);
  4.    return $resultado;
  5. }

por:
Código
  1. public function grabarCategoria(){
  2.    echo $query="insert into categoria(nombre,descripcion)values('$this->_nombre','$this->_descripcion')";
  3.    $resultado = $this->_objcon->EjecutarConsulta($query);
  4.    return $resultado;
  5. }

y te saldrá la query, copiala y pegala en el phpmyadmin y verás que error te sale, o si no utiliza mysql_error()

Saludos.
En línea

Graphixx


Desconectado Desconectado

Mensajes: 1.336


Full Stack Developer


Ver Perfil WWW
Re: PORQUE NO INSERTA DATOS PHP
« Respuesta #3 en: 13 Abril 2012, 16:47 pm »

Compa, no seria mejor que en vez de echo usara print_r ():
Código
  1. print_r ($query);
  2.  

ya que para objetos, muchas veces los valores quedan almacenados en la variable de respuesta como un Array, y con echo solo le imprimiria Array, es una sugerencia para que el compañero que apenas empieza con POO tenga en cuenta a futuro.
En línea

Nada tiene fin solo hay pequeñas pausas, pausas que determinan el comienzo de otros. Graphixx Rōninnovation
WHK
Moderador Global
***
Desconectado Desconectado

Mensajes: 6.605


Sin conocimiento no hay espíritu


Ver Perfil WWW
Re: PORQUE NO INSERTA DATOS PHP
« Respuesta #4 en: 13 Abril 2012, 16:56 pm »

Tienes toda la razón, pero en este caso no hay objetos ni arrays para hacer un dump con print_r():

Código:
 $query="insert into categoria(nombre,descripcion)values('$this->_nombre','$this->_descripcion')";

La query va en texto plano sin objetos ya que contiene strings y si hubiera dado un objeto o un array le hubiera dado error de sintaxis, por eso le dije que hiciera un echo en ves de un print_r(), de todas formas en este caso da lo mismo si lo haces de ambas formas, tendrás el mismo resultado.
En línea

lokito1986

Desconectado Desconectado

Mensajes: 11


Ver Perfil
Re: PORQUE NO INSERTA DATOS PHP
« Respuesta #5 en: 13 Abril 2012, 17:21 pm »

gracias a ambos Amigos por participar en mi post..les quiero decir que ya logre Implementarlo correctamente
En línea

lokito1986

Desconectado Desconectado

Mensajes: 11


Ver Perfil
Re: PORQUE NO INSERTA DATOS PHP
« Respuesta #6 en: 13 Abril 2012, 17:24 pm »

amigos el problema que yo lers comente que si intento GRABAR UNA CATEGORIA LO HACE CORRECTAMENTE ::::el PROBLEMA QUE YO TENIA ERA QUE NO PODIA GRABAR UN PRODUCTO pero gracias a Dios ya logre solucionarlo ....
En línea

lokito1986

Desconectado Desconectado

Mensajes: 11


Ver Perfil
Re: PORQUE NO INSERTA DATOS PHP
« Respuesta #7 en: 13 Abril 2012, 17:29 pm »

el problema era aqui :
 public function grabarProducto(){
     
    ...........
    $resultado = $this->_objcon->EjecutarConsulta($query);
    return $resultado;
}
no era _objcon sino SIMPLEMENTE objcon sin guion bajo ....

asi que ahi les pego el codigo corriendo perfectamente :.

posdata : Ustedes foreros que tienen mas tiempo programndo en PHP  ...esta bien mi codificacion orientado a Objetos ...me gustaria escucar opiniones al respecto ..gracias
En línea

lokito1986

Desconectado Desconectado

Mensajes: 11


Ver Perfil
Re: PORQUE NO INSERTA DATOS PHP
« Respuesta #8 en: 13 Abril 2012, 17:36 pm »

::)Codigo Correegido Y funcionando Perfectamente >:D

Conexion.php
<?php

class Conexion {

    private $servidor;
    private $usuario;
    private $clave;
    private $bd;
    private $link;

    public function __construct() {
        $this->servidor = "localhost";
        $this->usuario = "root";
        $this->clave = "root";
        $this->bd = "vargas";
    }

    public function RetornaConexion() {
        $this->link = @mysql_connect($this->servidor, $this->usuario, $this->clave) or die('Error al Conectar Con el Servidor : ' . mysql_error());
        mysql_select_db($this->bd, $this->link) or die("error al Seleccionar La BD : " . mysql_error());
        return $this->link;
    }

    public function EjecutarConsulta($query) {
        $data = mysql_query($query, $this->RetornaConexion());
        if (!$data) {
            echo 'error En la consulta : ' . mysql_error();
        }
        return $data;
    }

    public function CierraConexion() {
        return mysql_close();
    }

    public function CantidadRegistros($result) {
        return mysql_num_rows($result);
    }

    public function DevolverXFilas($result) {
        return mysql_fetch_array($result);
    }

}

?>

************************
Categoria.php

<?php
require_once 'Conexion.php';
class Categoria {
    private $codigoCategoria;
    private $_nombre;
    private $_descripcion;
    private $_objcon;
    
    public function getCodigoCategoria() {
        return $this->codigoCategoria;
    }

    public function setCodigoCategoria($codigoCategoria) {
        $this->codigoCategoria = $codigoCategoria;
    }

        function __construct() {
        $this->_objcon=new Conexion();
    }

    public function get_nombre() {
        return $this->_nombre;
    }

    public function set_nombre($_nombre) {
        $this->_nombre = $_nombre;
    }

    public function get_descripcion() {
        return $this->_descripcion;
    }

    public function set_descripcion($_descripcion) {
        $this->_descripcion = $_descripcion;
    }

public function grabarCategoria(){
     $query="insert into categoria(nombre,descripcion)values('$this->_nombre','$this->_descripcion')";
    $resultado = $this->_objcon->EjecutarConsulta($query);
    return $resultado;
}
}
?>

******************************************
Producto.php

<?php
require_once 'Categoria.php';

class Producto {
    private $nombre;
    private  $objCat;
    private $objcon;
    
    
    function __construct() {
        $this->objcon=new Conexion();
        $this->objCat=new Categoria();
      
    }
    public function getNombre() {
        return $this->nombre;
    }

    public function setNombre($nombre) {
        $this->nombre = $nombre;
    }

public function SetCategoria(Categoria $objCat){
    $this->objCat=$objCat;
    }
  
    public function grabarProducto(){
       $micod=  $this->objCat->getCodigoCategoria();
   $query="insert into producto (nombre,codcategoria)values('$this->nombre','$micod')";
    $resultado = $this->objcon->EjecutarConsulta($query);
    return $resultado;
}
    
    
}

?>

*********************
Prueba.php

<?php
require_once '../Clases/Producto.php';

$objC=new Categoria();
$objC->set_nombre("Artefactos");
$objC->setCodigoCategoria(6);
$objC->set_descripcion("De Importacion");
$objC->grabarCategoria();

$objP=new Producto();
$objP->setNombre("Laptops");
$objP->SetCategoria($objC);
$objP->grabarProducto();

obviamente que este es UN EJEMPLO para COMPROBAR SOLAMENTE QUE SI GRABA ...ME GUSTARIA ESCUCHAR OPINIONES

« Última modificación: 13 Abril 2012, 17:41 pm por lokito1986 » En línea

Graphixx


Desconectado Desconectado

Mensajes: 1.336


Full Stack Developer


Ver Perfil WWW
Re: PORQUE NO INSERTA DATOS PHP
« Respuesta #9 en: 13 Abril 2012, 20:25 pm »

el problema era aqui :
 public function grabarProducto(){
     
    ...........
    $resultado = $this->_objcon->EjecutarConsulta($query);
    return $resultado;
}
no era _objcon sino SIMPLEMENTE objcon sin guion bajo ....

asi que ahi les pego el codigo corriendo perfectamente :.

posdata : Ustedes foreros que tienen mas tiempo programndo en PHP  ...esta bien mi codificacion orientado a Objetos ...me gustaria escucar opiniones al respecto ..gracias

Eso del guion bajo se llama Metodos magicos en PHP, no hay mucha documentacion al respecto pero aca te puse algo:
http://foro.elhacker.net/php/metodos_magicos_set_y_get_definicion_y_uso_con_call_en_php-t359079.0.html
En línea

Nada tiene fin solo hay pequeñas pausas, pausas que determinan el comienzo de otros. Graphixx Rōninnovation
Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Retraso con el metodo AddNew y mala recuperacion de datos. Porque?
Programación Visual Basic
NemeSys 6 2,266 Último mensaje 21 Noviembre 2006, 21:15 pm
por Ironhorse
Php & mysql: se conecta a La BD, pero no Inserta datos [solucionado] « 1 2 3 »
PHP
~V 20 12,488 Último mensaje 6 Diciembre 2009, 02:50 am
por ~V
funcion no inserta datos en la db
PHP
gAb1 8 3,171 Último mensaje 22 Septiembre 2014, 05:56 am
por gAb1
no inserta datos tablas relacion referencial uno a muchos
Desarrollo Web
magevi 0 1,934 Último mensaje 17 Febrero 2015, 21:57 pm
por magevi
No me inserta los datos a la base de datos.
PHP
Drakaris 7 4,649 Último mensaje 24 Diciembre 2016, 16:33 pm
por Drakaris
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines