La estructura básica de un módulo PHP que "edita" un registro de una tabla, le forma que yo he adoptado, consiste en general en las siguientes tareas sucesivas (en orden de ejecución, de arriba a abajo) :
Recupero Datos recibidos vía POST. Si no hay POST{ Leo BDD y/o Asigno valores iniciales si procede. } Si hay POST{ Compruebo si hay Errores. Si no hay Errores{ Actualizo datos en BDD. } Si hay Errores{ Marco los errores encontrados. } } Presento form con los distintos edit Con respecto al primer punto,
Recupero Datos recibidos vía POST, a mi me gusta trabajar con variables individuales, no hacer referencia directa a los valores recibidos vía $_POST (Recordad que si tenemos un input cuyo "name" es MiEdit recibiremos el valor tecleado en el mismo dentro de la variable $_POST["MiEdit"]).
A mi me gusta recoger $_POST["MiEdit"] sobre $MiEdit y trabajar con ésta última variable, así ademas si tengo que manipularla por cualquier causa tendré disponible el original $_POST["MiEdit"] y podría, caso de ser necesario, manipularla de nuevo, recuperarla ... etc.
La vía mas directa sería escribir simplemente:
$MiEdit = $_POST["MiEdit"]; Para una sola variable (ó dos, ó tres) no es mala opción, pero si tenemos formularios con docenas de edit´s (yo los tengo) puede ser un trabajo lento y farragoso. No solo escribirlos la primera vez, sino también si simplemente le cambiamos el "name" a uno de ellos se nos queda obsoleta automáticamente la asignación y tenemos que cambiarla también.
Mi solución para esto es montar un "variabilizador automático de los POST recibidos": o sea crear automáticamente una variable cuyo nombre sea el "name" del Edit y cuyo valor sea el recibido vía $_POST.
Éste código PHP hace exactamente eso:
/** Recupero Variables enviadas por POST ***/ $mynpost = count($_POST); // cuento las variables que hay $mytags = array_keys($_POST); // obtiene los nombres de las variables $myvalues = array_values($_POST); // obtiene los valores de las variables // crea las variables y les asigna el valor for($i=0;$i<$mynpost;$i++){ $$mytags[$i]= trim(strtoupper($myvalues[$i])); $tmp=$mytags[$i].'_E'; $$tmp=''; } // for($i=0;$i<$mynpost;$i++) Antes de ejecutarse este código sólo tengo una variable $_POST, tras él tengo las misma $_POST y tantas variables individuales como hayan sido recibidas vía POST, cada una con su valor correspondiente.
Volver