![]() |
script para editar registros de una bbdd como lo hace phpmyadmin Hola, estoy diseñando un panel de control web en el que quiero mostrar todos los registros de una bbdd con un checkbox al lado para que el usuario pueda seleccionar los que quiera y editarlos como lo hace phpmyadmin. Lo tengo todo menos la parte final, creo el formulario con todos los checbox y luego según los checkbox que haya seleccionados creo otro form con todos los campos para modificar los registros, pero luego no sé cómo hacer para procesar los datos del segundo form ya que no sé cuántos hay y estarían repetidos en un bucle, no sé como nombrarlos para identificarlos, me explico? Ahí va algo de código a ver si se ve... index.php Código PHP: Código PHP: Código PHP: Muchas gracias y un saludo! |
Respuesta: script para editar registros de una bbdd como lo hace phpmyadmin No me he leido el código pero te doy una idea de como hacerlo, luego tú añádela donde veas más oportuno. Lo mejor es que crees sólo uno y con el nombre del input identifiques los valores: form1input1, form1input2.... ... ... formXinput1, ... , formXinputY los valores guárdalos en un array de arrays con un foreach (así puedes obtener fácilmente la key de cada $_POST[]). foreach($_POST as $key->$valor){ //de la $key obten el nº de form y el nombre del input; $array[nºform][input] = $valor; //un ejemplo: $array[0][nombre] = $valor; } donde input será el nombre que le hayas dado a cada input en el formulario (obtenido del $key) una vez rellenado sólo tienes con un for ir recorriendo cada fila del array de arrays e ir asignando los valores a las querys de actualización, da igual que sean los mismos, el código será mas sencillo. for($i=0; $i < sizeof($array); $i++){ $campo = array{$array[i][0], $array[i][1],...,$array[i][X]} $sql = "UPDATE tabla SET campo1 = '.$campo[0], .... WHERE id = '.$id.'"; if(mysql_query($sql, $conexion)){ //campo actualizado } else{ //campo no actualizado -> error } } donde $array es el array de arrays. $campo será un array con los datos de la fila a guardar. $id será el campo con la PK para SOLO modificar ese registro. tabla será la tabla a actualizar. //-> sustitúyelo por el código correspondiente. |
Respuesta: script para editar registros de una bbdd como lo hace phpmyadmin Muchas gracias Ilie pero creo que, o no he entendido bien tu solución, o no me sirve. La idea básica es generar formularios dinámicamente con un bucle a partir de unos checkbox que se hayan seleccionado de otro formulario de otro archivo. Pero en realidad no habría un formulario para cada iteración del bucle, y por tanto para cada registro de la bbdd, sino que todos los inputs de todos los registros irían en el mismo form (ésto es para poder actualizar todos los registros de una vez). Para que los inputs tengan distinto nombre le he concatenado al nombre normal ('nombre', 'apellidos', etc.) el id del usuario (como se ve en los inputs del accion.php), pero no sé cómo recoger esos inputs con esos nombres ni como crear la sentencia update sin saber cuántos inputs hay ni qué nombres tienen, porque en editar.php ya no tengo los id de usuario. En fin, es un jaleo, por eso preguntaba también si alguien sabía cómo hacerlo más sencillo. ¿Alguna idea o ayuda para terminarlo como está? Un saludo y muchas gracias. |
Respuesta: script para editar registros de una bbdd como lo hace phpmyadmin bueno.... puedes referenciar cada checkbox con el usuario y añadirlo al nombre de las inputs: <input name="usuario_nombre".../>, por ejemplo. así te aseguras a quien pertenece ese input concreto y obtener sus datos para ser actualizados. eso lo puedes hacer con un foreach(). (en el antiguo comentario viene explicado). Con esta función asignas a $key el nombre del input y a $valor el valor introducido realiza un explode() a $key para separar el usuario y el nombre del input: //ejemplo: $key = usuario1_nombre; list($usuario, $input) = explode('_',$key); //$usuario = usuario1; $input = nombre; una vez generes los "formularios" (aunque se trate de uno) de cada uno de los usuarios, como los nombres de los inputs los tienes que generar una estructura con la cual puedas obtener el nº de usuarios y los datos. Eso lo puedes hacer con un array de arrays, es decir: $array=[usuario1][usuario2][usuario3] ... [usuarioN] donde: $array[usuarioX] = [nombre][apellidos][cod_postal] ... y asi por ejemplo tenemos: $array [usuario1][nombre] = Pepe; con un count($array) obtengo el nº de usuarios, por lo tanto tienes el nº de updates a realizar. Con el for que te indico en el comentario anterior puedes realizar los UPDATES a partir del usuario. solo tienes que adaptar 'un poco' el código a tu script editar.php y ya está. si tienes dudas sobre alguno de los pasos no dudes en consultar. Espero que ya lo consigas resolverlo y te haya servido de ayuda. Un saludo |
Respuesta: script para editar registros de una bbdd como lo hace phpmyadmin Gracias, ya lo he resuelto, era más sencillo que todo eso, símplemente he recogido el nombre del campo en una variable como texto y luego lo he pasado al $_HTTP_POST_VARS[]: Código PHP: Mi problema ahora es que no puedo validar el formulario porque los nombres de los inputs los tengo como <input name="nombre<?php echo $i; ?>" y claro fuera del bucle no tengo esa $i y menos aún en javascript, no sé cómo hacerlo, he intentado poner un bucle en la función de validación tal que así: Código: function validar_formulario(formulario, i){ Un saludo y gracias. |
La zona horaria es GMT -6. Ahora son las 05:14. |
Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2025, Jelsoft Enterprises Ltd.