Foros del Web » Programando para Internet » PHP »

mostrar datos en un foreach con sesiones

Estas en el tema de mostrar datos en un foreach con sesiones en el foro de PHP en Foros del Web. Hola amigas/os , a ver si me pueden ayudar con esto: tengo que mostrar 3 datos relacionados con una misma sesion, y mostrarlos con un ...
  #1 (permalink)  
Antiguo 11/01/2016, 04:53
 
Fecha de Ingreso: mayo-2012
Mensajes: 760
Antigüedad: 11 años, 10 meses
Puntos: 5
mostrar datos en un foreach con sesiones

Hola amigas/os , a ver si me pueden ayudar con esto:

tengo que mostrar 3 datos relacionados con una misma sesion, y mostrarlos con un

foreach. ya que estos datos de una sesion se meten en un array.

el problema es que cada vez que meto datos con el formulario pues solo me muestra los ultimos datos introducidos.

y lo que necesito es que me muestre un listado de todos los datos introducidos cada vez miren:

Código PHP:
Ver original
  1. $matriz = array();
  2.  
  3. array_push($matriz, array($this->Eon_Ultima_Alcanzada, $this->Etapa_Alcanzada, $this->Puntos_Restantes));
  4.  
  5.         echo "<table border='1'>
  6.  
  7.          <tr>
  8.            <td>Eon Formación</td>
  9.            <td>Estrella natal</td>
  10.            <td>Eon_Ultima_Alcanzada</td>
  11.          </tr>
  12.  
  13.         ";  
  14.  
  15.  
  16.                 //creación de filas de la tabla
  17.                 foreach ( $matriz as $filas ) {
  18.  
  19.                         echo "<tr>\n";
  20.  
  21.                                         //creación de columnas de la tabla
  22.                                         foreach ($filas as $columnas ) {                        
  23.  
  24.                                                 echo "<td>$columnas</td>\n";
  25.                                         }
  26.  
  27.                         echo "</tr>\n";
  28.                 }                                                                
  29.                                                
  30.         echo "</table>";

La sesion que he creado se llama :

$_SESSION["estrellas_natales"]


pero no se como hacerlo no me sale, ni me funciona nada de lo que hago.


gracias de antemano.
  #2 (permalink)  
Antiguo 11/01/2016, 10:04
 
Fecha de Ingreso: mayo-2012
Mensajes: 760
Antigüedad: 11 años, 10 meses
Puntos: 5
Respuesta: mostrar datos en un foreach con sesiones

Bueno timido avance

Ahora me sale una tabla cuya primera fila tiene 3 columnas (y salen sus 3 valores de la fila).
Y la tabla tambien sale la primera columna entera,
pero las dos columnas restantes no salen

Es decir me sale la columna llamada "Nombre", pero no me salen las dos columnas que faltan, llamadas

"Etapa Alcanzada" y "Puntos restantes"

agradeceria cualquier ayuda, de verdad.

me esta llevando de cabeza y no se que mas hacer.

hasta donde he conseguido lo he hecho haciendo esto:

Código PHP:
Ver original
  1. $matriz = array();
  2.  
  3. array_push($matriz, array($this->Nombre, $this->Etapa_Alcanzada, $this->Puntos_Restantes));
  4.  
  5.         echo "<table border='1'>
  6.        
  7.          <tr>
  8.            <td>Nombre</td>
  9.            <td>Etapa Alcanzada</td>
  10.            <td>Puntos restantes</td>
  11.          </tr>        
  12.        
  13.        ";
  14.  
  15.        
  16.                 foreach ($matriz as $filas =>$lol ) {
  17.                    
  18.                     echo "<tr>";
  19.  
  20.                         //creación de columnas de la tabla
  21.                         foreach ($lol as $columnas ) {  
  22.  
  23.                                 echo "<td>$columnas</td>\n";  
  24.                         }
  25.                     echo "</tr>";
  26.                 }        
  27.        
  28.  
  29.        
  30.        
  31.                 foreach($_SESSION["estrellas_natales"] as $Post_Eon_Formacion=>$Post_Nombre)
  32.  
  33.                     {
  34.                         echo "<tr><td>$Post_Nombre</td></tr>";                  
  35.                     }        
  36.                
  37.         echo "</table>";

Como digo es una tabla de 3 columnas y conforme se van insertando datos con el formulario se van añadiendo filas.
  #3 (permalink)  
Antiguo 11/01/2016, 10:10
 
Fecha de Ingreso: enero-2016
Mensajes: 71
Antigüedad: 8 años, 2 meses
Puntos: 14
Respuesta: mostrar datos en un foreach con sesiones

Todo el código de todas las paginas implicadas ...
  #4 (permalink)  
