Ver Mensaje Individual
  #10 (permalink)  
Antiguo 12/06/2014, 18:59
Avatar de Italico76
Italico76
 
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
Respuesta: Imprimir resultados en una tabla

Es hora de aclarar porque no te funciona el ejemplo previo: el ejemplo que te dio @Alexis88 es la forma correcta cuando usas un metodo para obtener 1 registro a la vez, el cual se carga en una variable $row y puede contener el registro (evaluado como TRUE por el while) o el valor booleano FALSE cuando se acabaron los registros extraidos de la consulta.

Asi... cuando tienes un fetchAll() la cosa cambia porque ya no tendrias un arreglo de campos sino un arreglo de arreglos de campos

Cita:
get() --> un registro = un array de campos
fetchAll() --> un conjunto de registros = un array de arrays de campos

EJEMPLO funcional COMPLETO (con datos "simulados")

Código PHP:
Ver original
  1. <?php
  2. // Simulo accion de base de datos
  3.  
  4. class Contactos
  5. {
  6. /*
  7.     Datos simulados:
  8.    
  9.     codigo  email                   nombre  telefono
  10.     5       [email protected]     juan    4325543
  11.     99      [email protected]     mery    430000
  12. */
  13.     private $_resultados =
  14.    
  15.     array (array('codigo'=>5,'nombre'=>'juan','email'=>'[email protected]','telefono'=>4325543),
  16.     array('codigo'=>99,'nombre'=>'mery','email'=>'[email protected]','telefono'=>430000));
  17.  
  18.     public function obtenerContactos()
  19.     {
  20.         return $this->_resultados;
  21.     }
  22.  
  23.     public function getContacto()
  24.     {
  25.         if ($current = current($this->_resultados))
  26.         {
  27.             next($this->_resultados);
  28.             return $current;
  29.         }
  30.         return false;
  31.        
  32.     }
  33. }
  34.  
  35. $cContacto = new Contactos;
  36.  
  37. // Desde aca lo que posteaste:
  38.    
  39. $registros = $cContacto->obtenerContactos();
  40.  
  41. echo "
  42.        <table border=\"1\">
  43.            <tr>
  44.                <th>codigo</th>
  45.                <th>email</th>
  46.                <th>nombre</th>
  47.                <th>telefono</th>
  48.            </tr>";    
  49. foreach ($registros as $res)
  50. {
  51.     echo "<tr>          
  52.             <td>{$res["codigo"]}</td>
  53.            <td>{$res["email"]}</td>
  54.            <td>{$res["nombre"]}</td>
  55.             <td>{$res["telefono"]}</td>
  56.          </tr>";
  57.  
  58. }
  59. echo "</table>";

RESULTADO:

Código PHP:
Ver original
  1. /*
  2.     codigo  email                   nombre  telefono
  3.     5       [email protected]     juan    4325543
  4.     99      [email protected]     mery    430000
  5. */


EJEMPLO funcional #2, ahora uso getContacto()

La diferencia es que el get() me trae SOLO UN REGISTRO o FALSE cuando no hay

Código PHP:
Ver original
  1. <?php
  2. // Simulo accion de base de datos
  3.  
  4. class Contactos
  5. {
  6. /*
  7.     Datos simulados:
  8.    
  9.     codigo  email                   nombre  telefono
  10.     5       [email protected]     juan    4325543
  11.     99      [email protected]     mery    430000
  12. */
  13.     private $_resultados =
  14.    
  15.     array (array('codigo'=>5,'nombre'=>'juan','email'=>'[email protected]','telefono'=>4325543),
  16.     array('codigo'=>99,'nombre'=>'mery','email'=>'[email protected]','telefono'=>430000));
  17.  
  18.     public function obtenerContactos()
  19.     {
  20.         return $this->_resultados;
  21.     }
  22.    
  23.     public function getContacto()
  24.     {
  25.         if ($current = current($this->_resultados))
  26.         {
  27.             next($this->_resultados);
  28.             return $current;
  29.         }
  30.         return false;
  31.        
  32.     }
  33.    
  34. }
  35.  
  36. $cContacto = new Contactos;
  37.  
  38. // Simulo fetchAll()   
  39. $registros = $cContacto->obtenerContactos();
  40.  
  41. echo "
  42.        <table border=\"1\">
  43.            <tr>
  44.                <th>codigo</th>
  45.                <th>email</th>
  46.                <th>nombre</th>
  47.                <th>telefono</th>
  48.            </tr>";    
  49.            
  50. while ($res = $cContacto->getContacto())
  51. {
  52.     echo "<tr>          
  53.             <td>{$res["codigo"]}</td>
  54.            <td>{$res["email"]}</td>
  55.            <td>{$res["nombre"]}</td>
  56.             <td>{$res["telefono"]}</td>
  57.          </tr>";
  58.  
  59. }
  60. echo "</table>";

Y produce el MISMO RESULTADO EXITOSO:

Código PHP:
Ver original
  1. /*
  2.     codigo  email                   nombre  telefono
  3.     5       [email protected]     juan    4325543
  4.     99      [email protected]     mery    430000
  5. */
__________________
Salu2!

Última edición por Italico76; 12/06/2014 a las 19:21