Ver Mensaje Individual
  #9 (permalink)  
Antiguo 19/06/2018, 07:45
Avatar de KATHYU
KATHYU
 
Fecha de Ingreso: julio-2013
Mensajes: 547
Antigüedad: 10 años, 9 meses
Puntos: 46
Respuesta: Dudas con PHP y POO !!!

Cita:
Iniciado por tuadmin Ver Mensaje
que bueno, eso es un gran avanze, poco a poco llegaras comprenderlas

database.php


bueno aca algo importante, recuerda PHP es un lenguate interpretado, entonces cuando haces un clase en un archivo A.php y otra en un archivo B.php y tu archivo de pagina web index.php

si B.php necesita la clase que esta en A.php , en el archivo principal, tienes que hacer
un require de los archivos A.php y B.php,
o de lo contrario en el archivo B.php haga el REQUIRE del archivo A.php asi tu archivo index.php solo necesita hacer un require en B.php
eejej bueno espero no haberte mareado pero en resumen, si creas un clase en un archivo, y quieres llamarlo desde otro archivo hazle un require, y trata de usar RUTAS semi estaticas, al decir semistaticas me refiero a usar la constante __DIR__
Sabia que debía especificarles eso, pero creí que confiarían mas en mi

Si se fija, los dos archivos llaman a require_once(DIR_ROOT.SLASH.'loader.php'); que es básicamente mi cargador de todo. En loader.php ya tengo cargados todos los archivos que voy creando, y el loader lo mando llamar en index.php asi que ya todo se conecta.

Pasemos a porque da error en la linea 61

PD: Ya hice var_dump($sql); y si me trae la sentencia SQL de la otra clase

--------------------------EDIT----------------------------

Creo que ya encontré el error.

Código PHP:
Ver original
  1. public function queryFunction($sql){
  2.             // $querys = new Querys();
  3.             $MySQLi = $this->mysqli;
  4.             var_dump($MySQLi);
  5.             $sql = trim($sql);
  6.             var_dump($sql);
  7.             $result_set = $MySQLi->query($sql); // Linea
  8.  
  9.             if (!$result_set) {
  10.                 echo '<br>Error en consulta :<pre> ' . $sql .'</pre>';
  11.             }
  12.             return $result_set;
  13.         }

Al hacer var_dump($MySQLi); aparece en NULL eso significa que no esta mandando la conexión. Pero solo pasa esto si enlazo las clases, si lo hago todo en la misma clase, $MySQLi si guarda el array de la conexion. A que se debera que lo pierde al relacionarse con otra clase ??

----------------------EDIT 2.0---------------------------------

Ya lo resolvi

Tenia que inicializar el método de conexión en la función de la clase nueva
Código PHP:
Ver original
  1. public function getUsers(){
  2.             $dbm = new DBM();
  3.             $conexion = $dbm->conexion(); // Esta linea me faltaba
  4.             $sql = 'SELECT nombre FROM usuarios';
  5.             $result = $dbm->queryFunction($sql);
  6.             $users = $result->fetch_all(MYSQLI_ASSOC);
  7.  
  8.             return $users;
  9.         }

Ya vere como hago una función para esos casos
__________________
Al contrario de lo que muchos podrían afirmar, ayudar no te hace pobre, sino más rico.

Última edición por KATHYU; 19/06/2018 a las 10:00