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