Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Pasar fila de tabla html a otro archivo php

Estas en el tema de Pasar fila de tabla html a otro archivo php en el foro de PHP en Foros del Web. Resulta que tengo una tabla creada en funcion a una consulta a una base de datos. De esa tabla lo que me interesa es tomar ...
  #1 (permalink)  
Antiguo 13/04/2014, 15:30
 
Fecha de Ingreso: abril-2014
Mensajes: 13
Antigüedad: 9 años, 11 meses
Puntos: 0
Pasar fila de tabla html a otro archivo php

Resulta que tengo una tabla creada en funcion a una consulta a una base de datos. De esa tabla lo que me interesa es tomar los datos de una única fila sin tener que llevarme toda la tabla.
Uso un radiobutton para indicar la fila que voy a modificar.
Hasta ahora lo maximo que he conseguido es pasar por un lado el id y la tabla completa por separado
Código PHP:
//Aqui arriba hay un bucle que define cabeceras, voy al cuerpo de la tabla:
            
for ($i 0$i $nfilas$i++) {
                echo 
"<tr><td><input type='radio' value='".$fila['Id']."' name='modificacion'></td>";
                foreach (
$fila as $nomcampo => $valcampo) {
                    echo 
"<td>".$valcampo."</td>";
                    echo 
"<input type='hidden' value='".$valcampo."' name='tabla[$i][$nomcampo]'/>";//AQUI ES DONDE ME GUARDA TODO LO RELEVANTE EN UNA MATRIZ
                
}
                echo 
"</tr>";
            } 
Y su botoncito lo tengo asi.
Código HTML:
 <tr><td colspan='5'><input type='submit' value='Modificar' onclick="this.form.action='modificar.php'"/></td></tr> 
Tengo otro archivo modificar.php que es donde quiero trabajar con la fila.
Si, se que podría hacer otra consulta conociendo la id que necesito, sin traerme la tabla. Pero no es lo que quiero, me gustaría eso, traerme unicamente la fila seleccionada

Código PHP:
        if( $_POST['idmodificar']==NULL){
            
print_r($_POST['tabla']);
            
//print_r($_POST['fila']);//Esto seria lo que yo querría 
aqui me gustaría que me devolviera solo la fila afectada por el radiobutton. ¿Se puede sin tener que trabajar con la tabla entera? Creo que si, pero no caigo.
  #2 (permalink)  
Antiguo 13/04/2014, 16:11
 
Fecha de Ingreso: abril-2014
Ubicación: Canarias!
Mensajes: 150
Antigüedad: 9 años, 11 meses
Puntos: 10
Respuesta: Pasar fila de tabla html a otro archivo php

Quita el onclick del boton...Ponlo "modificar.php" en el atributo action de la etiqueta FORM que tendrás por ahí.

Luego, los datos que tu quieres dependen de como te lo organizas.

Muéstrame un ejemplo de un TR completo en formato HTML (o sea ya ejecutado por el php) y como quieres el resultado del $_POST ...mas allá del $_POST['fila']
__________________
Pautas php:
No usar libreria mysql, usa mysqli; Separar siempre los controladores de la vista; Procedual es feo, ama los objetos
  #3 (permalink)  
Antiguo 13/04/2014, 16:34
 
Fecha de Ingreso: abril-2014
Mensajes: 13
Antigüedad: 9 años, 11 meses
Puntos: 0
Respuesta: Pasar fila de tabla html a otro archivo php

No me falla el botón, el boton va perfectamente, si hago eso tendria que poner que el boton es de tipo submit.
He aqui lo que se me ve antes de pulsar el boton:
Código HTML:
Ver original
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
  2. "http://www.w3.org/TR/html4/strict.dtd">
  3.  
  4. <html xmlns="http://www.w3.org/1999/xhtml" lang="en">
  5.     <head>
  6.         <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  7.         <title>listado</title>
  8.         <meta name="author" content="Manuel Botet" />
  9.         <!-- Date: 2013-09-27 -->
  10.         <link href="../../estilo.css" rel="stylesheet" type="text/css" />
  11.     </head>
  12.     <body>
  13.         <h1>Listado de vendedores</h1>
  14.         Vendedores en la base de datos: 11<br/>Se muestran 3 vendedores por página <br/>Mostrando vendedores del 1 al 3<table border='1' ><form name='formulario' method='post'><th>Borrado</th><th>Modificación</th><th>Id</th><th>Nombre</th><th>Oficina</th><tr><td><input type='checkbox' value='1' name='check[]'/></td>
  15.                           <td><input type='radio' value='1' name='modificacion'></td><td>1</td><input type='hidden' value='1' name='tabla[0][Id]'/><td>Paco</td><input type='hidden' value='Paco' name='tabla[0][Nombre]'/><td>13</td><input type='hidden' value='13' name='tabla[0][Oficina]'/></tr><tr><td><input type='checkbox' value='8' name='check[]'/></td>
  16.                           <td><input type='radio' value='8' name='modificacion'></td><td>8</td><input type='hidden' value='8' name='tabla[1][Id]'/><td>pepito</td><input type='hidden' value='pepito' name='tabla[1][Nombre]'/><td>20</td><input type='hidden' value='20' name='tabla[1][Oficina]'/></tr><tr><td><input type='checkbox' value='9' name='check[]'/></td>
  17.                           <td><input type='radio' value='9' name='modificacion'></td><td>9</td><input type='hidden' value='9' name='tabla[2][Id]'/><td>Lucia</td><input type='hidden' value='Lucia' name='tabla[2][Nombre]'/><td>6</td><input type='hidden' value='6' name='tabla[2][Oficina]'/></tr>            <tr><td colspan='5'><input type='submit' value='Confirmar borrado' onclick="this.form.action='borrar.php'"/></td></tr>
  18.             <tr><td colspan='5'><input type='submit' value='Modificar' onclick="this.form.action='modificar.php'"/></td></tr>
  19.             <tr><td colspan='5'><input type='submit' value='Insertar nuevo vendedor' onclick="this.form.action='insertar.php'"/></td></tr></table></form>
  20.         <br/><a href='listado.php?pagina=2'>Siguiente</a><br/>       <a text-align="right" href="index.html">Menú Principal</a>
  21.         </table>
  22.     </body>
  23. </html>

y aqui algo como lo que me debería mostrar

Código HTML:
Ver original
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
  2. "http://www.w3.org/TR/html4/strict.dtd">
  3.  
  4. <html xmlns="http://www.w3.org/1999/xhtml" lang="en">
  5. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  6. <title>modificar</title>
  7. <meta name="author" content="Manuel Botet" />
  8. <link href="../../estilo.css" rel="stylesheet" type="text/css" />
  9. <style type="text/css">table{background-color: rgb(255,255,100);}</style>
  10. </head>
  11.     <body>
  12.             <table><form action="modificar.php" method="post">
  13.                 <tr><td>Id: </td><td><input type="text" readonly="readonly" value="8" /></td></tr>
  14.                 <tr><td>Nombre: </td><td><input type="text" name="nombre" value="" /></td></tr>
  15.                 <tr><td>Oficina: </td><td><input type="text" name="oficina" value="" /></td></tr>
  16.                 <input type="hidden" name="idmodificar" value="8" />
  17.                 <tr>
  18.                     <td colspan="2"><input type="reset" value="Borrar datos"/><input type="submit" value="Confirmar modificacion"/></td>
  19.                 </tr>
  20.             </form></table>
  21.             </body>
  22. </html>

A ver si se me ve bien.... si no intentaré editarlo
  #4 (permalink)  
Antiguo 13/04/2014, 16:37
 
Fecha de Ingreso: abril-2014
Mensajes: 13
Antigüedad: 9 años, 11 meses
Puntos: 0
Respuesta: Pasar fila de tabla html a otro archivo php

En ese ejemplo solo me muestra la estructura que deseo tener, pero en este caso estará vacia (excepto por el id que tiene el correcto), cuando yo lo que quiero es que tenga unicamente los datos de la fila (y de la fila correcta


Esto es lo que me muestra cuando descomento el print_r($_POST);
Array ( [tabla] => Array (
[0] => Array ( [Id] => 1 [Nombre] => Paco [Oficina] => 13 )
[1] => Array ( [Id] => 8 [Nombre] => pepito [Oficina] => 20 )
[2] => Array ( [Id] => 9 [Nombre] => Lucia [Oficina] => 6 ) )
[modificacion] => 8 )
Te lo he tabulado un poquito para que se vea mas claro :D
  #5 (permalink)  
Antiguo 13/04/2014, 16:59
 
Fecha de Ingreso: abril-2014
Ubicación: Canarias!
Mensajes: 150
Antigüedad: 9 años, 11 meses
Puntos: 10
Respuesta: Pasar fila de tabla html a otro archivo php

Ainsssss que me lio

De que es el primer html y de donde es el segundo

Lo del botón te lo dije porque aunque te funcione, el archivo de meta debe ir en el action, acostumbrate desde temprano a hacer el código limpio.

Veo ahi 3 datos en lo que devuelve, id, nombre, oficina...de todas las filas de la tabla supongo, y tu quieres que te devuelva solo 1 de ellos, me imagino que el que el usuario elija cuando seleccione el radio.

Dejame preguntarte una cosa, tu no tienes todos los nombres, id's y oficinas guardadas en la base de datos? no necesitas saber realmente la id que elije el usuario?

En ese caso solo debes preguntar por el id en el formulario, y donde recibes la respuesta, volver a buscar en la base de datos todas las infomaciones.

Si me equivoco en algo, o necesitas un ejemplo practico, mas informacion, cualquier cosa, responde :)

un saludo
__________________
Pautas php:
No usar libreria mysql, usa mysqli; Separar siempre los controladores de la vista; Procedual es feo, ama los objetos
  #6 (permalink)  
Antiguo 13/04/2014, 17:14
 
Fecha de Ingreso: abril-2014
Mensajes: 13
Antigüedad: 9 años, 11 meses
Puntos: 0
Respuesta: Pasar fila de tabla html a otro archivo php

El caso es que investigaba a ver si lo podria hacer de esta forma. Se filtrar los datos con el numero de la fila una vez que tengo toda la tabla en el segundo archivo, o hacer una nueva consulta. Pero no es lo que quiero lograr.
Lo de tener ese boton asi no es por azar tampoco, hay un boton para modificar y otro para borrar que me redirigen a diferentes sitios. Basicamente estoy practicando cosas.

El primer html corresponde a el listado (listado.php) que el usuario ve, y el segundo corresponde a cuando el usuario ha seleccionado un usuario (con el radiobutton) y activa el boton modificar. De ahi me manda al modificar.php que deberia contener los datos para que el usuario pueda modificarlos partiendo de lo que ya hay (y no solo el Id, que era lo que habia hecho inicialmente).

Se que me explico un tanto mal, asi que lo siento por adelantado.
  #7 (permalink)  
Antiguo 13/04/2014, 17:27
 
Fecha de Ingreso: abril-2014
Ubicación: Canarias!
Mensajes: 150
Antigüedad: 9 años, 11 meses
Puntos: 10
Respuesta: Pasar fila de tabla html a otro archivo php

Entonces te hago una recomendación como programador que lleva en el oficio unos cuantos años.

Siempre debes tener en cuenta que SIEMPRE (ley de murphy) puede llegar a usar un Bastardo tu aplicacion.

Perdoname la palabra, pero es así. Y si tu recoges datos de la base de datos por un formulario, cuando realmente estan ahí de muestra, pero los usaras posteriormente...Le estas dando a un usuario maligno la posibilidad de tocar mas de lo que debe.

Por eso, siempre pedir el mínimo indispensable al usuario, y todo lo que puedas lo sacas de la db o te lo calculas tu mismo.

Yo tengo un sistema de donaciones que le muestra al usuario en cualquier momento los euros que dona y los donapuntos que recibe en cambio (con donapuntos puede obtener cosillas en la web pero de ningun valor real). Si yo recogeria tanto el campo del dinero como el campo de los donapuntos..Alguien puede modificar el html ...en este caso se llama DOM porque es html ejecutado por el navegador, y ponerse nosecuantos donapuntos y en euros 0. Por eso yo le MUESTRO cuantos donapuntos recibiria cuando pone que quiere poner X euros, pero cuando le de a confirmar, yo mismo con php vuelvo a calcular cuantos donapuntos obtendria a partir de X euros.

Es una recomendación....Ahora si ese es el propósito de la práctica (no recomendado) y aun así quieres hacerlo, pues hagámoslo.

Por confirmar, de los 2 html de arriba, tu quieres que el html de arriba te devuelva bien las filas, no?
__________________
Pautas php:
No usar libreria mysql, usa mysqli; Separar siempre los controladores de la vista; Procedual es feo, ama los objetos
  #8 (permalink)  
Antiguo 13/04/2014, 17:43
 
Fecha de Ingreso: abril-2014
Mensajes: 13
Antigüedad: 9 años, 11 meses
Puntos: 0
Respuesta: Pasar fila de tabla html a otro archivo php

Si exacto quiero que me devuelva una única fila.
Realmente lo que me pidieron era mucho mas sencillo pero como quiero aprender pues ando trasteando con cosas de prueba. Tengo en cuenta los temas de seguridad y tal y los datos que quiero modificar unicamente van a ser nombre y oficina. En mi base de datos como es de prueba no hay ni oficinas ni nada, tengo otros ejercicios para comprobar seguridad y acceso, pero no era el caso :P.

No quise poner el codigo del modificar para no liar mas la cosa al fin y al cabo solo quiero tener control sobre la informacion que envio de una pagina a otra.

Y tambien intento evitar javascript, por cierto. Que para eso ya tengo otra asignatura. Estoy explorando los limites del php y coger toda la fluidez que pueda.
  #9 (permalink)  
Antiguo 14/04/2014, 05:58
 
Fecha de Ingreso: abril-2014
Ubicación: Canarias!
Mensajes: 150
Antigüedad: 9 años, 11 meses
Puntos: 10
Respuesta: Pasar fila de tabla html a otro archivo php

He estado jugueteando y ordenando tu código

Tengo una noticia mala y una buena.

La mala es que debes tener en cuenta que estas enviando un formulario con todos los campos, asi que todos los campos se van a enviar por el post, es decir, tienes que vivir con que $_POST['tabla'] te traiga todo.

La noticia buena es que si ordenas los nombres y valores de los inputs de esta manera:

Código PHP:
//Aqui arriba hay un bucle que define cabeceras, voy al cuerpo de la tabla:
            
for ($i 0$i $nfilas$i++) {
                echo 
"<tr><td><input type='radio' value='".$fila['Id']."' name='modificacion'></td>";
                foreach (
$fila as $nomcampo => $valcampo) {
                    echo 
"<td>".$valcampo."</td>";
                    echo 
"<input type='hidden' value='".$valcampo."' name='tabla[$fila['Id']][$nomcampo]'/>";//AQUI ES DONDE ME GUARDA TODO LO RELEVANTE EN UNA MATRIZ
                
}
                echo 
"</tr>";
            } 
Tu pides simplemente tienes que hacer esto

$mod = $_POST['modificacion'];
$linea = $_POST['tabla'][$mod];

Ahora la variable $linea equivale a lo que tu pedistes.

La respuesta era fácil realmente, no me concentré lo suficiente ayer en entenderlo, simplemente no uses un contrador para los campos hidden, usa el mismo id que usas como valor en el radio, así tienes un identificador común.

Ah, y una cosa...Mete todo en los <td>, así tu código es más óptimo.

Optimizado seria así:

Código PHP:
//Aqui arriba hay un bucle que define cabeceras, voy al cuerpo de la tabla:
            
for ($i 0$i $nfilas$i++) {
                echo 
"<tr><td><input type='radio' value='".$fila['Id']."' name='modificacion'></td>";
                foreach (
$fila as $nomcampo => $valcampo) {
                    echo 
"<td>".$valcampo."<input type='hidden' value='".$valcampo."' name='tabla[".$fila['Id']."][".$nomcampo."]'/></td>";//AQUI ES DONDE ME GUARDA TODO LO RELEVANTE EN UNA MATRIZ
                
}
                echo 
"</tr>";
            } 
__________________
Pautas php:
No usar libreria mysql, usa mysqli; Separar siempre los controladores de la vista; Procedual es feo, ama los objetos
  #10 (permalink)  
Antiguo 14/04/2014, 20:15
 
Fecha de Ingreso: abril-2014
Mensajes: 13
Antigüedad: 9 años, 11 meses
Puntos: 0
Respuesta: Pasar fila de tabla html a otro archivo php

Muchas gracias, en cuestión de conceptos me ha quedado claro lo que se puede o no se puede. Y gracias tambien por el código optimizado, ayuda precisamente a eso, a optimizar el mio.
Tienes mis votos, mi agradecimiento y marco el tema como cerrado :D

Etiquetas: fila, html, 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 02:04.