Foros del Web » Programando para Internet » PHP »

Problema insercion con clases

Estas en el tema de Problema insercion con clases en el foro de PHP en Foros del Web. Buen dia foro Espero me puedan apoyar. Veran tengo un problema al hacer una insercion mediante clases, la situacion es los detos no llegan, no ...
  #1 (permalink)  
Antiguo 07/11/2012, 16:52
Avatar de jandrogdz  
Fecha de Ingreso: julio-2012
Ubicación: public $Guadalajara
Mensajes: 397
Antigüedad: 11 años, 9 meses
Puntos: 12
Pregunta Problema insercion con clases

Buen dia foro

Espero me puedan apoyar. Veran tengo un problema al hacer una insercion mediante clases, la situacion es los detos no llegan, no se asignan por tanto se hace una insercion sin datos alguien me podria apoyar...


este es mi archivo de usuario.class.php

Código PHP:
Ver original
  1. require_once("DBConnection.class.php");
  2.  
  3. class Usuario
  4. {
  5.     private $nombre;
  6.     private $pass;
  7.  
  8.     public function Usuario(DBConnection $db)
  9.     {
  10.         $this->conConnection = $db->getConnection();
  11.     }
  12.  
  13.  
  14.         public function getNombre()
  15.         {
  16.             return $this->nombre;
  17.         }
  18.  
  19.         public function setNombre($nombre)
  20.         {
  21.             $this->nombre = $nombre;
  22.         }
  23.  
  24.  
  25.         public function getPass()
  26.         {
  27.             return $this->pass;
  28.         }
  29.  
  30.         public function setPass($pass)
  31.         {
  32.             $this->pass = $pass;
  33.         }
  34.  
  35.  
  36.     public function addUser($nombre, $pass)
  37.     {
  38.         $sql = "INSERT INTO Usuario VALUES (0,'$this->nombre','$this->pass')";
  39.         return $this->conConnection->query($sql);
  40.         //$insert = $this->conConnection->query();
  41.     }
  42.  
  43.  
  44. }


y el archivo de donde mando a llamar el metodo es este.

Código PHP:
Ver original
  1. include("DBConnection.class.php");
  2.     include("usuario.class.php");
  3.  
  4.     $connection = new DBConnection();
  5.     $conn = $connection->getConnection();
  6.  
  7.     $user = new usuario($connection);
  8.     $user->addUser("DatoNombre","DatoPassword");



Imprimi los datos con var_dump y en el set me manda null y en el get si me regresa el dato.

Código PHP:
Ver original
  1. var_dump($user->setNombre("DatoNombre"));
  2.     var_dump($user->getNombre());
  3.     var_dump($user->setPass("DatoPasword"));
  4.     var_dump($user->getPass());

Ojala me puedan ayudar...
  #2 (permalink)  
Antiguo 07/11/2012, 17:02
 
Fecha de Ingreso: enero-2011
Ubicación: DF
Mensajes: 898
Antigüedad: 13 años, 3 meses
Puntos: 155
Respuesta: Problema insercion con clases

Código PHP:
Ver original
  1. <?
  2. require_once("DBConnection.class.php");
  3. *
  4. class Usuario
  5. {
  6. * * private $nombre;
  7. * * private $pass;
  8. *
  9. * * public function Usuario(DBConnection $db)
  10. * * {
  11. * * * * $this->conConnection = $db->getConnection();
  12. * * }
  13. *
  14. *
  15. * * * * public function getNombre()
  16. * * * * {
  17. * * * * * * return $this->nombre;
  18. * * * * }
  19. *
  20. * * * * public function setNombre($nombre)
  21. * * * * {
  22. * * * * * * $this->nombre = $nombre;
  23. * * * * }
  24. *
  25. *
  26. * * * * public function getPass()
  27. * * * * {
  28. * * * * * * return $this->pass;
  29. * * * * }
  30. *
  31. * * * * public function setPass($pass)
  32. * * * * {
  33. * * * * * * $this->pass = $pass;
  34. * * * * }
  35. *
  36. *
  37. * * public function addUser()#es que si los seteas no le veo caso pasarlos como parametros
  38. * * {
  39. * * * * $sql = "INSERT INTO Usuario VALUES (0,'$this->nombre','$this->pass')";
  40. * * * * return $this->conConnection->query($sql);
  41. * * * * //$insert = $this->conConnection->query();
  42. * * }
  43. *
  44. *
  45. }
  46.  
  47.  
  48. *
  49. * * $connection = new DBConnection();
  50. * * $conn = $connection->getConnection();
  51. *
  52. * * $user = new usuario($connection);
  53.     #al seteralos deberian existir ya las propiedades que llamas en addUser
  54.     $user->setnombre("Efren");
  55.     $user->setnombre("efren");
  56. * * $user->addUser();
  57. ?>

