Foros del Web » Programando para Internet » PHP »

Recoger datos de un formulario cuando no sabes cuántos hay

Estas en el tema de Recoger datos de un formulario cuando no sabes cuántos hay en el foro de PHP en Foros del Web. Hola, quería saber si se pueden recoger datos de un formulario dinámicamente, preferiblemente en php. Tengo una tabla que genero dinámicamente a partir de los ...
  #1 (permalink)  
Antiguo 18/08/2008, 04:58
 
Fecha de Ingreso: marzo-2007
Mensajes: 33
Antigüedad: 17 años, 1 mes
Puntos: 0
Recoger datos de un formulario cuando no sabes cuántos hay

Hola, quería saber si se pueden recoger datos de un formulario dinámicamente, preferiblemente en php. Tengo una tabla que genero dinámicamente a partir de los registros de una bbdd y en cada fila de registros quiero poner un checbox para seleccionar los que se quiera y darle a un botón "Borrar los usuarios seleccionados" para borrar esos registros. Lo he hecho con un formulario que combino con la tabla y que genera los input para cada registro nombrándolos con el id_usuario propio de cada registro. El caso es que después no sé cómo puedo recoger los datos, no sé cómo referenciar al nombre de cada input desde afuera del bucle que vuelca los registros de la bbdd en la tabla.

Un saludo y gracias

P.D: si me decís alguna aplicación que genere tablas dinámicas a patrir de una bbdd también me valdría, porque quiero hacer más cosas como poder ordenar los elementos de la tabla en función de cada campo, poder editar registros, etc.
  #2 (permalink)  
Antiguo 18/08/2008, 05:26
Avatar de DooBie  
Fecha de Ingreso: septiembre-2004
Mensajes: 1.101
Antigüedad: 19 años, 7 meses
Puntos: 71
Respuesta: Recoger datos de un formulario cuando no sabes cuántos hay

Si he leido bien, quieres listar unos datos de una tabla, junto a un checkbox que si lo seleccionas, borre ese registro (se pueden seleccionar uno o varios).

Bien, debes crear un formulario mediante un bucle con los datos de la tabla, hasta ahi, seguro lo sabes hacer, pues bien, en cada "linea" de ese registro, pones el checbox, con name="borrar[]" (fijate en los corchetes... sigo)
Luego, en los values de cada checkbox, le asignas el id_usuario

Pues bien, cuando hagas un submit en ese formulario, con cuantos checkbox seleccionados como quieras, se enviara un array con los values de esos checkbox en la variable $_POST['borrar'].
Teniendo ese array, haces un bucle (foreach, por ejemplo) para recorrer ese array, e ir eliminando los $id_usuarios seleccionados.

Espero te sirva de ayuda :)
  #3 (permalink)  
Antiguo 19/08/2008, 02:25
 
Fecha de Ingreso: marzo-2007
Mensajes: 33
Antigüedad: 17 años, 1 mes
Puntos: 0
Respuesta: Recoger datos de un formulario cuando no sabes cuántos hay

Muchas gracias por la respuesta, he intentado hacerlo así y no me funciona, te pego el código a ver si me puedes echar una mano... lo que me saca por pantalla al darle a Borrar Usuarios es:

Ha habido un error al borrar al usuario
Ha habido un error al borrar al usuario


index.php
Código PHP:
<center>
<table cellpadding="5">
<tr>
<td></td>
<td><b>Id de usuario</b></td>
<td><b>Tipo de usuario</b></td>
<td><b>Nombre</b></td>
<td><b>Apellidos</b></td>
<td><b>email</b></td>
<td><b>teléfono</b></td>
<td><b>dirección</b></td>
<td><b>cód. postal</b></td>
<td><b>municipio</b></td>
<td><b>provincia</b></td>
</tr>
<?php
    
include('../includes/conexion.php');
    
conectar();
    
$sentencia "select * from usuarios";
    if(
$ejecucion mysql_query($sentencia)){
        while(
$fila mysql_fetch_assoc($ejecucion)){
            
$sentencia_municipio "select * from municipios where id_municipio = ".$fila['id_municipio'];
            
$sentencia_provincia "select * from provincias where id_provincia = ".$fila['id_provincia'];
            
$sentencia_tipo_usuario "select * from tipo_usuario where id_tipo_usuario = ".$fila['id_tipo_usuario'];?>
            <tr>
            <form action="borrar.php" method="post">
            <td><input type="checkbox" name="borrar[]" value="<?php $fila['id_usuario']?>"></td>
            <?php
            
echo "<td>".$fila['id_usuario']."</td>";
            if(
$ejecucion_tipo_usuario mysql_query($sentencia_tipo_usuario)){
                
$fila_tipo_usuario mysql_fetch_assoc($ejecucion_tipo_usuario);
                echo 
"<td>".$fila_tipo_usuario['tipo']."</td>";
            }
            else{
                echo 
"<td><font color=\"red\">Error.</font></td>";
            }
            echo 
"<td>".$fila['nombre']."</td>";
            echo 
"<td>".$fila['apellidos']."</td>";
            echo 
"<td>".$fila['email']."</td>";
            echo 
"<td>".$fila['telefono']."</td>";
            echo 
"<td>".$fila['direccion']."</td>";
            echo 
"<td>".$fila['cod_postal']."</td>";
            if((
$ejecucion_municipio mysql_query($sentencia_municipio)) && ($ejecucion_provincia mysql_query($sentencia_provincia))){
                
$fila_municipio mysql_fetch_assoc($ejecucion_municipio);
                
$fila_provincia mysql_fetch_assoc($ejecucion_provincia);
                echo 
"<td>".$fila_municipio['municipio']."</td>";
                echo 
"<td>".$fila_provincia['provincia']."</td>";
            }
            else{
                echo 
"<td><font color=\"red\">Error.</font></td>";
                echo 
"<td><font color=\"red\">Error.</font></td>";
            }
            echo 
"</tr>";
        }
    
desconectar();
    }
    else{
        echo 
"<font color=\"red\">Error de conexión a la base de datos</font>";
    }
    
?>
</table>
</center>
<br /><br />
<input type="submit" value="Borrar usuarios seleccioandos">
</form>
borrar.php
Código PHP:
include('../includes/conexion.php');
    
conectar();
    foreach(
$_POST['borrar'] as $value){
        
$sentencia "update set activo='no' where id_usuario=$value";
        
$ejecucion mysql_query($sentencia);
        if(
$ejecucion){
            echo 
"El uruario $value se han borrado conrrectamente";
        }
        else{
            echo 
"<fong color=\"red\">Ha habido un error al borrar al usuario $value</font>";
        }
        echo 
"<br>";
    }
    
desconectar(); 
Un saludo y muchas gracias.

Última edición por mgo3; 19/08/2008 a las 02:31
  #4 (permalink)  
Antiguo 19/08/2008, 03:46
Avatar de DooBie  
Fecha de Ingreso: septiembre-2004
Mensajes: 1.101
Antigüedad: 19 años, 7 meses
Puntos: 71
Respuesta: Recoger datos de un formulario cuando no sabes cuántos hay

modifica tu codigo en borrar.php, estas lineas:
$sentencia = "update set activo='no' where id_usuario=$value";
$ejecucion = mysql_query($sentencia);
por
$sentencia = "update set activo='no' where id_usuario=$value";
echo "$sentencia<br>";
$ejecucion = mysql_query($sentencia);

De este modo, te imprimira cada una de las sentencias, para ver si el $value es correcto o no, a modo de DEBUG vamos...


EDITO: otra cosa, una sentencia update, si se ejecuta bien (su sintaxis sea correcta) pero los datos a modificar no cambian, devolvera 0, por lo que, en el if ($ejecucion)... es posible que la sentencia se ejecute bien, pero no haya cambios de datos, con lo que devuelve 0 filas afectadas.

EDITO2: WOOOOOWWWW!!!! he visto el fallo, la sentencia update, no le pones ninguna tabla :)

saludos.

Última edición por DooBie; 19/08/2008 a las 03:52
  #5 (permalink)  
Antiguo 19/08/2008, 04:37
 
Fecha de Ingreso: marzo-2007
Mensajes: 33
Antigüedad: 17 años, 1 mes
Puntos: 0
Respuesta: Recoger datos de un formulario cuando no sabes cuántos hay

Gracias por tu respuesta, ya he puesto el nombre de tabla pero sigue sin funcionar. El problema es que no me coloca nada en $value. Poniendo el echo que me has dicho tengo:

update usuarios set activo='no' where id_usuario=
Ha habido un error al borrar al usuario
update usuarios set activo='no' where id_usuario=
Ha habido un error al borrar al usuario

Alguna ayudita?

Gracias.
  #6 (permalink)  
Antiguo 19/08/2008, 06:20
 
Fecha de Ingreso: mayo-2005
Mensajes: 188
Antigüedad: 19 años
Puntos: 6
Respuesta: Recoger datos de un formulario cuando no sabes cuántos hay

Hola!

Te falta el "echo" al escribir el id del usuario:

Código PHP:
<td><input type="checkbox" name="borrar[]" value="<?php echo $fila['id_usuario']?>"></td>
Y quizá el punto-y-coma (;) al final, antes de (?>)
  #7 (permalink)  
Antiguo 19/08/2008, 06:29
Avatar de DooBie  
Fecha de Ingreso: septiembre-2004
Mensajes: 1.101
Antigüedad: 19 años, 7 meses
Puntos: 71
Respuesta: Recoger datos de un formulario cuando no sabes cuántos hay

Tal y como dice juanfuentes, te falta el echo en la parte del value de los checkboxes
  #8 (permalink)  
Antiguo 25/08/2008, 01:23
 
Fecha de Ingreso: marzo-2007
Mensajes: 33
Antigüedad: 17 años, 1 mes
Puntos: 0
Respuesta: Recoger datos de un formulario cuando no sabes cuántos hay

Muchas gracias a los dos, ya me di cuenta de lo del echo y algunas cosillas más y ya me va más o menos. A ver si pudiérais ayudarme ahora con la edición de usuarios que es algo más chungo. Lo explico otro post pero el foro no me deja poner el link porque tengo menos de 30 días de antigüedad como usuario, el post se llama "script para editar registros de una bbdd como lo hace phpmyadmin".

Un saludo y muchas gracias a los dos.
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 22:12.