Antiguo 11/01/2016, 11:06
 
Fecha de Ingreso: agosto-2015
Ubicación: El Salvador
Mensajes: 17
Antigüedad: 8 años, 7 meses
Puntos: 0
Respuesta: mostrar datos en un foreach con sesiones

si haces alguna consulta a alguna base de datos muestralas porfavor
  #5 (permalink)  
Antiguo 11/01/2016, 11:10
 
Fecha de Ingreso: mayo-2012
Mensajes: 760
Antigüedad: 11 años, 10 meses
Puntos: 5
Respuesta: mostrar datos en un foreach con sesiones

No, no , no existen inserciones a ninguna base de datos.

los datos de formulario se insertan en el array del codigo


Basicamente lo que intento hacer es un formulario que inserte en un array 3 datos y los muestre en una tabla con 3 columnas.

Y que cada vez que inserte otros nuevos 3 datos con el formulario se inserten en la tabla.

creando asi un lista de datos con una fila y 3 columnas para cada insercion hecha.

pero no me sale ni a tiros.

ayuda por favor. llevo ya 3 dias con esto.

supongo que hay que utilizar sesiones pero es que no doy con la solucion.

Y digo lo que supongo que habra que usar sesiones por que sino solo se mostraria en la tabla, la ultima insercion efectuada que se hiciera y no las anteriores.
  #6 (permalink)  
Antiguo 11/01/2016, 11:17
 
Fecha de Ingreso: agosto-2015
Ubicación: El Salvador
Mensajes: 17
Antigüedad: 8 años, 7 meses
Puntos: 0
Respuesta: mostrar datos en un foreach con sesiones

Cita:
Iniciado por mensajeescrito Ver Mensaje



foreach($_SESSION["estrellas_natales"] as $Post_Eon_Formacion=>$Post_Nombre)

{
echo "<tr><td>$Post_Nombre</td></tr>";
}



[/HIGHLIGHT]
porque no intentas hacer otro foreach con las columnas que te restan solamente que al momento de hacer echo fijate que solo sea en la columna que deseas todo dentro de una misma tabla si te sale con la siguiente columna podras hacerlo con la restante prueba y avisas que pasó
  #7 (permalink)  
Antiguo 11/01/2016, 11:29
 
Fecha de Ingreso: mayo-2012
Mensajes: 760
Antigüedad: 11 años, 10 meses
Puntos: 5
Respuesta: mostrar datos en un foreach con sesiones

programador503, lo intente esta mañana lo del foreach dentro de otro foreach pero no me sale.

no atino ni a tiros. y se que esta casi casi.
  #8 (permalink)  
Antiguo 11/01/2016, 11:38
 
Fecha de Ingreso: agosto-2015
Ubicación: El Salvador
Mensajes: 17
Antigüedad: 8 años, 7 meses
Puntos: 0
Respuesta: mostrar datos en un foreach con sesiones

Cita:
Iniciado por mensajeescrito Ver Mensaje
programador503, lo intente esta mañana lo del foreach dentro de otro foreach pero no me sale.

no atino ni a tiros. y se que esta casi casi.

No, no es un foreach dentro de otro foreach hazlo asi


foreach($variable as $x)
{
echo <tr><td>/* lo que sea */</td></tr>
}
foreach ($variable2 as $y)
{
echo <tr><td>/* lo que sea */</td></tr>
}
foreach ($variable3 as $y)
{
echo <tr><td>/* lo que sea */</td></tr>
}
  #9 (permalink)  
Antiguo 11/01/2016, 12:29
 
Fecha de Ingreso: enero-2016
Mensajes: 71
Antigüedad: 8 años, 2 meses
Puntos: 14
Respuesta: mostrar datos en un foreach con sesiones

En efecto es un foreach dentro de otro ... pero a saber como lo guarda primero.
Código PHP:
Ver original
  1. array_push($matriz, array($this->Nombre, $this->Etapa_Alcanzada, $this->Puntos_Restantes));
  #10 (permalink)  
Antiguo 12/01/2016, 05:31
 
Fecha de Ingreso: mayo-2012
Mensajes: 760
Antigüedad: 11 años, 10 meses
Puntos: 5
Respuesta: mostrar datos en un foreach con sesiones

Despues de mucho pensar y probar cosas creo que se donde podria estar la solucion pero para variar no me sale vereis:

Tengo este codigo, el cual es un array en donde mediante array_push, le meto subarrays dentro asi:

Código PHP:
Ver original
  1. $matriz = array();                                
  2.        
  3.  
  4. array_push($matriz, array($this->Nombre, $this->Etapa_Alcanzada, $this->Puntos_Restantes));


