Mecanismo E-1 (entraint.php): Ingreso de datos a través de una forma

Este es el mecanismo para que se puedan ingresar datos a una tabla de N2C (Excepto a la tabla AGE, de usuarios). Es usado típicamente para inscribir personas y para recibir solicitudes y se logra a través del uso de formas HTML. Puede ser invocado desde dentro de Net2Client (Por un usuario) o desde fuera (Por el público).

Nota: entraint.php es un programa muy similar al antiguo entra.php. Las grandes diferencias son:
- entraint.php puede ser invocado interna (Usuario) o externamente (Público)
- Se usan los nombres internos, en vez de los externos
- No se usa la página ResultadoNO. Los mensajes de error son dados internamente. Para eso se requiere que la página invocante tenga un <iframe> (Ver abajo)

Invocación

El programa que invoca a entraint.htm debe tener las instrucciones siguientes:

<form name="forma" method="post" target='Mensajes' onSubmit='completar();'
   action='http://www.net2client.com/sis/inter/entraint.php'>
<div style='visibility:invisible'>
   <iframe height=50 width=750 name='Mensajes' id='Mensajes' frameborder='0'></iframe>
</div>

El comando de iframe es el que permite que la invocación se haga desde dentro de la misma página, sin tener que abrir una nueva página. Como puede observarse, el iframe tienen el nombre “Mensajes”, que es el mismo utilizado en el “target” del “form”. La rutina completar() que está en el “onSubmit” es opcional. Puede usarse para tomar control del programa, antes de enviar la forma.

NOTA IMPORTANTE: Cuando la forma contiene campos tipo archivo o imagen, es necesario añadir, en el tag de "form" el parámetro siguiente:

enctype='multipart/form-data'

entraint.php: Parámetros de entrada