si te funciona la conexion asi como la haces?

tal vez si usas seters y getters sea mejor llamar la funcion geter a la hora de insertar
__________________
No me interesan ni las gracias ni los karmas , pero si que se genere conocimiento, si se dio con la respuesta por favor confirmalo
  #3 (permalink)  
Antiguo 07/11/2012, 17:07
Avatar de jandrogdz  
Fecha de Ingreso: julio-2012
Ubicación: public $Guadalajara
Mensajes: 397
Antigüedad: 11 años, 9 meses
Puntos: 12
Respuesta: Problema insercion con clases

Gracias por contestar me podrias decir como harias la insercion con los set y los get esk apenas comienzo en php con classes
  #4 (permalink)  
Antiguo 07/11/2012, 17:12
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Problema insercion con clases

Es normal que el setter no te devuelva nada, porque en su definición no devuelve nada, sólo asigna.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #5 (permalink)  
Antiguo 07/11/2012, 18:02
 
Fecha de Ingreso: enero-2011
Ubicación: DF
Mensajes: 898
Antigüedad: 13 años, 3 meses
Puntos: 155
Respuesta: Problema insercion con clases

Cita:
Iniciado por jandrogdz Ver Mensaje
Gracias por contestar me podrias decir como harias la insercion con los set y los get esk apenas comienzo en php con classes
de hecho ahi me sale una duda por que private?

aja si tienes un getter puedes llamar la función que te devuelve el valor de la propiedad necesitada dentro de cualquier otro metodo de tu clase

Código PHP:
Ver original
  1. $this->getNombre();

pero previamente debe estar definida

http://www.php.net/manual/es/languag...visibility.php
__________________
No me interesan ni las gracias ni los karmas , pero si que se genere conocimiento, si se dio con la respuesta por favor confirmalo
  #6 (permalink)  
Antiguo 07/11/2012, 20:29
Avatar de patriciomase  
Fecha de Ingreso: abril-2012
Ubicación: Mar del Plata
Mensajes: 323
Antigüedad: 12 años
Puntos: 34
Respuesta: Problema insercion con clases

en ningun lugar del codigo haces el set. es normal que no imprima nada.

luego de instanciar el objeto hacele el set! o pasale los parametros en el constructor, estan vacios porque no les asignas nada
  #7 (permalink)  
Antiguo 08/11/2012, 08:35
Avatar de jandrogdz  
Fecha de Ingreso: julio-2012
Ubicación: public $Guadalajara
Mensajes: 397
Antigüedad: 11 años, 9 meses
Puntos: 12
Respuesta: Problema insercion con clases

ya intente pasar el get en la insercion pero me marca un error de exception.
lo intente como me dijo mogurbon pero no hace insercion alguien me puede dar un ejemplo de como hacer la insercion...

Al hacer el var_dump de ambos get me retorna esto.

Código PHP:
Ver original
  1. string 'DatoNombre' (length=10)
  2.  
  3. string 'DatoPassword' (length=12)

como puedo recoger esos datos en la insercion...

Última edición por jandrogdz; 08/11/2012 a las 08:41
  #8 (permalink)  
Antiguo 08/11/2012, 08:57
Avatar de jandrogdz  
Fecha de Ingreso: julio-2012
Ubicación: public $Guadalajara
Mensajes: 397
Antigüedad: 11 años, 9 meses
Puntos: 12
Respuesta: Problema insercion con clases

Gracias a todos por sus respuestas he logrado hacer la insercion mandando los parametros en el constructor. Pero me gustaria saber como hacer la insercion con los setters y getters.

Esto es lo que hice:

Código PHP:
Ver original
  1. <?php
  2.  
  3. require_once("DBConnection.class.php");
  4.  
  5. class Usuario
  6. {
  7.     private $nombre;
  8.     private $pass;
  9.  
  10.     public function Usuario(DBConnection $db, $nombre, $pass)
  11.     {
  12.         $this->conConnection = $db->getConnection();
  13.         $this->nombre = $nombre;
  14.         $this->pass = $pass;
  15.     }
  16.  
  17.         /*
  18.         public function getNombre()
  19.         {
  20.             return $this->nombre;
  21.         }
  22.  
  23.         public function setNombre($nombre)
  24.         {
  25.             $this->nombre = $nombre;
  26.         }
  27.  
  28.  
  29.         public function getPass()
  30.         {
  31.             return $this->pass;
  32.         }
  33.  
  34.         public function setPass($pass)
  35.         {
  36.             $this->pass = $pass;
  37.         }
  38.         */
  39.  
  40.  
  41.     public function addUser()
  42.     {
  43.         $sql = "INSERT INTO Usuario VALUES (0,'$this->nombre','$this->pass')";
  44.         return $this->conConnection->query($sql);
  45.         //$insert = $this->conConnection->query();
  46.     }
  47.  
  48.  
  49. }
  50.  
  51. ?>

y en la pagina que llamo a los metodos hice esto:
Código PHP:
Ver original
  1. <?php
  2.    
  3.     include("DBConnection.class.php");
  4.     include("usuario.class.php");
  5.  
  6.     $connection = new DBConnection();
  7.     $conn = $connection->getConnection();
  8.  
  9.     $user = new usuario($connection, "Nombre", "Pass");
  10.  
  11.     $user->addUser();
  #9 (permalink)  
Antiguo 08/11/2012, 09:12
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 12 años, 9 meses
Puntos: 793
Respuesta: Problema insercion con clases

Tu problema principal viene de aquí:

Código PHP:
Ver original
  1. public function addUser($nombre, $pass)
  2.     {
  3.         $sql = "INSERT INTO Usuario VALUES (0,'$this->nombre','$this->pass')";
  4.         return $this->conConnection->query($sql);
  5.         //$insert = $this->conConnection->query();
  6.     }

No es lo mismo un argumento de un método que una propiedad de una clase

No es lo mismo $nombre que $this->nombre

Esto sobra --> $nombre, $pass

y basta con llamar a los set

Código PHP:
Ver original
  1. $user->setNombre('nombre');
  2. $user->setPass('pass');

para que el método addUser tenga estos datos listos para ser insertados.

PD: los constructores se escriben __construct

Saludos.
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP
  #10 (permalink)  
Antiguo 08/11/2012, 09:24
Avatar de jandrogdz  
Fecha de Ingreso: julio-2012
Ubicación: public $Guadalajara
Mensajes: 397
Antigüedad: 11 años, 9 meses
Puntos: 12
Pregunta Respuesta: Problema insercion con clases

Gracias andresdzphp ia he quitado eso que me dices pero no tengo idea de como obtener las propiedades del get y meterlas en el insert.

Se que para asignar el valor tengo que hacer

Código PHP:
Ver original
  1. $user->setNombre("Nombre");
  2. $user->setPass("Pass");

Ahi es donde me pierdo. Como deberia de quedar el insert

Código PHP:
Ver original
  1. public function addUser()
  2.     {
  3.         $sql = "INSERT INTO Usuario VALUES (0,'$this->nombre','$this->pass')";
  4.         return $this->conConnection->query($sql);
  5.         //$insert = $this->conConnection->query();
  6.     }

Esa parte es la que aun no se como debe de quedar para que haga la insercion correctamente.
A lo mejor es cualkier cosa pero como comentaba soy novato apenas comienzo con php orientado a objetos.

espero m puedan ayudar
  #11 (permalink)  
Antiguo 08/11/2012, 09:31
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 12 años, 9 meses
Puntos: 793
Respuesta: Problema insercion con clases

Así mismo debería quedar, lo que está sobrando en tu clase son los getPass y getNombre, que se usan en caso de que quisieras imprimir el nombre o tu password y no le encuentro sentido.

Por ejemplo:

Código PHP:
Ver original
  1. echo 'Nombre insertado: ' . $user->getNombre();

Te recomiendo que leas lo básico del manual Clases y objetos

Saludos.
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP
  #12 (permalink)  
Antiguo 08/11/2012, 09:44
Avatar de jandrogdz  
Fecha de Ingreso: julio-2012
Ubicación: public $Guadalajara
Mensajes: 397
Antigüedad: 11 años, 9 meses
Puntos: 12
Respuesta: Problema insercion con clases