Como se puede ver cada subarray que meto tiene 3 valores.
Pero no se como hacer para que meta mas de un subarray con 3 valores cada uno.

Solo me coge el ultimo subarray( con 3 valores) que meto con el formulario

imagino que es mediante algun while y usando sesion pero no consigo que me funcione

para que diga mientras existan subsarrays, insertarlos en array madre llamada $matriz,

la sesion que estoy usando para otras cosas en la misma pagina es:

Código PHP:
Ver original
  1. $_SESSION["estrellas_natales"]

pero no se como implementarlo, no se como hacer que cada vez que inserte datos con el formulario se acumulen los subarray dentro del array madre mediante array_push.

ayudenme porfavor.

un saludo.

Última edición por mensajeescrito; 12/01/2016 a las 05:37
  #11 (permalink)  
Antiguo 12/01/2016, 05:59
 
Fecha de Ingreso: enero-2016
Mensajes: 71
Antigüedad: 8 años, 2 meses
Puntos: 14
Respuesta: mostrar datos en un foreach con sesiones

Como no nos dices tu código de todas las paginas para saber como guardas los datos te paso uno de ejemplo. Copialo en una pagina limpia y pruebalo ...

Código PHP:
<?php
session_start
();

$matriz = isset($_SESSION['estrellas_natales']) ? $_SESSION['estrellas_natales'] : [];

if (isset(
$_POST['submit'])) {
    
// array_push($matriz, array($this->Eon_Ultima_Alcanzada, $this->Etapa_Alcanzada, $this->Puntos_Restantes));
    
array_push($matriz, array($_POST['ultima_alcanzada'], $_POST['etapa_alcanzada'], $_POST['puntos_restantes']));
    
$_SESSION['estrellas_natales'] = $matriz;
}

// algun formulario tonto
echo <<<FORM
    <form action="" method="post">
        <p>Ultima alcanzada: <input type="text" name="ultima_alcanzada"></p>
        <p>Etapa alcanzada: <input type="text" name="etapa_alcanzada"></p>
        <p>Puntos restantes: <input type="text" name="puntos_restantes"></p>
        <p><input type="submit" name="submit" value="Añadir" /></p>
    </form>
FORM;

echo 
"<table border='1'>

          <tr>
            <td>Eon Formación</td>
            <td>Estrella natal</td>
            <td>Eon_Ultima_Alcanzada</td>
          </tr>

         "
;

//creación de filas de la tabla
foreach ( $matriz as $filas ) {
    echo 
"<tr>\n";
    
//creación de columnas de la tabla
    
foreach ($filas as $columnas ) {
        echo 
"<td>$columnas</td>\n";
    }
    echo 
"</tr>\n";
}

echo 
"</table>";
Un saludo,

Última edición por x_atrix; 12/01/2016 a las 07:28
  #12 (permalink)  
Antiguo 12/01/2016, 09:17
 
Fecha de Ingreso: mayo-2012
Mensajes: 760
Antigüedad: 11 años, 10 meses
Puntos: 5
Respuesta: mostrar datos en un foreach con sesiones

x_atrix, funciona perfecto!!!

Con el codigo que me has pasado, lo he implementado y ajustado parametros y funciona por fin!!!

muchas gracias fenomeno.

Pero una cosa:
tu codigo como digo funciona muy bien pero
¿POr que me dice en tu codigo Invalid argument supplied for foreach()?