Nombre Uso
BD La base de datos que se está utilizando
COKCodigo El código del Cokie (">Ver anexo V). Solo es obligatorio, cuando el programa es llamado internamente, es decir cuando el Perfil no viene vacío
AAA

Código completo del servidor/base de datos/empresa/aplicación. Ejp: GWT101231

Tabla El nombre interno (Ej: PER, AR1). No puede ser AGE
ResultadoOK

Dirección completa a la cual se debe ir si todo funcionó bien (Ej. http://www.comercio.com/confirmacionsuscripcion.htm). Se recibe como parámetro el número de registro añadido. Si se omite, presenta una página en blanco.

Nota: En caso de querer llamar el programa a través de "versup.php", poner SI en el parámetro siguiente y en este poner el nombre del programa sencillo (Ej: confirmacionsuscripcion.htm). El sistema invocará versup.php?confirmacionsuscripcion.htm,xxx en donde xxx es el número del registro añadido

VersupOK Poner el valor "SI" en caso de querer invocar el programa indicado en ResultadoOK a través del programa versup.php
Perfil El nombre del perfil que tiene autorización para ejecutar el programa. En ese perfil, el directorio donde se encuentra el programa que invoca, debe estar definido. Cuando el programa es invocado internamente, se DEBE omitir este campo.
Idioma El código de tres letras del idioma. Si no viene se supone que es español (esp)
Forma Nombre de la forma (Cuando el programa es llamado internamente). Debe incluirse si se quiere que el campo errado quede enfocado
ReturnCok Escribir el COKO que se desea que sea devuelto al programa invocante (además del código del registro introducido)
Agente El código de Agente. Si es llamado internamente se debe omitir, ya que se guarda el código del agente que ha hecho login.
Frame Nombre del frame en donde se quiere recibir el control de la página ResultadoOK. Si se omite, la página que invoca es reemplazada por la dirección especificada en ResultadoOK
MensajeExito Escribir NO, si no se desea que aparezca la notificación de que la actualización fue exitosa y escriba cualquier otro texto si desea que ese sea el mensaje

Notificar
(USO FUTURO)

Nombre del o de los usuarios (separados por punto y comas) a quien se desea notificar con un mensaje interno que hubo un ingreso de datos. El nombre es nombre del usuario (Campo AGENombre)

NombreCampo (Escribir uno por uno todos los campos) NombreCampo es el nombre interno del campo (Ej: PERNombre, PERCant1…)
ENVIO DE EMAIL DE ACTIVACIÓN O DE CONFIRMACIÓN
AvisarActivacion Número de la respuesta pre-definida que se va a enviar a la persona que se inscribió en un email de activación
NoEnviarLinkActivacion Escribir "SI", en caso de no querer que aparezca el enlace de activación. Esto sería para el caso en que solo se quiere confirmar, sin necesidad de que el usuario tenga que pinchar un link de activación
NOTIFICACIÓN DE REGISTRO
Avisa Numero del agente el cual es el emisor del mensaje
AvisarA Numero de los agente separados por comas de la tabla AGE a los cuales se les va a enviar el mensaje
AvisarAsunto Asunto del mensaje a ser enviado
AvisarCampos Campos del registro los cuales van a ser incluidos en el mensaje.(Ej: PERNombre, PERCant1…)
AvisarEmail La palabra 'SI' si se desea enviar email junto con el mensaje interno.
AvisarOpciones la palabra 'ECHO' si se desea imprimir el query de cada registro de la tabla MEN
AYUDA PARA EL DEBUGGING
Grabar Escribir NO, para que no se grabe (solo se ejecutan las validaciones)

 

LIMITACIÓN: Cuando hay campos modificables, no se puede hacer el envio de emails.

Normalmente, cuando se pone un código (ej. PERCodigo), el programa muestra el número y el icono de Edición. Si se desea que aparezca un enlace a la vista extendida, escribir el nombre interno de la tabla, seguido del texto “VerExtendido”, ejemplo: PER VerExtendido.

El programa invocado ya tiene disponible dos formas de estilos (CSS), muy similares a la de Net2Client. Cuando el usuario pide imprimir una pantalla, no se van a imprimir los campos de imagen (para que no aparezcan los iconos de ayuda, impresión, etc) a menos que tengan la clase “dp”, de la forma siguiente:

 <img class=dp border=0 href=…>

Funcionamiento

El sistema valida que todos los campos obligatorios estén presentes, y que los campos de enlace tengan un valor válido que exista (a menos que sea cero). Si se omite el código de Agente (Usuario) es puesto en cero cuando el programa es llamado externamente (esto implica que el registro no tendrá dueño y podrá ser ubicado únicamente cuando se pidan los registros de "TODOS") o inicializado con el código del usuario, cuando el programa es llamado internamente.

El parámetro “Frame” es de mucha utilidad y se recomienda su uso, sobre todo cuando la llamada es interna. Al usarlo se evita que se estén abriendo páginas nuevas.

Si hay errores, se da un mensaje de error para que el problema sea corregido. Y en caso de llamada interna, el campo es enfocado (para ello es indispensable incluir el parámetro “Forma”).

En caso de que el parámetro “Grabar” contenga la palabra “NO”, se hacen todas las validaciones, pero no se graba el registro. Esto puede ser muy útil cuando se van a ingresar datos a dos tablas y no se quiere hacerlo a menos que ambas estén bien. Si este es el caso, se puede hacer una doble pasada. La primera para validar que todo esté bien (con el parámetro “Grabar” en NO y la segunda para hacer realmente la grabación.

Cuando todo esté bien, el registro es introducido en la tabla correspondiente, se graba en el log la dirección IP desde la cual fue introducido y se pasa el control al la página indicada en el campo "ResultadoOK", con el número del registro añadido como parámetro.

Envío de email de activación

Comunmente se requiere envíar un email de activación a la persona que se acaba de inscribir, para asegurar que la dirección de correo es válida y que la persona realmente se desea inscribir (esto evita que una persona inscriba a otro en contra de su voluntad). Para hacerlo se debe utilizar el parámetro AvisarActivacion, con el número de la respuesta pre-definida que se quiera enviar. Esta respuesta pre-definida, puede hacer referencia a campos de la base de datos que acaban de ser ingresados.

Al final del email, después de la respuesta pre-definida, va a aparecer un enlace de activación, que al ser pinchado, invoca al programa inter/activacion.php, en donde se actualiza el campo indicado en el parámetro XXXCampoActivacion (XXX el código de la tabla), con el valor XXXValorActivacion. Si se desea un logo en la pantalla de activación, debe estar cargada en la tabla de parámetros con el nombre LogoActivacion.

Nota: Si existe el texto (**ACTIVATIONLINK**), el texto será reemplazado por el enlace de activación en vez de aparecer el enlace al final del email.

Notificación de Registro

Comunmente, se quiere recibir un aviso cuando alguien ingresa un registro a través del programa entraint.php. El aviso se hace a través de un mensaje interno y, opcionalmente, también a través de un email. Esto se puede hacer con este grupo de parámetros.

Ejemplo

Ejemplo tomado de la aplicación 00-705 (Página Web de Globalwebtek)

A continuación mostramos un ejemplo de llamada interna a entraint.php. Este programa es invocado a través de versup.php, principalmente para tener acceso a la rutina Cabalista, que permite mostrar una lista en forma dinámica.

<? 
// PROGRAMA LLAMADO A TRAVES DE versup.php, para poder usar la rutina CajaLista
echo "
<script language=javascript>
function completar(){
  if (document.forma.checkbox1.checked) document.forma.PERLista3.value='SI';
  if (document.forma.checkbox2.checked) document.forma.PERLista4.value='SI';
  if (document.forma.checkbox3.checked) document.forma.PERLista5.value='SI';
if (document.forma.checkbox4.checked) document.forma.PERLista6.value='SI'; return true; }; </script> <h1>Registro</h1> <form name='forma' method='post' target='Mensajes' onSubmit='completar();' action='inter/entraint.php'> <input type='hidden' name='COKCodigo' value='$COKCodigo'>
<input type='hidden' name='BD' value='$BD'>
<input type='hidden' name='AAA' value='GWT100705'> <input type='hidden' name='Tabla' value='PER'> <input type='hidden' name='PERLista7' value='Internet'> <input type='hidden' name='Forma' value='forma'> <input type='hidden' name='Perfil' value='Internet'> <div style='visibility:invisible'> <iframe height=1 width=1 name='Mensajes' id='Mensajes' frameborder='0'></iframe> </div> <table width='100%' border=0 align='center' cellpadding=2 cellspacing=2> <tr> <td width='35%' align='right' > Nombre</td> <td width='65%'> <input name='PERLinea1' type='text' size='35'></td> </tr> <tr> <td align='right' > Apellido</td> <td><input name='PERNombre' type='text' size='35'></td> </tr> <tr> <td align='right' >¿ Cómo prefiere que le tratemos?</td> <td><select name='PERLista8'> <option value=''>---</option>"; CajaLista('PERLista8'); echo "</select></td> </tr> <tr> <td align='right' >Email</td> <td><input name='PEREmail1' type='text' size='35'></td> </tr> <td align='right'>Si desea recibir información periódica de nuestro website, por favor seleccione las áreas de interés.</td> <td><p> <input type='hidden' name='PERLista3' value=''> <input type='checkbox' name='checkbox1' value='ON'> Estrategia de E-Business<br> <input type='hidden' name='PERLista4' value=''> <input type='checkbox' name='checkbox2' value='ON'> Sales Force Automation<br>
<input type='hidden' name='PERLista5' value=''>
<input type="checkbox" name="checkbox3" value="ON"> Customer Relationship Management <br>
<input type='hidden' name='PERLista6' value=''>
<input type="checkbox" name="checkbox4" value="ON"> Internet Marketing<br> </p></td> </tr> <tr> <td align='right'>Comentarios</td> <td><textarea name='PERBloque1' cols='50' rows='4'></textarea></td> </tr> </table> <p class=centrado><input name='submit' type='submit' value='Enviar'></p> </form> "; ?>


Explicación

Si este programa fuese llamado externamente, las dos grandes diferencias que tendría serían:

  1. Uso del tag: <input type='hidden' name='Perfil' value='Internet'>
  2. No estaría todo escrito dentro de un “echo”
  3. No se podría usar la rutina Cajalista y se escribiría esa parte como:
<td><select name="PERLista8">
   <option value="">---</option>
   <option value="Sr.">Sr.</option>
   <option value="Sra.">Sra.</option>
   <option value="Srta.">Srta.</option>
   <option value="Dr.">Dr.</option>
   <option value="Dra.">Dra.</option>
   <option value="Lic.">Lic.</option>
   <option value="Ing.">Ing.</option>
</select></td>

Enlaces en el mismo capítulo:

Enlaces otros capítulos: