Foros del Web » Programando para Internet » PHP »

Dudas Clases y Mysqli

Estas en el tema de Dudas Clases y Mysqli en el foro de PHP en Foros del Web. Hola amigos les comento mi problema, resulta que hace poco por recoemndacion comence a utilizar Mysqli con php en lugar de la antigua Mysql. Tengo ...
  #1 (permalink)  
Antiguo 31/10/2012, 08:09
Avatar de djaevi  
Fecha de Ingreso: marzo-2007
Ubicación: Moreno, Buenos Aires
Mensajes: 400
Antigüedad: 17 años, 1 mes
Puntos: 47
Dudas Clases y Mysqli

Hola amigos les comento mi problema, resulta que hace poco por recoemndacion comence a utilizar Mysqli con php en lugar de la antigua Mysql. Tengo un problema quiza tonto pero del cual me surgieron varias dudas resulta que tengo una clase muy simple de prueba donde tengo mi usuario y en base al id llamo en la clase todos los datos del usuario x ejemplo:

Código PHP:
Ver original
  1. class usuario {
  2.    
  3.     function usuario($idUsuario) {
  4.    
  5.         $this->idUsuario = $idUsuario;
  6.         $datos = mysql_fetch_assoc(mysql_query("SELECT * FROM usuarios WHERE usuario = $this->idUsuario"));
  7.         $this->email = $datos["email"];
  8.         $this->nacionalidad = $datos["nacionalidad"];
  9.         $this->imagenPerfil = $datos["imagenPerfil"];
  10.    
  11.     }
  12.    
  13. }

Esto me funcionaba lo mas bien el asunto es que ahora con mysqli al hacer una query si o si debo pasarle como 1er parametro a la funcion mysqli_query la variable de conexion que uso lo cual se ha vuelto un problema ya que me pareceria sucio pasar como metodo a la clase mi variable de conexion.

He revisado sobre variables globales y constantes pero nada me convence. Cual seria la mejor solucion para dejar el codigo lo mas limpio posible? hay alguna correccion (o muchas :P) que me harian sobre mi forma de escribir clases ya que no hace mucho las empece a usar?

Desde ya muchas gracias.
  #2 (permalink)  
Antiguo 31/10/2012, 08:57
Avatar de juanito1712  
Fecha de Ingreso: mayo-2010
Ubicación: Valencia
Mensajes: 1.124
Antigüedad: 13 años, 11 meses
Puntos: 66
Respuesta: Dudas Clases y Mysqli

pues tampoco me parece algo sucio porque esa clase es para realizar una consulta a una base de datos y del mismo modo que si o si le tienes que pasar una conexión, si o si debe haber una conexión abierta para poder realizar una consulta.

le pasas la conexión como parámetro del mismo modo que el idUsuario y listo
  #3 (permalink)  
Antiguo 31/10/2012, 09:39
Avatar de djaevi  
Fecha de Ingreso: marzo-2007
Ubicación: Moreno, Buenos Aires
Mensajes: 400
Antigüedad: 17 años, 1 mes
Puntos: 47
Respuesta: Dudas Clases y Mysqli

Es que yo preferiria dentro de mi clase hacer referencia a la conexion global que ya tengo inicializada en mi web no me gustaria para cada clase tener que abrir y cerrar una conexion pasa que dentro de mi clase la misma no me reconoce al mysqli estoy en serios problemas :P
  #4 (permalink)  
Antiguo 31/10/2012, 09:45
Avatar de veruti85  
Fecha de Ingreso: octubre-2012
Ubicación: Entre Huelva y Madrid
Mensajes: 32
Antigüedad: 11 años, 5 meses
Puntos: 7
Respuesta: Dudas Clases y Mysqli

No uses las funciones genericas de mysqli, usa objetos.
Te creas una propiedad $conexion en tu clase, y lo usas de esta forma
Código:
$this->conexion = @new mysqli(_AP_DB_HOST,_AP_DB_USUARIO,_AP_DB_PASSWORD);

$this->conexion->select_db (_AP_DB_NAME);