justo en la linea donde dice: foreach ($filas as $columnas ) {
  #13 (permalink)  
Antiguo 12/01/2016, 09:26
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 15 años, 11 meses
Puntos: 2534
Respuesta: mostrar datos en un foreach con sesiones

Cita:
Iniciado por mensajeescrito Ver Mensaje
¿POr que me dice en tu codigo Invalid argument supplied for foreach()?

justo en la linea donde dice: foreach ($filas as $columnas ) {
Porque probablemente $filas no sea un array.

Para poder anidar arrays básicamente necesitas esta estructura:
Código PHP:
Ver original
  1. $data = array(
  2.   array('foo'),
  3.   array('bar')
  4. );
  5.  
  6. foreach ($data as $subdata) {
  7.   foreach ($subdata as $value) {
  8.     echo $value;
  9.   }
  10. }
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #14 (permalink)  
Antiguo 12/01/2016, 11:34
 
Fecha de Ingreso: mayo-2012
Mensajes: 760
Antigüedad: 11 años, 10 meses
Puntos: 5
Respuesta: mostrar datos en un foreach con sesiones

No, perdon no es fallo del codigo del compañero que me ha ayudado, es culpa de mi codigo, el que hace que salga ese mensaje.

Pero lo raro es que me sale el mensaje pero me muestra bien los datos,
este es mi codigo implementado con la mejora del compañero:

Código PHP:
Ver original
  1. $matriz = isset($_SESSION['estrellas_natales']) ? $matriz = $_SESSION['estrellas_natales'] : [];                                
  2.                                                                
  3.  
  4. if (isset($_POST['submit_civilizacion']))
  5.    
  6.     {
  7.         array_push($matriz, array($this->Nombre, $this->Etapa_Alcanzada, $this->Puntos_Restantes));  
  8.        
  9.         $_SESSION['estrellas_natales'] = $matriz;      
  10.     }                                
  11.  
  12.                              
  13.         echo "<table border='1'>
  14.        
  15.          <tr>
  16.            <td>Nombre</td>
  17.            <td>Etapa Alcanzada</td>
  18.            <td>Puntos restantes</td>
  19.          </tr>        
  20.        
  21.        ";
  22.  
  23.        
  24.                 foreach ($matriz as $filas) {
  25.                    
  26.                     echo "<tr>";
  27.  
  28.                         //creación de columnas de la tabla
  29.                         foreach ($filas as $columnas) {  
  30.  
  31.                                 echo "<td>$columnas</td>\n";  
  32.                         }
  33.                     echo "</tr>";
  34.                 }        
  35.        
  36.         echo "</table>";


pero no entiendo por que no funciona, si , entiendo lo que dices papetrueke


segun me comentas con tu ejemplo papetrueke deberia hacer:

Código PHP:
Ver original
  1. array_push($matriz, array($this->Nombre, $this->Etapa_Alcanzada, $this->Puntos_Restantes));

pero me sale entonces este error:

Array to string conversion in line 300
  #15 (permalink)  
Antiguo 12/01/2016, 11:38
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 15 años, 11 meses
Puntos: 2534
Respuesta: mostrar datos en un foreach con sesiones

¿Podrías ejecutar lo siguiente antes del foreach()?

Código PHP:
Ver original
  1. var_dump($matriz);

¿Qué muestra?
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #16 (permalink)  
Antiguo 12/01/2016, 11:40
 
Fecha de Ingreso: mayo-2012
Mensajes: 760
Antigüedad: 11 años, 10 meses
Puntos: 5
Respuesta: mostrar datos en un foreach con sesiones

sale esto por que estoy metiendo datos:

array(8) { [100]=> string(6) "tierra" [200]=> string(5) "marte" [300]=> string(7) "jupiter" [400]=> string(9) "andromeda" [401]=> array(3) { [0]=> string(5) "marte" [1]=> string(2) "c7" [2]=> string(1) "4" } [402]=> array(3) { [0]=> string(7) "jupiter" [1]=> string(2) "c3" [2]=> string(1) "7" } [403]=> array(3) { [0]=> array(1) { [0]=> string(7) "jupiter" } [1]=> array(1) { [0]=> string(2) "c3" } [2]=> array(1) { [0]=> string(1) "7" } } [404]=> array(3) { [0]=> string(7) "jupiter" [1]=> string(2) "c3" [2]=> string(1) "7" } }



y esto al vaciar todo y hacer una sola insercion con el formulario:

array(2) { [100]=> string(6) "tierra" [101]=> array(3) { [0]=> string(6) "tierra" [1]=> string(2) "c8" [2]=> string(1) "5" } }
Warning: Invalid argument supplied for foreach() in /opt/lampp/htdocs/mis_trabajos/Tarea_5/index.php on line 231
  #17 (permalink)  
Antiguo 12/01/2016, 11:51
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 15 años, 11 meses
Puntos: 2534
Respuesta: mostrar datos en un foreach con sesiones

Está mal tu arreglo, si observas los primeros items son strings y no arrays.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #18 (permalink)  
Antiguo 13/01/2016, 06:45
 
Fecha de Ingreso: mayo-2012
Mensajes: 760
Antigüedad: 11 años, 10 meses
Puntos: 5
Respuesta: mostrar datos en un foreach con sesiones

Buenas pateketrueke, no creo que sea bueno hacer caso lo que puse de los resultados del array que me has pedido, ya que son el fruto de insertar bien y de insertar mal los datos mediante el formulario.

El mensaje del editor dice que en la linea que sale el fallo es lo siguiente:

"demasiados bloques anidados en declaración de la función
es una buena práctica para introducir una nueva función en lugar de utilizar más bloques anidados"

Pero aunque lo entiendo, no se que hacer para resolverlo te lo aseguro.

Por que si me muestra los datos bien en la tabla resultante pero me sale acompañado de este mensaje en el navegador:
Invalid argument supplied for foreach() en la linea:

"foreach ($filas as $columnas) { "

:-/

Etiquetas: foreach, formulario, sesiones, 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 14:13.