Foros del Web » Programando para Internet » PHP » Frameworks y PHP orientado a objetos »

Como funcionan las clases con mysql?

Estas en el tema de Como funcionan las clases con mysql? en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Saludos, estaba viendo la poo con mysql y vi esta pagina: hacerpaginaswebconphp.com/clase-php-trabajar-mysq/ pero no dice como mostrar los resultados, Código: class mysql { private $host="localhost"; ...
  #1 (permalink)  
Antiguo 31/01/2012, 11:30
 
Fecha de Ingreso: julio-2010
Mensajes: 158
Antigüedad: 13 años, 10 meses
Puntos: 3
Como funcionan las clases con mysql?

Saludos, estaba viendo la poo con mysql y vi esta pagina:
hacerpaginaswebconphp.com/clase-php-trabajar-mysq/ pero no dice como mostrar los resultados,

Código:
class mysql
    {
    private $host="localhost";
    private $user="root";
    private $clave="root";
    private $bd="empresas";
    private $conexion;  //Se almacenará el apuntador a la conexion
 
    public function conectar()
        {
        $this->conexion=mysql_connect($this->host,$this->user,$this->clave);
            mysql_select_db($this->bd,$this->conexion);
        }
 
    public function listar_empresas()
        {
        $consulta="select nombre from empresas";
        $this->conectar();
        $resultado=mysql_query($consulta);
        $this->cerrar();
        while ($r=mysql_fetch_array($resultado))
            echo "<li><a href=\"empresa.php?empresa=".$r['nombre']."\" alt=\"".$r['nombre']."\" title=\"".$r['nombre']."\">".$r['nombre']."</a></li>";
            unset ($resultado);
        unset ($consulta);
        }

public function cerrar ()
        {
        @mysql_close($this->conexion);
        }
    }
En el codigo de arriba como muestro los valores del while?
  #2 (permalink)  
Antiguo 31/01/2012, 11:45
Avatar de efedefernan  
Fecha de Ingreso: diciembre-2007
Ubicación: Cantabria
Mensajes: 91
Antigüedad: 16 años, 4 meses
Puntos: 11
Respuesta: Como funcionan las clases con mysql?

$db=new mysql();
$db->listar_empresas();
  #3 (permalink)  
Antiguo 31/01/2012, 11:47
Avatar de skiper0125  
Fecha de Ingreso: octubre-2010
Ubicación: $this->Mexico('Toluca');
Mensajes: 1.127
Antigüedad: 13 años, 6 meses
Puntos: 511
Respuesta: Como funcionan las clases con mysql?

Hola que tal.

lo que pasa esa clase solo sirve para mostrar una lista de empresas y no para otra cosa.

Te dejo este ejemplo espero te sirva.

Código PHP:
Ver original
  1. <?php
  2. class conectarMySQL {
  3.    
  4.     var $servidor;
  5.     var $usuario;
  6.     var $password;
  7.     var $bd;
  8.     var $consulta;
  9.     var $enlace;
  10.     var $resultado;
  11.     var $datos;
  12.     var $modifica;
  13.     var $inserta;
  14.    
  15.     function conectarMySQL() {
  16.         $this->servidor="tu_host";
  17.         $this->usuario="tu_user";
  18.         $this->password="tu_pass";
  19.         $this->bd="tu_base";
  20.     }
  21.    
  22.     function conectar() {
  23.         if($this->enlace=mysql_connect($this->servidor,$this->usuario,$this->password)) {
  24.             if(mysql_select_db($this->bd,$this->enlace)) {
  25.                 //Sí es correcta
  26.             } else {
  27.                 echo "No se ha podido seleccionar la  BD";
  28.             }
  29.         } else {
  30.             echo "No se ha podido conectar al servidor";
  31.         }                
  32.     }
  33.    
  34.  
  35.     function consultar($query) {
  36.         $this->consulta=mysql_query($query,$this->enlace) or die ("Error en la consulta: ".mysql_error());
  37.     }
  38.    
  39.     function obtendatos() {
  40.         $this->resultado=mysql_fetch_array($this->consulta);
  41.         return $this->resultado;
  42.     }
  43.    
  44.     function numerodedatos() {
  45.         $this->datos=mysql_num_rows($this->consulta);
  46.         return $this->datos;
  47.     }
  48.    
  49.     function cerrarconexion() {
  50.         mysql_close($this->enlace);
  51.     }
  52.    
  53.     function limpiaconsulta() {
  54.         mysql_free_result($this->consulta);
  55.     }  
  56. }
  57.  
  58.  
  59. //forma de usar correctamente la clase
  60.  
  61. $sql = new conectarMySQL();
  62. $sql->conectar();
  63. $sql->consultar("SELECT campo_1, campo_2 FROM tu_tabla ");
  64. while($datos = $sql->obtendatos() ){
  65.     echo $datos['campo_1'].'<br>'.$datos['campo_2'].'<br>';
  66. }
  67. $sql->limpiaconsulta();
  68. $sql->cerrarconexion()
  69.  
  70.  
  71. ?>

Saludos
__________________
Recuerda que estamos aquí para orientarte, y no para hacer tu trabajo.
Si mi aporte fue de ayuda, recuerda que agradecer no cuesta nada +1

Skiper0125
  #4 (permalink)  
Antiguo 31/01/2012, 11:55
Avatar de efedefernan  
Fecha de Ingreso: diciembre-2007
Ubicación: Cantabria
Mensajes: 91
Antigüedad: 16 años, 4 meses
Puntos: 11
Respuesta: Como funcionan las clases con mysql?

Un pequeño consejo a los dos es que si vais a hacer clases para trabajar con bases de datos, las hagais trabajando con MYSQLi y consultas parametrizadas. (por vuestra seguridad y así evitar ataques de inyeccion SQL).
  #5 (permalink)  
Antiguo 31/01/2012, 23:40
 
Fecha de Ingreso: julio-2010
Mensajes: 158
Antigüedad: 13 años, 10 meses
Puntos: 3
Respuesta: Como funcionan las clases con mysql?

Cita:
Iniciado por efedefernan Ver Mensaje
$db=new mysql();
$db->listar_empresas();
Muchas gracias por responder a los 2, yo se que asi se llaman las clases y las funciones pero como dije lo que quiero es mostrar los datos, y no me funciona:

$db=new mysql();
$db->listar_empresas();
echo $db;
  #6 (permalink)  
Antiguo 31/01/2012, 23:58
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: Como funcionan las clases con mysql?

Cita:
Iniciado por efedefernan Ver Mensaje
Un pequeño consejo a los dos es que si vais a hacer clases para trabajar con bases de datos, las hagais trabajando con MYSQLi y consultas parametrizadas. (por vuestra seguridad y así evitar ataques de inyeccion SQL).
Usen PDO

http://www.php.net/manual/es/intro.pdo.php
__________________
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
  #7 (permalink)  
Antiguo 01/02/2012, 02:14
Avatar de efedefernan  
Fecha de Ingreso: diciembre-2007
Ubicación: Cantabria
Mensajes: 91
Antigüedad: 16 años, 4 meses
Puntos: 11
Respuesta: Como funcionan las clases con mysql?

Cita:
Iniciado por cyber_dark Ver Mensaje
Muchas gracias por responder a los 2, yo se que asi se llaman las clases y las funciones pero como dije lo que quiero es mostrar los datos, y no me funciona:

$db=new mysql();
$db->listar_empresas();
echo $db;

Yo lo he probado y si que funciona y sin falta de poner el echo $db.
el propio metodo listar_empresas te devuelve un echo de una lista.

comprueba que la consulta no te retorna valores vacios.
  #8 (permalink)  
Antiguo 01/02/2012, 03:00
Avatar de Koletta  
Fecha de Ingreso: octubre-2011
Ubicación: España
Mensajes: 12
Antigüedad: 12 años, 6 meses
Puntos: 1
Respuesta: Como funcionan las clases con mysql?

Buenas, esa función es correcta? Tengo un nivel aceptable en PHP pero a veces se me pasan tonterías y hay cosas que no me cuadran.

En esta función, es correcta la línea donde pone "unset ($resultado)"?


Código PHP:
Ver original
  1. public function listar_empresas()
  2.         {
  3.         $consulta="select nombre from empresas";
  4.         $this->conectar();
  5.         $resultado=mysql_query($consulta);
  6.         $this->cerrar();
  7.         while ($r=mysql_fetch_array($resultado))
  8.             echo "<li><a href=\"empresa.php?empresa=".$r['nombre']."\" alt=\"".$r['nombre']."\" title=\"".$r['nombre']."\">".$r['nombre']."</a></li>";
  9.             unset ($resultado);
  10.         unset ($consulta);
  11.         }


Si usas "unset" en la variable $resultado, el bucle while no deja de funcionar?

Siento no se de mas ayuda pero me surgió esa duda.

Saludos.
  #9 (permalink)  
Antiguo 01/02/2012, 03:44
Avatar de efedefernan  
Fecha de Ingreso: diciembre-2007
Ubicación: Cantabria
Mensajes: 91
Antigüedad: 16 años, 4 meses
Puntos: 11
Respuesta: Como funcionan las clases con mysql?

Cita:
Iniciado por Koletta Ver Mensaje
Buenas, esa función es correcta? Tengo un nivel aceptable en PHP pero a veces se me pasan tonterías y hay cosas que no me cuadran.

En esta función, es correcta la línea donde pone "unset ($resultado)"?


Código PHP:
Ver original
  1. public function listar_empresas()
  2.         {
  3.         $consulta="select nombre from empresas";
  4.         $this->conectar();
  5.         $resultado=mysql_query($consulta);
  6.         $this->cerrar();
  7.         while ($r=mysql_fetch_array($resultado))
  8.             echo "<li><a href=\"empresa.php?empresa=".$r['nombre']."\" alt=\"".$r['nombre']."\" title=\"".$r['nombre']."\">".$r['nombre']."</a></li>";
  9.             unset ($resultado);
  10.         unset ($consulta);
  11.         }


Si usas "unset" en la variable $resultado, el bucle while no deja de funcionar?

Siento no se de mas ayuda pero me surgió esa duda.

Saludos.

Unset si que destruye la variable $resultado y $consulta, pero despues de mostrar el resultado por pantalla.
primero hace el echo y finalmente destruye las variables el unset()
  #10 (permalink)  
Antiguo 01/02/2012, 04:55
Avatar de Koletta  
Fecha de Ingreso: octubre-2011
Ubicación: España
Mensajes: 12
Antigüedad: 12 años, 6 meses
Puntos: 1
Respuesta: Como funcionan las clases con mysql?

Ah vale, que el unset queda fuera del bucle While. Me confundí con las sangrías.
  #11 (permalink)  
Antiguo 01/02/2012, 10:13
 
Fecha de Ingreso: julio-2007
Mensajes: 109
Antigüedad: 16 años, 9 meses
Puntos: 1
Respuesta: Como funcionan las clases con mysql?

Hola man, imprime de esta manera,

$db=new mysql();
$db=$db->listar_empresas();

echo $db;

Etiquetas: clases, funcionan, mysql, sql
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 16:37.