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

Duda para mostrar información (Clases)

Estas en el tema de Duda para mostrar información (Clases) en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Buenas Tardes. Soy nuevo en POO y estaba realizando unos ejercicios , con clases. El problema es que no puedo mostrar todos los datos de ...
  #1 (permalink)  
Antiguo 31/07/2011, 10:24
 
Fecha de Ingreso: agosto-2010
Mensajes: 31
Antigüedad: 13 años, 8 meses
Puntos: 0
Duda para mostrar información (Clases)

Buenas Tardes.

Soy nuevo en POO y estaba realizando unos ejercicios , con clases. El problema es que no puedo mostrar todos los datos de la consulta, o sea listar toda la información, generalmente lo realizo con:
Código:
  <? while ($registros=mysql_fetch_array($resultado)){} ?>
pero como estoy realizando la consulta desde la clase no se como hacerlo.

En estas tablas quiero listar toda la información es siguiente:

Código:
  <tr>
     <td><? echo $mostrar_usuarios->id ?></td>
    <td><? echo $mostrar_usuarios->nombre ?></td>
    <td><? echo $mostrar_usuarios->perfil ?></td>
    <td><a href="registro_clases.php?modificar_id=<? echo $mostrar_usuarios->id ?>">MODIFICAR</a></td>
  </tr>
Asi instancio a la clase:
Código:
 if (isset($_REQUEST["usuarios"]))
  {
	$mostrar_usuarios=new usuarios;
	$mostrar_usuarios->mostrar_usuarios();
	 
	 }

Mi clase es esta:

Código:
<? require_once("class.coneccion.php");
?>
<?
class usuarios
{
	var $id;
	var $nombre;
	var $password;
	var $perfil;
		
			
	function mostrar_usuarios()
		{
		$consulta="SELECT * FROM USUARIOS";
		$realizar_consulta=mysql_query($consulta,coneccion::Conectarse());
		$registros=mysql_fetch_array($realizar_consulta);
		$this->id=$registros["Id"];
		$this->nombre=$registros["NOMBRE"];
		$this->perfil=$registros["PERFIL"];
				
		}

}



 ?>
Además me gustaría saber si lo que estoy realizando esta bien hecho, o hay que cambiar algo , o alguna recomendación.

Muchas Gracias
  #2 (permalink)  
Antiguo 31/07/2011, 10:38
Avatar de Patriarka  
Fecha de Ingreso: enero-2011
Ubicación: Moreno, Buenos Aires, Argentina
Mensajes: 2.851
Antigüedad: 13 años, 3 meses
Puntos: 288
Respuesta: Duda para mostrar información (Clases)

te falta el return
  #3 (permalink)  
Antiguo 31/07/2011, 11:12
 
Fecha de Ingreso: agosto-2010
Mensajes: 31
Antigüedad: 13 años, 8 meses
Puntos: 0
Respuesta: Duda para mostrar información (Clases)

Pero , que retorno?
Código:
return $registros;
y luego para que se me listen todos los datos en la consulta , como quedaria?

Disculpa , mi insistencia , pero es q estoy :S.

salu2
  #4 (permalink)  
Antiguo 31/07/2011, 12:57
Avatar de Patriarka  
Fecha de Ingreso: enero-2011
Ubicación: Moreno, Buenos Aires, Argentina
Mensajes: 2.851
Antigüedad: 13 años, 3 meses
Puntos: 288
Respuesta: Duda para mostrar información (Clases)

para empezar yo haria esto (que no es del todo POO)
Código PHP:
Ver original
  1. <?php
  2. class usuarios
  3. {
  4.     var $id;
  5.     var $nombre;
  6.     var $password;
  7.     var $perfil;
  8.        
  9.            
  10.     function mostrar_usuarios()
  11.         {
  12.         $consulta="SELECT * FROM USUARIOS";
  13.         $realizar_consulta=mysql_query($consulta,coneccion::Conectarse());
  14.         $registros=array();
  15.         while($registros=mysql_fetch_object($realizar_consulta)){
  16.                   $registros['id']=$registros->Id;
  17.           $registros['nombre']=$registros->NOMBRE;
  18.           $registros['perfil']=$registros->PERFIL;
  19.                 }
  20.         return $registros;      // ademas te falto cargar el objeto (bueno aca es un array)
  21.         }
  22.  
  23. }
  24. ?>