... //Y todo lo que tengas que hacer
Esta libreria es mas compleja que la otra y quizas lo que te ponga te lie mas de lo que puedas estar...

yo que tu me miraria de arriba abajo la [URL="http://php.net/manual/es/book.mysqli.php"]especificacion de php[/URL]

Saludos
  #5 (permalink)  
Antiguo 31/10/2012, 10:05
Avatar de djaevi  
Fecha de Ingreso: marzo-2007
Ubicación: Moreno, Buenos Aires
Mensajes: 400
Antigüedad: 17 años, 1 mes
Puntos: 47
Respuesta: Dudas Clases y Mysqli

Es que en realidad no es tan complejo lo que necesito hacer aver les hago otra pregunta... como puedo usar dentro de una clase mia una variable de configuracion ej:

Archivo config.php:

Código PHP:
Ver original
  1. $server = "localhost";

Archivo de clase:

Código PHP:
Ver original
  1. class sql {
  2.     public function sql() {
  3.         $this->servidor = $server
  4.     }
  5. }

Donde $server seria la variable "global" que vendria desde mi archivo de configuracion, es posible realizar esto?
  #6 (permalink)  
Antiguo 31/10/2012, 10:10
Avatar de veruti85  
Fecha de Ingreso: octubre-2012
Ubicación: Entre Huelva y Madrid
Mensajes: 32
Antigüedad: 11 años, 5 meses
Puntos: 7
Respuesta: Dudas Clases y Mysqli

Para eso usa el define. P.ej:
Código:
define('_HOST_DB',   'IPDEMIHOST');  //Lo defines en tu fichero de configuracion

class sql {
  public function sql() {
    $this->servidor = _HOST_DB;
  }
}
Con eso ya lo tienes
  #7 (permalink)  
Antiguo 31/10/2012, 10:18
Avatar de eits  
Fecha de Ingreso: junio-2005
Ubicación: valladolid, yucatán
Mensajes: 1.655
Antigüedad: 18 años, 10 meses
Puntos: 88
Respuesta: Dudas Clases y Mysqli

usa constantes
config.php
Código PHP:
Ver original
  1. define('SERVER','localhost');
  2. define('USER','tuUsuario');
  3. define('PASS','tuPassword');
  4. define('DB','tuBasedeDatos');
y en tuClass.php
Código PHP:
Ver original
  1. class sql {
  2.  public function sql() {
  3.   $this->servidor = SERVER;
  4.   $this->user = USER;
  5.   $this->pass = PASS;
  6.   $this->db = DB;
  7.  }
  8. }
y obviamente, hay que incluir el archivo de configuración antes de llamar a la clase.
__________________
El amor es la locura mas lucida que tiene el hombre.- Andres Henestrosa
la tristeza no existe, solo es... la ausencia de la felicidad.
  #8 (permalink)  
Antiguo 31/10/2012, 10:23
Avatar de juanito1712  
Fecha de Ingreso: mayo-2010
Ubicación: Valencia
Mensajes: 1.124
Antigüedad: 13 años, 11 meses
Puntos: 66
Respuesta: Dudas Clases y Mysqli

Esque eso de una conexion global no es muy recomendable, tanto como a cada consulta no hace falta pero seguro que esa clase la utilizas en un proceso, pues abres una conexion realizas lo que necesite y al final de ese proceso cierras la conexion.
No es economico ni seguro ir dejando conexiones abiertas.
  #9 (permalink)  
Antiguo 31/10/2012, 10:52
Avatar de djaevi  
Fecha de Ingreso: marzo-2007
Ubicación: Moreno, Buenos Aires
Mensajes: 400
Antigüedad: 17 años, 1 mes
Puntos: 47
Respuesta: Dudas Clases y Mysqli

En efecto ahora lo que hago gracias a las constantes sera eso recuperar los datos de conexion del config ejecutar las consultas y despues mysqli_close(); muchas gracias a todos ! por su muy valiosa ayuda.

Etiquetas: clases, dudas, mysql, mysqli, sql, variables, 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 02:05.