Foros del Web » Programando para Internet » PHP »

Imprimir resultados en una tabla

Estas en el tema de Imprimir resultados en una tabla en el foro de PHP en Foros del Web. Hola, al imprimir el resultado de mi consulta con print_r me sale lo siguiente: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código PHP: Ver original Array (     [ ...
  #1 (permalink)  
Antiguo 11/06/2014, 23:06
 
Fecha de Ingreso: mayo-2003
Ubicación: Lima
Mensajes: 967
Antigüedad: 21 años, 6 meses
Puntos: 8
Imprimir resultados en una tabla

Hola, al imprimir el resultado de mi consulta con print_r me sale lo siguiente:
Código PHP:
Ver original
  1. (
  2.     [0] => Array
  3.         (
  4.             [codigo] => 1
  5.             [email] => umbreumbre@hotmail.com
  6.             [nombre] => Juan Perez
  7.             [telefono] =>
  8.         )
  9.  
  10.     [1] => Array
  11.         (
  12.             [codigo] => 2
  13.             [email] => lorena@hotmail.com
  14.             [nombre] => Lorena San Miguel
  15.             [telefono] =>
  16.         )
  17.  
  18. )
Como puedo hacer para mostrar los resultados en una tabla?

Espero que me puedan ayudar.
__________________
El aprendiz.
  #2 (permalink)  
Antiguo 11/06/2014, 23:15
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 13 años
Puntos: 977
Respuesta: Imprimir resultados en una tabla

Con un bucle.

Código PHP:
Ver original
  1. $consulta = mysqli_query($conexion, 'SELECT * FROM tabla');
  2. if (mysqli_num_rows($consulta)){ //Compruebo que el resultado devuelva 1 o más registros
  3.     while ($row = mysqli_fetch_array($consulta)){
  4.         echo $row['nombre_campo1'];
  5.         echo $row['nombre_campo2'];
  6.         echo $row['nombre_campo3'];
  7.         //Y todos los campos que desees mostrar
  8.     }
  9. }

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #3 (permalink)  
Antiguo 12/06/2014, 06:12
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años, 7 meses
Puntos: 292
Respuesta: Imprimir resultados en una tabla

Quizas te refieras a generar una tabla HTML ? basado en el ejemplo de Alexis88 ....

Código PHP:
Ver original
  1. <?php
  2.  
  3. $consulta = mysqli_query($conexion, 'SELECT * FROM tabla');
  4.  
  5. //Compruebo que el resultado devuelva 1 o más registros
  6. if (mysqli_num_rows($consulta))
  7. {
  8.  
  9. echo "
  10.         <table>
  11.             <tr>
  12.                 <th>codigo</th>
  13.                 <th>email</th>
  14.                 <th>nombre</th>
  15.                 <th>telefono</th>
  16.             </tr>";
  17.         while ($row = mysqli_fetch_array($consulta))
  18.         {      
  19.             echo "
  20.             <tr>
  21.                 <td>{$row['codigo']}</td>
  22.                 <td>{$row['email']}</td>
  23.                 <td>{$row['nombre']}</td>
  24.                 <td>{$row['telefono']}</td>
  25.             </tr>";
  26.         }
  27.     echo '</table>';
  28. }
__________________
Salu2!

Última edición por Italico76; 12/06/2014 a las 06:24
  #4 (permalink)  
Antiguo 12/06/2014, 16:04
 
Fecha de Ingreso: mayo-2003
Ubicación: Lima
Mensajes: 967
Antigüedad: 21 años, 6 meses
Puntos: 8
Respuesta: Imprimir resultados en una tabla

Haciendolo como ustedes lo ponen si lo se hacer, la cosa es que hice una clase para obtener los datos de una consulta y demas, entonces la funnción de llama: obtenerContactos y me devuelve el array con los registros, entonces en mi página tengo algo como:
Código PHP:
Ver original
  1. $result = $clase->obtenerContactos();
donde $result es un array con todos los registros, entonces, si ya tengo el array con los registros, desde este punto, como lo muestro en una tabla?

Saludos,
__________________
El aprendiz.
  #5 (permalink)  
Antiguo 12/06/2014, 16:25
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 13 años
Puntos: 977
Respuesta: Imprimir resultados en una tabla

Da igual si el array con los datos lo obtienes utilizando una clase o con las funciones de MySQL directamente, lo importante es tener el array con los datos para poder iterarlo.

Código PHP:
Ver original
  1. //Válido
  2. while ($result = $clase->obtenerContactos()){
  3.     echo $result['campo1'];
  4. }
  5.  
  6. //Válido
  7. while ($row = mysqli_fetch_array($query)){
  8.     echo $row['campo1'];
  9. }

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #6 (permalink)  
Antiguo 12/06/2014, 16:33
 
Fecha de Ingreso: mayo-2003
Ubicación: Lima
Mensajes: 967
Antigüedad: 21 años, 6 meses
Puntos: 8
Respuesta: Imprimir resultados en una tabla

Intenté hacer la primera que pusiste pero me sale error, hay alguna diferencia si los datos se obtienen con PDO?, la línea que obtiene los datos es esta:
Código PHP:
Ver original
  1. $resultado = $statement->fetchAll(PDO::FETCH_ASSOC);
Estos son los errores que me sale:
Notice: Undefined index: email in D:\xampp\htdocs\simple_contacto\index.php on line 71
Notice: Undefined index: nombre in D:\xampp\htdocs\simple_contacto\index.php on line 72
__________________
El aprendiz.

Última edición por juandedios; 12/06/2014 a las 16:39
  #7 (permalink)  
Antiguo 12/06/2014, 16:46
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años, 7 meses
Puntos: 292
Respuesta: Imprimir resultados en una tabla

Algo tan simple no deberia darte error excepto que estes accediendo a la variable equivocada o los campos no se llamen exactamente asi.... digamos es algo simple:

Código PHP:
Ver original
  1. // serria resultados y no resultado..... porque son 1 o varios registros (fetchAll)
  2. $resultados = $statement->fetchAll(PDO::FETCH_ASSOC);
  3.  
  4. foreach ($resultados as $row)
  5.     echo "{$row['nombre']}, {$row['email']} <br/>";

Ante cualquier duda:

Código PHP:
Ver original
  1. var_dump($resultados);
__________________
Salu2!
  #8 (permalink)  
Antiguo 12/06/2014, 18:23
 
Fecha de Ingreso: mayo-2003
Ubicación: Lima
Mensajes: 967
Antigüedad: 21 años, 6 meses
Puntos: 8
Respuesta: Imprimir resultados en una tabla

Lo mismo, esto es lo que hago:
Código PHP:
Ver original
  1. while ($res = $cContacto->obtenerContactos()) {
  2.     echo '<tr>
  3.             <td></td>
  4.             <td>' . $res["email"] . '</td>
  5.             <td>' . $res["nombre"] . '</td>
  6.           </tr>';
  7. }
hice el var_dump($res) y los nombres de los campos son los mismos.
__________________
El aprendiz.
  #9 (permalink)  
Antiguo 12/06/2014, 18:48
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años, 7 meses
Puntos: 292
Respuesta: Imprimir resultados en una tabla

Asi no es... mira como si funciona usando while()

Código PHP:
Ver original
  1. $registros = $cContacto->obtenerContactos();
  2.  
  3. while ($registros = current($registros)) {
  4.     echo '<tr>
  5.            <td></td>
  6.            <td>' . $res["email"] . '</td>
  7.            <td>' . $res["nombre"] . '</td>
  8.          </tr>';
  9.     next($registros);        
  10. }


Pero mas facil con foreach() asi...

Código PHP:
Ver original
  1. $registros = $cContacto->obtenerContactos();
  2.    
  3. foreach ($registros as $res)
  4. {
  5.     echo "<tr>
  6.            <td></td>
  7.            <td>{$res["email"]}</td>
  8.            <td>{$res["nombre"]}</td>
  9.          </tr>";
  10.  
  11. }

Si quieres ver porque no te funcionaba....... prueba esto que "emula" tus datos....

Código PHP:
Ver original
  1. <?php
  2. // Simulo accion de base de datos << ATENCION : no va a funcionar >>
  3.  
  4. class Contactos
  5. {
  6.     private $_resultados = array (array('nombre'=>'juan','email'=>'[email protected]'),array('nombre'=>'mery','email'=>'[email protected]'));
  7.  
  8.     public function obtenerContactos()
  9.     {
  10.         return $this->_resultados;
  11.     }
  12. }
  13.  
  14. $cContacto = new Contactos;
  15.  
  16. // Desde aca lo que posteaste:
  17.    
  18. while ($res = $cContacto->obtenerContactos()) {
  19.     echo '<tr>
  20.            <td></td>
  21.            <td>' . $res["email"] . '</td>
  22.            <td>' . $res["nombre"] . '</td>
  23.          </tr>';
  24. }

Si en cambio cambias el codigo desde la leyenda "Desde aca lo que posteaste" veras que SI te funciona
__________________
Salu2!

Última edición por Italico76; 12/06/2014 a las 18:54
  #10 (permalink)  
Antiguo 12/06/2014, 18:59
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años, 7 meses
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
  #11 (permalink)  
Antiguo 12/06/2014, 19:22
 
Fecha de Ingreso: mayo-2003
Ubicación: Lima
Mensajes: 967
Antigüedad: 21 años, 6 meses
Puntos: 8
Respuesta: Imprimir resultados en una tabla

Muchísimas gracias, ahora si salió.
__________________
El aprendiz.

Etiquetas: resultados, 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 21:59.