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

Error intentando mostrar datos de una tabla desde una clase

Estas en el tema de Error intentando mostrar datos de una tabla desde una clase en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Hola. Estoy haciendo un curso de php5 con algunos ejercicios de practicas y justo ahora estoy haciendo algo básico con clases donde tengo un error ...
  #1 (permalink)  
Antiguo 18/07/2012, 07:23
Avatar de kahlito
Colaborador
 
Fecha de Ingreso: marzo-2003
Ubicación: En el Estrecho y el mar
Mensajes: 2.936
Antigüedad: 21 años, 1 mes
Puntos: 65
Error intentando mostrar datos de una tabla desde una clase

Hola.

Estoy haciendo un curso de php5 con algunos ejercicios de practicas y justo ahora estoy haciendo algo básico con clases donde tengo un error inesperado.

Primero tengo el archivo class.php para hacer la conexión a la base de datos.

Código PHP:
<?php
class ConectarBd
{
     public static function 
conectar()
    {
         
$con=mysql_connect("localhost""root""vertrigo");
         if(!
$con)
        {
             echo 
"Error conectando a la base de datos";
             exit;
        }
        
mysql_query("SET NAMES 'utf8'");
        
mysql_select_db("vercar");
        return 
$con;
       }
}
?>
Luego lo llamo desde el archivo class-eventos.php que es donde preparo la consulta.
Código PHP:
<?php
require_once("class.php");
class 
Eventos
{
     private 
$eventos;

     public function 
_contruct()
     {
          
$this->eventos=array();
     }

     public function 
get_eventos()
     {
          
$sql="Select * from eventos";
          
$res=mysql_query($sqlConectarBd::conectar());
          while(
$reg=mysql_fetch_assoc($res))
         {
              
$this->eventos[]=$reg;
         }
         return 
$this->eventos;
     }
}
?>
Y luego en el archivo tarea_modulo_4.php trato de mostrarlo así:

Código PHP:
<?php
require_once("class/class-eventos.php");
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Curso Php 5 Cesar Cancino</title>
</head>
<body>

<?php
$obj_e 
= new Eventos();
$ver_eventos $obj_e->get_eventos();
?>
Y solo con esa prueba me da un error que no descubro:

Cita:
Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given in C:\VertrigoServ\www\cursophp5cc\modulo_4\tarea_mod ulo_4\class\class-eventos.php on line 16
He probado mostrando como ejemplo otro con una tabla igual llamada personas y me sale perfecto, sin embargo en este por más cambios que hago siempre me da error, ¿que estoy haciendo mal?

Gracias un saludo.
  #2 (permalink)  
Antiguo 18/07/2012, 07:41
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 3 meses
Puntos: 845
Respuesta: Error intentando mostrar datos de una tabla desde una clase

Deberías leer la documentacion del las funciones que estas utilizando, mysql_query te esta devolviendo false porque hay algún error, de todas formas te sugiero(como lo hace la doc por fin, vamos avanzando...) que utilices PDO.

Saludos.
__________________
http://es.phptherightway.com/
thats us riders :)
  #3 (permalink)  
Antiguo 18/07/2012, 08:39
Avatar de kahlito
Colaborador
 
Fecha de Ingreso: marzo-2003
Ubicación: En el Estrecho y el mar
Mensajes: 2.936
Antigüedad: 21 años, 1 mes
Puntos: 65
Respuesta: Error intentando mostrar datos de una tabla desde una clase

Hola masterpuppet gracias por tu ayuda.

La verdad es que no lo entiendo, por ejemplo en este otro archivo que está todo practicamente igual todo va bien:

class-personas.php

Código PHP:
<?php
require_once("class.php");
class 
Personas
{
    private 
$per;
    
    public function 
__construct()
    {
        
$this->per=array();
    }
    public function 
getPersonas()
    {
        
$sql="select * from personas";
        
$res=mysql_query($sql,Conectar::con());    
        while (
$reg=mysql_fetch_assoc($res))
        {
            
$this->per[]=$reg;
        }
            return 
$this->per;
    }
}
?>
Y donde lo muestro por ejemplo solo-personas.php:

Código PHP:
<?php
require_once("class/class-personas.php");
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Curso Php 5 Cesar Cancino</title>
</head>
<body>
<?php
$obj
= new Personas();
$datos=$obj->getPersonas();
//print_r($datos);*/
for ($i=0;$i sizeof($datos);$i++)
{
        echo 
$datos[$i]["nombre"]."---- ".$datos[$i]["correo"]." --- ".$datos[$i]["descripcion"]." --".$datos[$i]["fecha"];
    echo 
"<br>";
}
?>
</body>
</html>
Y va todo correctamente, la única diferencia con el anterior es que llamo a otra base de datos y a otra tabla, pero lo demás es todo lo mismo y en este va todo bien y en el otro mal.

Sigo sin entender el problema.
  #4 (permalink)  
Antiguo 18/07/2012, 08:51
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 3 meses
Puntos: 845
Respuesta: Error intentando mostrar datos de una tabla desde una clase

Debugea para ver el error,

Código PHP:
Ver original
  1. ...
  2. if (!$res) {
  3.     throw new RuntimeException(mysql_error());
  4. }
  5. ...
__________________
http://es.phptherightway.com/
thats us riders :)
  #5 (permalink)  
Antiguo 26/07/2012, 13:57
Avatar de kahlito
Colaborador
 
Fecha de Ingreso: marzo-2003
Ubicación: En el Estrecho y el mar
Mensajes: 2.936
Antigüedad: 21 años, 1 mes
Puntos: 65
Respuesta: Error intentando mostrar datos de una tabla desde una clase

Hola de nuevo.

Por fin he descubierto el error, el nombre de la base de datos estaba mal , vaya error más tonto.

Código PHP:
public function get_eventos()
    {
        
$sql="Select * from eventos";
        
$res=mysql_query($sqlConectarBd::conectar());
        if (!
$res)
            {
                    throw new 
RuntimeException(mysql_error());
            } 
También he probado de esta forma, no se cual será mejor:

Código PHP:
if(!$res)
            {
                throw new 
Exception ("Error"mysql_error());            
            } 
Gracias de nuevo masterpuppet

Etiquetas: clase, class, php, tabla
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 19:30.