Estoy usando postgis para mi proyecto junto con geoserver y openlayers. Le doy al usuario un formulario html con un menú desplegable con las capas disponibles (cada capa corresponde a una tabla en la base de datos), el usuario puede seleccionar cualquier capa, en base a la cual estoy recuperando los campos de ese particular de la base de datos para insertar los valores. Tan pronto como el usuario introduzca los datos y haga clic en enviar, los datos deben ser insertados en la base de datos.
Insertar datos en la db es algo trivial en la medida en que se conoce el orden en que se insertan en la db. Pero tengo tablas con diferente número de campos y en diferente orden. Quiero saber cómo puedo insertar valores en una tabla particular cuando no sé el orden en el que tengo que almacenar.
Lo explicaré con un ejemplo:
Tabla 1 de la capa1: id,nombre,punto Tabla 2 de la capa2: id,polígono,nombre,área
Cuando el usuario selecciona la capa 1 en el menú desplegable, el formulario le proporcionará los campos de texto id, nombre, punto en ese orden para insertar los datos. Si el usuario selecciona la capa 2, el formulario le proporcionará los campos de texto id, polygon, name, area en ese orden. Supongamos que el usuario ha seleccionado la capa 1, entonces después de insertar los valores en los campos de texto y enviar, el archivo php debe realizar una consulta "insert into (id,name,point) values(' $_post[id]','$ _post[nombre]','st_geomfromtext('PUNTO($_post[punto])',4326));"
De la misma manera para insertar en la capa 2 la consulta debería ser "insert into (id,polygon,name,area) values(' $_post[id]','st_geomfromtext('POINT($ _post[point])',4326),' $_post[name]','$ _post[área]');"
Pero, ¿cómo puedo saber que tengo que utilizar sólo esta consulta en particular? Puedo saber el nombre de la tabla desde el campo oculto.
Por ahora mi archivo php está así:
$tablename=$ _POST[tablename]; si( $tablename=='layer1') { perform query1; } else if($ tablename=='layer2') { realiza la consulta2; }
Pero esto sólo funciona si conozco las tablas ya presentes. ¿Hay alguna forma de escribir el archivo php siempre que conozca sólo el nombre de la tabla, pero no la descripción de la tabla en la base de datos? (Puedo obtener la descripción de la tabla a través de una consulta si quiero).