Muchas gracias a todos.

andresdzphp tus consejos me sirvieron de mucho ya pude hacer la insercion con set y ahora comprendo que el set asigna y el get mmm es como sacar el dato bueno asi lo interpreto yo.

Muchas gracias por su apoyo
  #13 (permalink)  
Antiguo 08/11/2012, 09:48
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 12 años, 9 meses
Puntos: 793
Respuesta: Problema insercion con clases

Si lo que quieres es hacer "pruebas" con los set y get

Código PHP:
Ver original
  1. public function addUser($nombre, $pass)
  2.     {
  3.         $sql = "INSERT INTO Usuario VALUES (0,'$nombre','$pass')";
  4.         return $this->conConnection->query($sql);
  5.         //$insert = $this->conConnection->query();
  6.     }

y para usarlo

Código PHP:
Ver original
  1. //primero llamas a los set
  2. $user->addUser($user->getNombre(), $user->getPass());

Saludos.
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP
  #14 (permalink)  
Antiguo 08/11/2012, 09:51
Avatar de jandrogdz  
Fecha de Ingreso: julio-2012
Ubicación: public $Guadalajara
Mensajes: 397
Antigüedad: 11 años, 9 meses
Puntos: 12
Respuesta: Problema insercion con clases

Ok gracias andresdzphp hare pruebas para reforzar el conocimiento y dejo una pagina que me encontre en la cual entendi algunas cosas de programacion orientada a objetos.

http://phpsenior.blogspot.mx/2006/11...accesores.html
  #15 (permalink)  
Antiguo 08/11/2012, 10:02
Avatar de jandrogdz  
Fecha de Ingreso: julio-2012
Ubicación: public $Guadalajara
Mensajes: 397
Antigüedad: 11 años, 9 meses
Puntos: 12
Respuesta: Problema insercion con clases

Dejo mi codigo ojala le sirva a alguien de referencia.
En el codigo viene para hacerlo de las dos formas que me comentaron por puro set o con set y get.

usuario.class.php

Código PHP:
Ver original
  1. <?php
  2.  
  3. require_once("DBConnection.class.php");
  4.  
  5. class Usuario
  6. {
  7.     private $nombre;
  8.     private $pass;
  9.  
  10.     public function Usuario(DBConnection $db)
  11.     {
  12.         $this->conConnection = $db->getConnection();
  13.     }
  14.  
  15.        
  16.         public function getNombre()
  17.         {
  18.             return $this->nombre;
  19.         }
  20.        
  21.  
  22.         public function setNombre($nombre)
  23.         {
  24.             $this->nombre = $nombre;
  25.         }
  26.  
  27.        
  28.         public function getPass()
  29.         {
  30.             return $this->pass;
  31.         }
  32.        
  33.  
  34.         public function setPass($pass)
  35.         {
  36.             $this->pass = $pass;
  37.         }
  38.        
  39.  
  40.     public function addUser()
  41.     {
  42.         $sql = "INSERT INTO Usuario VALUES (0,'$this->nombre','$this->pass')";
  43.         return $this->conConnection->query($sql);
  44.  
  45.     }
  46.  
  47.     public function addUserParameters($nombre, $pass)
  48.     {
  49.         $sql = "INSERT INTO Usuario VALUES (0,'$nombre','$pass')";
  50.         return $this->conConnection->query($sql);
  51.  
  52.     }
  53.  
  54.  
  55. }
  56.  
  57. ?>

y en el archivo donde mandamos a llamar los metodos:

archivo.php

Código PHP:
Ver original
  1. <?php
  2.    
  3.     include("DBConnection.class.php");
  4.     include("usuario.class.php");
  5.  
  6.     $connection = new DBConnection();
  7.     $conn = $connection->getConnection();
  8.  
  9.     $user = new usuario($connection);
  10.    
  11.     // Hacer insercion con solo setters sin enviar parametros en el metodo.
  12.     $user->setNombre("Nombre");
  13.     $user->setPass("Pass");
  14.     $user->addUser();
  15.    
  16.  
  17.    
  18.     // Hacer insercion utilizando setters y getters con parametros.
  19.     $user->setNombre("Nombre");
  20.     $user->setPass("Pass");
  21.     $user->addUser($user->getNombre(), $user->getPass());
  22.    
  23. ?>

Ojala le sirva a alguien.

Etiquetas: clases, sql, usuarios
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:47.