Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Problema consulta php POO

Estas en el tema de Problema consulta php POO en el foro de PHP en Foros del Web. Hola, buenas a todos veran, estoy practicando con php POO pero la verdad que no comprendo porque no funciona este codigo, hace mas de 1 ...
  #1 (permalink)  
Antiguo 10/01/2017, 07:05
 
Fecha de Ingreso: agosto-2015
Ubicación: Rosario - Argentina
Mensajes: 356
Antigüedad: 2 años
Puntos: 6
Problema consulta php POO

Hola, buenas a todos

veran, estoy practicando con php POO pero la verdad que no comprendo porque no funciona este codigo, hace mas de 1 hora que le estoy dando vueltas y nada.

La verdad que he visto videos, pero solo muestran conexion y consultas en un mismo fichero, y claro... asi funciona facil, el tema es que con uno externo no se como hacerlo.

Config.php:
Código PHP:
Ver original
  1. <?php
  2. class ConnectDB{
  3.  
  4.     private $host;
  5.     private $user;
  6.     private $pass;
  7.     private $db;
  8.     public $conexion;
  9.  
  10.     function ConnectDB($host, $user, $pass, $db){
  11.         $this -> host = $host;
  12.         $this -> user = $user;
  13.         $this -> pass = $pass;
  14.         $this -> db = $db;
  15.     }
  16.  
  17.     public function ConectarMySQL(){
  18.         $this -> conexion = new mysqli($this -> host, $this -> user, $this -> pass, $this -> db)or die("Error al conectar.");
  19.     }
  20.    
  21. }
  22. // Configuracion de credenciales MySQL.
  23. $conexion = new ConnectDB("xxxxxxxx", "xxxx", "xxxxxxxx", "xxxx");
  24. $conexion -> ConectarMySQL();
  25. ?>

Registro.php
Código PHP:
Ver original
  1. <?php
  2. require("config.php");
  3. extract($_POST);
  4. class Registro{
  5.     private $usuario;
  6.     private $password;
  7.     private $PassEncrypt;
  8.     function RegistrarUsuario($usuario, $password){
  9.         $this -> usuario = strtoupper($usuario);
  10.         $this -> password = strtoupper($password);
  11.         $this -> PassEncrypt = sha1($this -> usuario.":".$this -> password);
  12.  
  13.         /*AQUI NECESITO SABER COMO ESTABLECER UNA SENTENCIA, PORQUE NO ENTIENDO COMO
  14.         LLAMAR A LA CONEXION, YA QUE SALE "QUERY NON OBJECT" ALGO ASI, Y NO LOGRO REGISTRAR
  15.         AL USUARIO.*/
  16.  
  17.     }
  18. }
  19.  
  20. $registrar = new Registro();
  21. $registrar -> RegistrarUsuario($usuario, $password);
  22. ?>

Espero me puedan ayudar, porque la verdad no se como llamar o crear el objeto conexion desde otra clase y funcion.
  #2 (permalink)  
Antiguo 11/01/2017, 08:23
Avatar de german_1441  
Fecha de Ingreso: diciembre-2015
Ubicación: México
Mensajes: 277
Antigüedad: 1 año, 8 meses
Puntos: 20
Respuesta: Problema consulta php POO

Hola amigo,
podrías hacer un constructor para tu clase Registro, en el cual reciba como parámetro la conexión que previamente ya realizaste ($conexion)

Código PHP:
Ver original
  1. class Registro{
  2.    private $conexion;
  3.    public function __construct($conexion){
  4.       $this->conexion = $conexion;
  5.   }
  6.   ..-
  7. }
  8.  
  9. $registrar = new Registro($conexion);

Quizá no es lo más óptimo, no lo sé, pero es una idea.
Saludos!
__________________
Aprende a enseñar ... enseñando aprenderás
  #3 (permalink)  
Antiguo 11/01/2017, 12:36
 
Fecha de Ingreso: diciembre-2015
Ubicación: rosario
Mensajes: 69
Antigüedad: 1 año, 8 meses
Puntos: 5
Respuesta: Problema consulta php POO

Código PHP:
Ver original
  1. class ConnectDB{
  2.  
  3.     private $host;
  4.     private $user;
  5.     private $pass;
  6.     private $db;
  7.     public $conexion;
  8.  
  9.     function ConnectDB($host, $user, $pass, $db){
  10.         $this -> host = $host;
  11.         $this -> user = $user;
  12.         $this -> pass = $pass;
  13.         $this -> db = $db;
  14.     }
  15.  
  16.     public function ConectarMySQL(){
  17.         return $this -> conexion = mysqli_connect($this -> host, $this -> user, $this -> pass);
  18.     }
  19.    
  20. }

Código PHP:
Ver original
  1. require("ConnectDB.php");
  2.  
  3.  
  4. class Registro{
  5.     private $usuario;
  6.     private $password;
  7.     private $PassEncrypt;
  8.     public  $objCnn;
  9.    
  10.     function __construct(){
  11.         $conexion = new ConnectDB('127.0.0.1', "tuuser","", "tupass");
  12.         $this->objCnn = $conexion -> ConectarMySQL();
  13.     }
  14.    
  15.     function RegistrarUsuario($p_usuario, $p_password){
  16.         $this -> usuario = strtoupper($p_usuario);
  17.         $this -> password = strtoupper($p_password);
  18.         $this -> PassEncrypt = sha1($this -> usuario.":".$this -> password);
  19.         $tildes = $this->objCnn->query("SET NAMES 'utf8'"); //Para que se inserten las tildes correctamente
  20.         /*AQUI NECESITO SABER COMO ESTABLECER UNA SENTENCIA, PORQUE NO ENTIENDO COMO
  21.         LLAMAR A LA CONEXION, YA QUE SALE "QUERY NON OBJECT" ALGO ASI, Y NO LOGRO REGISTRAR
  22.         AL USUARIO.*/
  23.         mysqli_select_db($this->objCnn, "prueba");
  24.         $query = "
  25.             INSERT INTO user (usuario, contrasenia) VALUES ('".$this->usuario."','".$this -> password."');";
  26.         echo '$query '.$query ;
  27.        
  28.         if(mysqli_query($this->objCnn, $query)){
  29.             echo "Records added successfully.";
  30.         } else{
  31.             echo "ERROR: Could not able to execute $sql. " . mysqli_error($this->objCnn);
  32.         }
  33.        
  34.  
  35.         echo "<h2>Thank you for your Comment!</h2>";
  36.  
  37.         mysqli_close($this->objCnn);
  38.  
  39.     }
  40. }
  41.  
  42.  
  43. $registrar = new Registro();
  44. $registrar -> RegistrarUsuario('julio','564564');

Etiquetas: mysql, poo, registro, sql, usuario
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 13:17.