y luego los recorres facil:

foreach($registros as $campo)
echo $campo['id']............
  #5 (permalink)  
Antiguo 31/07/2011, 19:51
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: Duda para mostrar información (Clases)

Trata de no usar tags cortos <?, mejor usa <?php y no uses var que nos estamos quedando en el pasado. Usa public private o protected según el caso.

http://co.php.net/manual/es/language.oop5.visibility.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
  #6 (permalink)  
Antiguo 31/07/2011, 20:57
Avatar de HackmanC  
Fecha de Ingreso: enero-2008
Ubicación: Guatemala
Mensajes: 1.817
Antigüedad: 16 años, 3 meses
Puntos: 260
Sonrisa Respuesta: Duda para mostrar información (Clases)

Hola,

Cita:
Iniciado por Patriarka Ver Mensaje
Código PHP:
Ver original
  1. <?php
  2.         $registros=array();
  3.         while($registros=mysql_fetch_object($realizar_consulta)){
  4.                   $registros['id']=$registros->Id;
  5.           $registros['nombre']=$registros->NOMBRE;
  6.           $registros['perfil']=$registros->PERFIL;
  7.                 }
No estoy completamente seguro, pero creo que solamente vas a tener el último registro en $registros, porque se sobreescriben. Cuando regrese la función aunque existan muchos registros en la base de datos solamente vas a tener el último obtenido. Porque $registros es un array, no un array de arrays.


Normalmente en la mayoría de lenguajes se utilizan objetos adicionales para transferir los datos, principalmente para encapsular la lógica de un registro como un objeto, pero en PHP, que no es un lenguaje 'strong type', y si ya están en un arreglo u objeto creo que no es necesario transferirlo a ningún lado sino vas a realizar cálculos o lógica adicional en el objeto.

Simplemente podría ser algo así:

Código PHP:
class usuarios {

  private static 
$strSQL "SELECT * FROM USUARIOS";
  private 
$realizar_consulta;
  
  public function 
__construct() {
    
$realizar_consulta mysql_query(self::$strSQLconeccion::Conectarse());
  }

  public function 
fetch_array() {
    return 
mysql_fetch_array($realizar_consulta);
  }

}

$u = new usuarios();
while (
$r $u->fetch_array()) {
  echo 
$r['id'];

Y si te parecen mas lo objetos, algo así:

Código PHP:
...
  public function 
fetch_object() {
    return 
mysql_fetch_object($realizar_consulta);
  }
...
while (
$r $u->fetch_object()) {
  echo 
$r->id;

Saludos,
  #7 (permalink)  
Antiguo 01/08/2011, 07:08
Avatar de Patriarka  
Fecha de Ingreso: enero-2011
Ubicación: Moreno, Buenos Aires, Argentina
Mensajes: 2.851
Antigüedad: 13 años, 3 meses
Puntos: 288
Respuesta: Duda para mostrar información (Clases)

Hola hack mac C: tenes razon pero falto un detalle:
Código PHP:
Ver original
  1. <?php
  2.     class usuarios
  3.     {
  4.         protected $id;
  5.         protected $nombre;
  6.         protected $password;
  7.         protected $perfil;
  8.            
  9.                
  10.         function mostrar_usuarios()
  11.             {
  12.             $consulta="SELECT * FROM USUARIOS";
  13.             $realizar_consulta=mysql_query($consulta,coneccion::Conectarse());
  14.             $registros=array();
  15.             while($registros=mysql_fetch_object($realizar_consulta)){
  16.                       $registros['id'][]=$registros->Id;
  17.               $registros['nombre'][]=$registros->NOMBRE;
  18.               $registros['perfil'][]=$registros->PERFIL;
  19.                     }
  20.             return $registros;      // ademas te falto cargar el objeto (bueno aca es un array)
  21.             }
  22.      
  23.     }
  24.     ?>

Etiquetas: php, registro, sql, tabla, 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:59.