| baseportal | ||
| Inicio | ||
| Documentación de baseportal |
| Introducción | ^^ |
Las bases de datos son usadas para extraer datos de ellas. Esto se hace comúnmente al hacer una lista telefónica o al usar un PC (el cual recopila los datos). Todo tipo de información puede ser considerado como un dato y cualquiera puede usarlos. Direcciones, productos de una compañía, resultados del basketball, entradas en un diario, notas de compras, etc.
Para poder usar esta información, esta debe estar ordenada. La manera más usual (y también la más práctica) de hacer esto es creando una tabla. Aquí tenemos por ejemplo una tabla con una lista de direcciones:
| Nombre | Calle | Ciudad |
|---|---|---|
| Roberto Millas | Avenida Drin. | Barcelona, 27105 |
| Nancy Douglas | National Blvd. | Seattle, 98198 |
| Jorge san Juan | Calle Rojas | Nueva México, 10016 |
| Tiffany Gray | Jim Bob Rd. | Bloomington, 47404 |
Los datos son organizados en filas y columnas. Un campo es una columna específica, ubicada en una fila específica. Obviamente, la primera fila es muy importante, porque da nombre a los campos, pero no constituye información en si.
Así tal cual, hago la pregunta: ¿Qué cosa en común tienen todos los datos? ¿Cómo podemos agrupar toda la información de manera inteligente?
Esto debe ser cuidadosamente pensado antes de contruir una base de datos: Antes de entrar cualquier dato debemos saber que tipo de datos vamos a recopilar.
Existen básicamente tres cosas que se pueden hacer con los datos:
La última aplicación es la razón más importante de porqué la gente usa bases de datos: Para un PC es un juego de niños dar a conocer datos de maneras muy diversas. Incluso si existieran miles de entradas donde el campo "Nombre" empiece con 'a' y el campo "Ciudad" sea 'Barcelona', el computador podrá encontrar la entrada correcta en muy poco tiempo.
baseportal provee una base de datos para ser usada en internet. Usted puede acceder a sus datos via internet desde cualquier parte del mundo o puede crear páginas web usando bases de datos. Las modificaciones, como las constantemente usadas en onlineshops, por ejemplo, pueden ser ejecutadas convenientemente con la interfaz de usuario de baseportal. Eso hace la edición complicada del código HTML obsoleta. Los tipos recurrentes de datos, como direcciones, pueden ser generados automáticamente en su sitio Web a través de baseportal. Usted especifica la forma que la salida debe tener para ser clasificada.
Para entender los conceptos de un apostador de la base de datos, vaya a Comienzo fácil y cree su primera base de datos de baseportal usted mismo.
| Páginas y tags | ^^ |
Las páginas de salida son páginas normales en las cuales, usted puede usar ciertas órdenes nuevas del código HTML, las cuáles son llamadas tags.
baseportal modifica las páginas antes de la salida y reemplaza ese tag por el contenido actual de una base de datos, por otra página o por los resultados de un cálculo.
Desde que estas páginas son utilizadas como modelos para una salida, son llamadas "páginas de salida" o templates (plantillas, en inglés).
Por ejemplo:
| <html></head><title>Puntajes más altos</title></head> <body bgcolor=ffffff> <h2>Puntajes más altos</h2> <include src=introduction> <do action=all> <center> <table width=90% border=1> <tr><td>Nombre</td><td>Puntaje</td> <loop sort=- range=0,10> <tr> <td><b>$Nombre</b></td> <td>$Puntaje</td> </tr> </loop> </table> </center> </body></html> |
Los tags negros son comandos HTML normales.
Rojo = Tags nuevos introducidos por baseportal.
Al igual que los tags estándar del HTML, los tags de baseportal comienzan con el signo 'menor que' < terminando con el signo 'mayor que' >. Algunos tags pueden ser usados por si mismos como: <include...> y otros encierran una área a la cual influencian. El fin de esta área debe ser marcado con el signo final, el cual, es igual al del comienzo, pero lleva un slash / antepuesto, como por ejemplo: <loop> ... </loop>. Da igual si usted usa mayúsculas o minúsculas en los tags.
Azul = Estos son los parámetros que influencian la ejecución de un comando.
Algunos tags requieren información adicional, llamados normalmente parámetros, para su correcta ejecución. Por ejemplo: requiere que se le inserte el nombre del archivo que va relacionado a la ejecución. Hay otros tags que no requieren parámetros, sin embargo, nos permiten usar algunos que cambian detalles acerca de la presentación de nuestros datos. Como, por ejemplo, el uso de técnicas diferentes de clasificación o para tener un color diferente de fondo. Los tags y parámetros son separados por un espacio. Los parámetros puestos en secuencia son mantenidos aparte de modo semejante. Atención: Las comillas son interpretadas como un elemento de una variable. No incluyen una variable como en el código HTML, entonces, es mejor no usar comillas...
Verde = Variables que serán reemplazadas por datos actuales.
Variables son simplemente "posicionadores" donde se insertará otro valor. Siempre comienzan (como en el lenguaje de programación Perl o PHP) con el signo de dólar $ . Hay una colección variada de variables especiales que contienen, por ejemplo, la cantidad de entradas leídas o el nombre de la base de datos de salida. Pero son, la mayoría de las veces, campos de una base de datos, y contienen el valor del conjunto de sus datos respectivos.
Muy a menudo, ciertos textos están repetidos en varias páginas HTML. En baseportal, usted no tiene que repetir todo en cada archivo nuevo. Usted puede almacenar textos que necesita en archivos separados. Cuando usted lo necesita, los pega en otras páginas. Cambiar archivos separados automáticamente afecta todo lo archivado por otras páginas.
Definición:
| <include src=Templatename[Parameter]> |
Por ejemplo:
La página de salida mipágina contiene lo siguiente:
| Aquí va la introducción:<p> <include src=head> Eso es... |
Una segunda página de salida cabecera en la misma dirección dice así:
| <b>bien me parece... </b><p> <i>...que estés navegando en mi página.</i><br> Muchas gracias a toda la gente que conozco<p> |
Si la página mipágina se accesa en este momento, aparecerá la siguiente salida:
| Aquí va la introducción: bien me parece... ...que estés navegando en mi página. Eso es... |
include es muy útil en menús que permanecen constantes en cada página. Las variables ofrecen la posibilidad de acondicionarlas de diversas formas.
Es posible encajar fácilmente otras páginas: Si un tercer archivo contiene el comando...
| <include src=mypage> |
...entonces todo el contenido se encajará en la posición indicada. Aun más, un cuarto archivo puede incluir al tercero y así... baseportal puede jugar con infinitos loops (Archivo 1 incluye al archivo 2, el archivo 2 incluye al archivo 3, el cual, incluye al archivo 1) y abortarlos también.
Cuando se hace referencia a páginas de salida ubicadas en otras direcciones, entonces necesitará especificar la ruta de acceso. Esto es posible en forma relativa...
| <include src=project2/finishing> |
...o en forma absoluta:
| <include src=/AxelS/menues/standard> |
incluye la página de salida standard en la dirección menues del usuario AxelS
El tag do ejecuta muchas funciones. Está controlado por una gran cantidad de parámetros. Por ejemplo, el parámetro language=de hace que el texto aparezce en alemán. Haga click aquí para ver la lista de todos los parámetros.
Definición:
| <do action=Command[Parameter]> |
Los valores posibles para Command son: input, list or all.
all hace un llamado a la totalidad de la base de datos, permite buscar entradas, checkear los permisos y si está permitido, mostrar los datos. Se puede controlar mediante múltiples parámetros.
Por ejemplo:
| Esta es mi lista de direcciones:<p> <do action=all db=direcciones sort=-Nombre border=1 datasize=4> |
Aquí, todas las entradas de la base de datos 'direcciones' serán mostradas en orden alfabético inverso, es decir, de la Z a la A. La tabla será normal y el texto será mostrado en tamaño 4.
| Esta es mi lista de direcciones:<p> <do action=all listfields=Nombre,Calle,Lugar keyfield=Lugar> |
En este caso, las entradas serán ordenadas de acuerdo a su Id (eso significa, el orden en el que han sido entradas a la base de datos). Aparecerán solamente los campos Nombre, Calle y Lugar y el link para acceder a la información restante será puesto sobre el campo Lugar.
Para aprender más parámetros, haga click aquí.
| <do action=input> |
Esto prosesa entradas del usuario acerca de añadir, modificar o eliminar entradas (si los permisos necesarios son dados). Si usted no usa este tag, entonces ninguno de los cambios se harán en la base de datos, incluso si ha llenado satisfactoriamente un formulario de entrada y tiene los permisos necesarios.
list se usa para controlar las salidas de las páginas de salida (templates) con mayor presición.
| <do action=list listtype=add db=usuario> |
Muestra el formulario de entrada para la base de datos usuario.
| <do action=list listtype=all db=usuario> |
Muestra todo el contenido de la base de datos 'usuario' (formulario, pestañas, búsqueda, contenido)
| <do action=list listtype=list db=usuario> |
Solo muestra la información contenida en la base de datos 'usuario'.
| <do action=list listtype=search db=usuario> |
Muestra el formulario de búsqueda de la base de datos usuario.
Se pueden usar varios parámetros dependiendo del tipo de lista.
Una página de salida pobre en diseño (como la provista por la función 'all'), podría verse así:
| <html><head><title>Lista de errores</title></head> <body> <do action=input> ¿Desea añadir algo? Siga adelante:<p> <do action=list listtype=add><p> <hr size=1><p> Las entradas:<p> <do action=list listtype=list databack=ffffff spacing=1 gridcolor=808080 dataface=arial datasize=2 listfields=Título,Autor,Fecha,Comentarios> </body></html> |
Una posible salida:
| ¿Desea añadir algo? Siga adelante: Las entradas:
|
Aunque <do action=all> o <do action=list> le provee un montón de características, en muchos casos usted probablemente no estará satisfecho con la forma de salida que está estandarizada. Si usted quiere definir la salida de los campos, entonces el comando loop le faculta a hacer eso. Recorrerá todas las entradas de una base de datos y proveerá todos los campos como las variables para cada columna.
Definición:
| <loop[Parameter]> ...[$Nombredelcampo]... </loop> |
Por ejemplo:
| <b>Últimas noticias:</b> <loop db=noticias sort=-> <h3><a href="$URL">$Título</a></h3> <ul>$Texto</ul> <i>por $Autor</i> <p> </loop> |
Este código podría ser parte de un sistema de redacción: loop recorre todas las entradas de la base de datos noticias. Como no se especificó un campo para ordenar los datos, la salida será ordenada en forma cronológica inversa, lo cual, puede verse por el singo menos después del signo igual en sort=-. Las últimas entradas serán puestas más arriba en la página, lo cual es muy deseable para un sistema de notiecias.
Las variables con un signo dolar por delante $ , corresponden en cada caso a un campo determinado en la base de datos (mucho cuidado con las mayúsculas y las minúsculas). Si una variable representa a un campo que no existe, entonces no se mostrará información en la posición indicada.
El acceso a campo como precio en $ o pregunta / respuesta es un poco más difícil, porque los nombres no pueden ser usados como variables. Dado los espacios y los caracteres especiales (como $, y / respectivamente) no es posible una llamada directa. Deberá hacerlo así:
| $_loop{"precio en $"} $_loop{"pregunta / respuesta"} |
Y aquí tenemos una posible salida de nuestra página de noticias:
| Últimas noticias: Madonna va a South Park
|
(Por favor, recuerde que esto es solo un ejemplo ;-) )
Esta es seguramente una de las propiedades más útiles de baseportal... ;-) ¿Qué pasa si usted nesesita manipular complejamente sus datos como cálculos, manipulación de texto, conticiones, o repeticioens? baseportal lo provee a usted con una fácil y bien establecida herramienta: lenguaje de programación PERL, el cual ofrece todo lo que usted necesitaría para programar en web e incluso más. Variables, vueltas, condiciones, funciones de texto muy elaboradas, etc.
baseportal extiende a PERL con nuevos comandos para el fácil acceso a bases de datos y mejor creación de páginas web.
Usar PERL en su página es bastante fácil:
Definición:
| <perl[Parameter]> ... </perl> |
Ejemplos:
| <b>Tabla de tiempos:</b><p> <perl> for($i=1; $i<=10; $i++) { out "$i * $i = ",$i*$i,"<br>"; } </perl> |
Si usted no tiene experiencia en programación hasta ahora, entonces esto puede ser un poco confuso, pero no se desespere: programar no es tan difícil como parece. El programa de arriba crea una serie del 1 al 10 y calcula el resultado.
Y así se verá:
| Tabla de tiempo: 1 x 1 = 1 2 x 2 = 4 3 x 3 = 9 4 x 4 = 16 5 x 5 = 25 6 x 6 = 36 7 x 7 = 49 8 x 8 = 64 9 x 9 = 81 10 x 10 = 100 |
Importante: Asegúrese de que la salida está marcada por out en vez de print, que es la manera de hacerlo de Perl. out reemplaza completamente la función de print. Usar print no está permitido y causará un error.
Para mostrar varias líneas al mismo tiempo use lo siguiente:
| out <<EOF; Puede escribir un montón de texto... También se pueden usar variables: $Text al igual que líneas vacías: <b>y, por supuesto, tags de HTML</b> y así... EOF |
Nótese el uso de dos signos 'menor que' << y el 'punto y coma' ; depués del EOF. el segundo EOF debe estar solo en una línea, sin 'punto y coma' detrás de él. Cualquier cosa entre ambos EOF's será parte de una salida, y las variables serán reemplazadas por su contenido.
Una guía más detallada del lenguaje de programación PERL excedería los límites de este archivo, sin embargo, le invitamos a que conozca los diversos manuales disponibles en internet y sus instrucciones.
| Búsqueda y llamados en bases de datos | ^^ |
Usted puede acceder a una amplia gama de posibilidades que ofrece baseportal a través de las URLs (direcciones de internet). De hecho, usted puede usar todos los parámetros disponibles en baseportal en sus URLs. Las páginas de salida tienen la prioridad en el llamado de una URL, vale decir, si ya insertó un parámetro en una página de salida, entonces este reemplazará a los insertados en una URL. Cuando ud. lo necesite puede campiar esta propiedad de las páginas de salida.
Definición:
| http://baseportal.com/baseportal[/usuario/ruta/template?Parámetro] |
Ejemplos:
| http://baseportal.com/baseportal |
Esta URL llamará a la página de ingreso al sistema. Preguntará por su nombre de usuario y su contraseña y si las inserta correctamente ingresará al sistema.
| http://baseportal.com/baseportal/JohnDoe/apuntes |
Esta URL llamará a la página de salida apuntes del usuario JohnDoe.
| http://baseportal.com/baseportal/JohnDoe/codigo/completo?db=/JohnDoe/proyecto1/canciones |
Esto hará una llamada a la página de salida completo que está ubicada en el directorio codigo del usuario JohnDoe. El nombre de la base de datos a usar es canciones y está ubicada en el directorio proyecto1.
Un parámetro escrito en una página de salida usualmente reemplaza a uno escrito en una URL. Si usted no desea que esto suceda, debe tipear un signo ^ antes del signo igual =. Esto funcionará para todos los parámetros.
| <do action=all db^=test> |
Esto hará que el template use la base de datos test si es que ninguna base de datos hubiera sido especificada en la URL.
Usted puede hacer llamados a bases de datos que incluyan búsquedas o filtros de cualquier forma. Por ejemplo: Llame todas las entradas donde el campo Nombre comience con la letra "a" , el campo suma sea menor que 100 y en el campo VIP haya una letra x - eso no es ningún problema...
Definición:
| <campo><operador><valor>[<conjugación>...] |
campo = el nombre de algún campo definido en la base de datos
operador = define el tipo de ajuste:
| Operador | Descripción |
|---|---|
| ~= | Busca por el principio de un valor; ignora mayúsculas y minúsculas |
| == | Busca por el valor exacto; ignora mayúsculas y minúsculas |
| ~=! | Busca por el principio de un valor; pone atención en mayúsculas y minúsculas |
| ==! | Busca por el valor exacto; pone atención en mayúsculas y minúsculas |
| < <= <> >= > | Busca por un valor menor que, menor o igual que, diferente que, igual o mayor que, mayor que otro; ignora las mayúsculas y minúsculas |
| ! >=! >! | Busca por un valor menor que, menor o igual que, diferente que, igual o mayor que, mayor que otro; pone atención a las mayúsculas y minúsculas |
| ~<= ~<> ~> | Busca por un valor menor o igual que, diferente que o mayor que el principio de otro valor; ignora las mayúsculas y minúsculas |
| ~<=! ~<>! ~>! | Busca por un valor menor o igual que, diferente que o mayor que el principio de otro valor; pone atención a las mayúsculas y minúsculas |
| ~< ~>= ~=! | Estos operadores son redundantes, porque son lo mismo que < >= =! |
valor = el valor de lo que ud. está buscando.
Algunos valores tienen significados especiales:
| Caracter | Descripción |
|---|---|
| * | Muestra todo. Todas las entradas serán mostradas en el orden del campo especificado. |
| # | Muestra la última entrada de un campo especificado, por ejemplo, con entradas como las letras ordenadas "a", "b", "c" , se mostraría la "c". |
| ? | Muestra una entrada al azar. Operadores posibles: ==, < y >. |
conjugación = Como unir diferentes partes en un resultado:
| Caracter | Conjugación | Descripción |
|---|---|---|
| & | AND | Solo las entradas que están en ambas partes. |
| | | OR | Todas las entradas que estén en una o ambas partes. |
| ° | NOT | Todas las entradas que están en una parte, pero no en la otra. |
Nótese: Solo pueden usarse compos para los cuales haya sido asignada una forma de orden en la definición de base de datos correspondiente.
Ejemplos:
| Nombre~=c |
Esto llamará a todas las entradas cuyo campo Nombre comience con "c" (sin importar minúsculas o mayúscula).
| Nombre==andrea |
Devuelve todas las entradas donde el campo Nombre contenga el nombre exacto andrea.
| Edad<30&Ciudad==!Barcelona |
Devuelve todas las entradas donde el campo Edad es menor que 30 y el campo Ciudad corresponda exactamente a Barcelona (Con B mayúscula y el resto minúscula).
| Profesión==Programador|Profesión==Administrador&Código_postal~=1 |
Devuelve todas las entradas donde el campo Profesión contenga el valor exacto "Programador" o "Administrador" y el campo Código_postal comience con "1".
| Título>=!d&Título<!k°Título~=!h |
Devuelve las entradas donde el campo Título comience con "d", "e", "f", "g", "i" or "j" en minúscula.
| Id==? |
Devuelve una entrada al azar.
Las búsquedas mencionadas anteriormente pueden ser fácilmente utilizadas en las URL:
| http://baseportal.com/baseportal/urxi/out1?db=test&Nombre>t&Calle~=santibañez+av |
Una página de salida llamada out1 del usuario urxi recibe todas las entradas de la base de datos test cuyo campo Nombre comience con "t" mayúscula y el campo Calle con el dato "santibañez av.". Nótese que un espacio ha sido reemplazado por un signo más + en una URL.
Las búsquedas descritas anteriormente también se pueden usar en los tags de baseportal:
| <do action=all Categoria==Thriller or Categoria==Romance not Idioma==Inglés and Disponibilidad==1> |
Esto devolverá todas las entradas donde el campo Categoria Contenga el valor "Thriller" o "Romance" y el campo Idioma no sea "Inglés" y el campo Disponibilidad sea igual a "1". Usted podría dejar fuera el "and", ya que es la conjugación estándar.
| <do action=all Companía==Sony Producto~=tv> |
Este código devolverá todas las entradas cuyo campo Companía sea "Sony" y cuyo campo Producto comience con "tv" .
Algunos problemas pueden aparecer cuando se ocupan caracteres que se utilizan en los comandos de búsqueda. Por ejemplo, el espacio que separa un parámetro de otro, o el signo 'mayor que'> que identifica el fin de un tag. Aun así, estos caracteres pueden ser usados al anteponer un slash invertido:
| <loop Nombre==Juan\ Zapata Edad\>21> |
Este código retornará todas las entradas cuyo campo Nombre sea "Juan Zapata" y cuya edad sea mayor que 21.
|
Definición:
| sort=[-]Campo[,[-]Campo...] |
Solo se pueden elegir los campos que están previamente definidos en la base de datos como ordenables. Cuidado con la diferencia entre ordenar texto y ordenar números:
| Número | Texto |
|---|---|
| 1 | 1 |
| 7 | 10 |
| 10 | 115 |
| 13 | 13 |
| 22 | 22 |
| 76 | 7 |
| 115 | 76 |
Analizando la tabla anterior se puede observar que el orden por texto sigue un patrón caracter a caracter. Al contrario, el orden por número visualiza el valor completo.
Ejemplo:
Al no definir condiciones en una búsqueda, todos los datos serán ordenados cronológicamente, de tal manera que el primer dato insertado será el primero en el orden. Si se condiciona la búsqueda, entonces el orden estará condicionado por el primer campo definido:
| <do action=all Nombre_familia~=ba> |
Este comando hará que se ordenen todas las entradas del campo Nombre_familia que comienzan con "ba" , por ejemplo: "Bahamondez", "Baker", "Basoalto", etc. Si el orden de las entradas debe ser según otro campo, se puede utilizar el comando sort.
| <loop Nombre_familia~=ba sort=Primer_nombre>$Nombre_familia, $Primer_nombre<br></loop> |
Esto devolverá todas las entradas donde el campo Nombre_familia comience con "ba" y será ordenado alfabéticamente según el campo Primer_nombre, por ejemplo: "Basoalto, Andrea", "Baker, Bill", "Bahamondez, Cristian", etc.
|
Si usted desea las entradas ordenadas de forma inversa, entonces todo lo que debe hacer es anteponer un signo menos - al campo:
Este código le devolverá todas las entradas que en el campo Nombre_familia comiencen con "ba" , pero en este caso ordenará las entradas por el campo Primer_nombre de la "Z" a la "A".
Si desea que el campo ya definido sea ordenado en forma inversa, es suficiente poner lo siguiente: "sort=-":
| <loop sort=->$Nombre_familia<br></loop> |
Esto devolverá las entradas de Nombre_familia en orden cronológico inverso.
También se puede utilizar esto en una búsqueda:
| <loop Nombre_familia~=b sort=->$Nombre_familia<br></loop> |
Esto retornará las entradas que comienzan con "b" en el campo Nombre_familia en orden alfabético inverso de esta forma: "Basoalta", "Baker", "Bahamondez", etc.
También se puede definir más de un campo para el ordenamiento. En este caso será ordenado el primer campo definido, luego el segundo, luego el tercero, etc.
| <loop Nombre_familia~=ba sort=Nombre_familia,Primer_nombre,-Edad> $Nombre_familia, $Primer_nombre ($Edad)<br> </loop> |
El anterior comando devolverá todas las salidas que en el campo Nombre_familia comienzan con "ba", ordenados primeramente por el campo Nombre_familia, luego por el Primer_nombre y luego por la Edad en sentido inverso.
Todos los ejemplos anteriores pueden ser usados en URLs así:
| http://baseportal.com/baseportal/tom/direcciones?Nombre_familia==*&sort=- |
Esto ordenará todas las entradas del campo Nombre_familia en sentido inverso, lo cual es más rápido que usr sort=-Nombre_familia)
Definición:
| range=[-]Comienzo[,Cantidad] |
Esto definirá cuantas entradas serán mostradas de una sola vez.
Ejemplos:
| <db action=all sort=- range=0,10> |
Esto exhibirá las 10 entradas más recientes, empezando por la más reciente.
| <db action=all Nombre_familia~=a range=5,4> |
Esto devolverá desde la quinta hasta la novena entrada que en el campo Nombre_familia comience con "a".
| <db action=all range=10> |
Esto mostrará las entradas a partir de la décima en adelante.
| <db action=all Nombre_familia==* sort=- range=-20,10> |
Esto devolverá 10 de las últimas 20 entradas ingresadas, ordenadas según el campo Nombre_familia en orden inverso.
Lo anterior puede ser usado en URLs también:
| http://baseportal.com/baseportal/tom/direcciones?Nombre_familia==*&range=-18 |
Esto devolverá las últimas 18 entradas ingresadas en el campo Nombre_familia.
| Programación | ^^ |
baseportal algunos comandos especiales para manipular bases de datos. Esto permite hacer llamadas, mover, cambiar o eliminar datos. Si estos comandos están habilitados en una página de salida solo se debe hacer el llamado correcto para acceder a los datos, independientemente de los derechos definidos en esa base de datos.
Definición:
| get búsqueda, base de datos, resultado; |
Todos los campos son opcionales. Si no se ingresa alguno de estos parámetros, se usará el implícito en la URL. Si no se define el nombre de la base de datos, entonces automáticamente se usará la base de datos con el mismo nombre de la página de salida.
Búsqueda corresponde a un llamado usando "loop", "do" o una URL y puede ser usado como comando o como llamado.
Base de datos indica el nombre de la base de datos a utilizar.
resultado significa la forma en la cual debe ser almacenado el resultado. Predeterminadamente se usa el nombre de la base de datos.
La primera entrada será guardada como variable con el nombre del campo.
Ejemplo:
| get "Númerocliente==32631", "direcciones"; out "Nombre_familia: $Nombre_familia, Ciudad: $Ciudad, Teléfono:$Teléfono"; |
Esto añade todas las entradas en la base de datos "direcciones" dónde el campo Númerocliente tenga el valor "32631", luego muestra dichos valores.
Con lo anterior es muy fácil crear bases de datos protegidas con contraseñas:
| get "Usuario==!$nombreusuario", "usuario"; if($Contraseña ne "" && $Contraseña eq $contraseñausuario) { # la salida de la base de datos actual # por ejemplo, con get_next (ver más abajo) } { out "Acceso denegado"; } |
Esto extraerá el valor Usuario desde la base de datos usuario correspondiente a $nombreusuario. El valor del campo Contraseña será comparado a $contraseñausuario (entrado a través de un formulario o una URL). Si ambos datos coinciden, se dará acceso a una base de datos. De no coincidir aparecerá el mensaje "Acceso denegado". Asegúrese de que la base de datos usuario no tenga permiso para otros usuarios.
Para extraer más valores necesitará otro código:
Definición:
| get_next resultado; |
Esto extraerá el siguiente registo de resultado y lo guardará en una variable con su respectivo nombre de campo. Si resultado no tiene entradas, entonces se usará la última base de datos modificada.
Ejemplo:
| get; while (get_next) { out "Nombre: $Nombre - Automóvil: $Auto<br>"; } |
Esto extraerá todas las entradas de la base de datos.
get y get_next se pueden interrelacionar:
| get "Id==*", "cliente"; while (get_next "cliente") { out "Cliente: $Nombre<br>"; get "Nombre==$Auto", "Automóviles"; out "Automóvil: $Nombre<br>" out "Descripción: $Descripción<p>"; } |
En el ejemplo anterior hay una relación creada entre las bases de datos cliente y Automóviles. Cada cliente contiene un valor en el campo Auto con el Automóvil que posee. Este valor será usado para llamar otra entrada en la base de datos Automóviles y exhibirá una descripción de dicho Automóvil.
También se pueden guardar muchas búsquedas en una base de datos. El parámetro resultado servirá para diferenciar estas consultas unas de otras:
| get "Nombre~=a", "cliente"; get "Nombre~=b", "cliente", "cwithb"; out "Todos los clientes con a:<p>"; while (get_next "cliente") { out "Cliente: $Nombre<br>"; } out "<hr>Todos los clientes con b:<p>"; while (get_next "cwithb") { out "Cliente: $Nombre<br>"; } Se mostrará primeramente todos los registros de clientes con a de la base de datos <c>cliente</c> y serán guardados bajo el mismo nombre. Luego, todos los registros que empiecen con "b" se guardarán en el resultado "cwithb". Finalmente, ambos registros serán mostrados con "get_next". <h2>put (guardado de registros nuevos)</h2> Añade nuevos registros a una base de datos. <b>Definición:</b> <codeparse> put <i>valores</i>, <i>base de datos</i>; </codeparse> Todos los parámetros son opcionales. Si no hay parámetros, éstos serán extraidos de una URL o de un formulario. <i>valores</i> Hace un índice de los valores en forma ordenada para ser expuestos en diversas formas. <i>base de datos</i> indica el nombre de la base de datos. <b>Ejemplos:</b> <code> put ["Nombre", "Gustavo", "Auto", "BMW"], "cliente"; |
Esto crea una nueva entrada (registro) en la base de datos cliente. "Gustavo" será insertado en el campo Nombre y "BMW" será insertado en el campo Auto. El orden de los datos expresa la forma en que serán guardados. No es necesario que se rellenen todos los campos disponibles (como en un casillero en blanco de un formulario). En todo caso, no importa el orden en el que se inserten los campos (también se podría haber entrado primero el campo Auto y luego Nombre).
También es posible añadir muchos registros de una vez simplemente repitiendo el nombre de un campo que ya esté definido:
| put ["Nombre", "Gustavo", "Auto", "BMW", "Nombre", "Enrique", "Auto", "Volkswagen Golf"], "cliente"; |
Esto creará dos nuevas entradas en la base de datos cliente. Específicamente una bajo el nombre "Gustavo" y el auto "BMW" y la siguiente entrada con el nombre "Enrique" y el auto "Volkswagen Golf".
Por algunas razones, esta modalidad no es muy conveniente cuando se trabajan muchos datos: Primero, podría inducir a errores si siempre se dejan campos en blanco, y segundo, los nombres de los campos deben repetirse contínuamente. Es mejor usar lo siguiente:
| put { Nombre = > ["Enrique", "Tomás", "Gloria"], Auto = > ["Mercedes", indefinido, "Ford"] }, "cliente"; |
Esto creará tres nuevos registros en la base de datos cliente: la primera entrada bajo el nombre de "Enrique", auto "Mercedes", la segunda entrada bajo "Tomás", el cual omitió el campo auto y la última bajo el nombre "Gloria" con el auto "Ford".
Este comando modifica datos que ya están ingresados en la base de datos.
Definición:
| mod búsqueda, valor, base de datos |
Todos los espacios son opcionales. De no haber parámetros, se tomarán de un formulario o de una URL.
búsqueda corresponde a una búsqueda hecha con los comandos "get", "loop", o "do".
valor guarda los registros en forma ordenada y hace la correspondencia con el parámetro "put".
base de datos indica el nombre de la base de datos.
Ejemplos:
| mod "Nombre==!Enrique", ["Nombre", "Esteban", "Auto", "Honda"], "cliente"; |
Esto hará que la entrada bajo el nombre "Enrique" (en forma exacta) en la base de datos cliente se modifique de la siguiente forma: El campo Nombre cambiará su valor actual al de "Esteban" y el campo "Auto" cambiará a "Honda". Si la búsqueda no encuentra resultados (por ejemplo, si el cliente "Enrique" no existe), entonces no se cambiará nada.
Los campos no mencionados quedarán iguales:
| mod "Name==!Gloria", ["Auto", "Golf"], "cliente"; |
Esto cambiara el campo "Auto" a "Golf" bajo el nombre de "Gloria" en la base de datos cliente. El nombre "Gloria" queda igual.
Para cambiar el valor de un campo a "sin información", deberá escribirse un apartado vacío:
| mod "Nombre==!Gloria", ["Auto", ""], "cliente"; |
Esto hará que se borre la información del campo Auto de la entrada bajo el nombre "Gloria" en la base de datos cliente.
Se pueden hacer muchos cambios simultáneamente:
| mod "Id==3 or Id==4 or Id==7", {Nombre = > [ "Frank", "Tomás", "Carla"], Auto = > ["Mercedes", "Chrysler", "Toyota" ] }, "cliente"; |
Estó cambiará las entradas con los Id 3, 4, y 7 de la base de datos cliente. La entrada con el Id 3 cambiará al nombre="Frank" y Auto="Mercedes", la entrada con el Id 4 será cabiada a "Tomás" y Auto="Chrysler" y así. Nótese el uso de la conjugación or.
Cuando aparecen más de una entrada como resultado de la búsqueda, los valores se repetirán:
mod "Nombre~=s", ["Auto", "BMW"], "cliente";
Esto modificará el campo Auto a "BMW" de todas las entradas cuyo campo Nombre comience con "s".
Elimina entradas o datos en una base de datos.
Definición:
| del búsqueda, base de datos |
Los espacios son opcionales. Si se ingresan parámetros, éstos serán tomados de un formulario o de una URL.
búsqueda corresponde a una búsqueda realizada con "get", "mod", "loop", o "do".
base de datos indica el nombre de la base de datos.
Ejemplos:
| del "Nombre==!Enrique", "cliente"; |
Esto eliminará la entrada "Enrique" de la base de datos cliente. Si esta entrada no existe, entonces no sucederá nada.
Se pueden eliminar muchas entradas al mismo tiempo:
| del "Edad<18", "cliente"; |
Esto eliminará todas las entradas de la base de datos cliente donde el campo Edad en inferior a 18.
do_all genera la misma salida que el tag <do action=all>. Los parámetros pueden igualmente ser ingresados a través de URLs o formularios.
Definición:
| do_all parámetro, valores; |
Ejemplos:
| do_all "db=direcciones maxlistlength=100", "username=sepp", "password"; |
Esto hará una salida de todas las entradas de la base de datos direcciones. La longitud de la salida estará limitada a 100 caracteres. El parámetro username con el nombre "sepp" será pedido igual que el parámetro "password".
También se puede usar programación PERL dentro del tag loop.
Definición:
| <loop code=perl [parámetro]> ... </loop> |
Ejemplo:
| <b>Todo en mayúsculas. . . </b><p> <loop code=perl> out "Número: ",++$cnt, "<br>"; out "Nombre: ",uc ($Nombre), "<br>"; out "Calle: ",uc ($Calle), "<br>"; out "Ciudad: ",uc ($Ciudad), "<p>"; </loop> |
El código loop ejecuta las entradas en la base de datos. El contenido de cada variable será tomado del respectivo campo. Además estamos usando una variable de conteo $cnt que aparecerá ante cada salida como un número consecutivo. La función uc() cambia todos los caracteres a mayúsculas.
Esta sería una posible salida:
| Todo en mayúsculas... Número: 1 Nombre: CHRISTINA CABALLERO Calle: AV. LARRAIN 49 Ciudad: Nueva México Número: 2 Nombre: PEDRO CABELLO Calle: LA MANZANA 103 Ciudad: SANTIAGO Número: 3 Nombre: GLORIA MUÑOZ Calle: LAS ALCÁNTARAS 92 Ciudad: LA PAZ |
En baseportal se debe poder manipular un montón de caracteres especiales que provienen de diferentes lenguajes y estándares y se deben poder compatibilizar. Como ejemplo, un "<" en HTML significa "<" y una palabra entre comillas "....", debe estar circunscrita por """.
En las URLs uno debe usar caracteres muy diferentes para otros usos. No deben haber especios, en vez de eso hay que usar un signo más "+". Pero, ¿qué indica un signo más? Luego, puede escribir: %2b. Pero ahora el signo "%" tiene un significado especial y deberá ser codificado como %25.
Perl o Javascript tienen diferentes usos para los mismos caracteres.
Por esta razón, baseportal ha creado una serie de rutina de conversión:
| Comando | Descripción |
|---|---|
| convert_br | Convierte un "cambio le línea" en HTML <br> |
| convert_html | Cambia &, ", <, > en sus contrapartes de HTML &, ", <, > |
| convert_quote | Cambia comillas ", apóstrofes ' y slash invertido \ en ", \', and \\ |
| convert_url | Cambia %, \, |, &, ", + en el código %xx respectivo y el espacio por un signo más + |
Ejemplo:
| <do action=input> <loop code=perl> out convert_html($Nombre)." - " ; out '<a href="/baseportal/nombre/pagina&cmd=del&Id=$_id" onclick="return confirm (\'Eliminar definitivamente '.convert_quote($Nombre).'\')">¿Eliminar?</a>'; out "<p>"; </loop> |
Quita cualquier código HTML en el campo Nombre y hace una salida preguntando "¿Eliminar?" que es un link. Cuando haga click en el link aparecerá un mensaje preguntando si definitivamente desea eliminar el registro. Si el link contiene apóstrofes, estos serán cambiados de manera que no habrá errores con el Javascript.
| Fecha y hora | ^^ |
Un par de milenios de cultura han dejado su huella: Sin embargo no se nota tanto, ya que nos hemos acostumbrado a ella. El uso de fecha y tiempo es una cosa complicada. baseportal intenta hacer sentir al usuario de que está lejos de esta complejidad, pero al mismo tiempo, con todas las opciones posibles abiertas.
Una búsqueda por fecha se puede hacer de dos formas: buscando fragmentos o buscando completamente.
Debe haber un subguión _ justo al comienzo antes del nombre del campo y del fragmento de la fecha (día, mes, año, etc.):
| _date_year==2000 |
Esta forma de búsqueda se puede usar para consultar a través de un formulario. Aquí hay dos ejemplos, uno como búsqueda con menú emergente...
| <form action="/baseportal/nombre/pagina" method="post" enctype="multipart/form-data"> <select nombre="_cumpleaños_año~="><option>1960<option>1961<option>1962<option>1963...etc.</select> <select nombre="_cumpleaños_mes~="><option>1<option>2<option>3<option>4...etc.</select> <select nombre="_cumpleaños_día~="><option>1<option>2<option>3<option>4...etc.</select> </form> |
... o como una búsqueda con texto:
| <form action="/nombre/pagina" method="post" enctype="multipart/form-data"> Día: <input type=text name"_cumpleaños_día~="> Mes: <input type=text name"_cumpleaños_mes~="> Año: <input type=text name"_cumpleaños_año~="> </form> |
Si usted desea controlar la búsqueda usando un "loop", un "get" o una URL, este tipo de entrada es más amigable:
| Date==1.3.2000,20:15 |
baseportal puede reconoces la diferencia entre las entradas. Aquí hay algunos ejemplos:
| Fecha | Mes | Día | Año | Hora | Minuto | Segundo |
|---|---|---|---|---|---|---|
| 1 Junio 2002, 23:45.09 | 6 (Junio) | 1 | 2002 | 23 | 45 | 09 |
| 1 Diciembre 2002, 23:45 | 12 (Diciembre) | 1 | 2002 | 23 | 45 | |
| 06.01.02, 1:00 | 6 (Junio) | 1 | 2002 | 01 | 00 | |
| Mar.5.2000 | 3 (Marzo) | 5 | 2000 | |||
| Marzo 2.01 | 3 (Marzo) | 2 | 2001 | |||
| 12:57 | 12 | 57 | ||||
| AGOSTO.2005 | 8 (AGOSTO) | 2005 | ||||
| 3.7 | 3 (Marzo) | 7 | ||||
| nov. | 11 (Noviembre) | |||||
| 10 | 10 |
La puntuación entremedio es muy importante: El punto "." (que separa el día, mes y año), la coma "," (que separa la fecha de la hora), y el doblepunto ":" (que separa la hora de los minutos).
Los operadores ~= y == tienen el mismo significado.
El signo < trabaja de la misma forma como uno esperaría. El signo >, sin embargo, trabaja de forma diferente a como uno imaginaría: La búsqueda...
| Fecha>2000 |
...no significa todas las entradas después del 2000 serán mostradas, sino que solo aquellas hechas durante el primer segundo del año 2000. Para hacer un llamado a todas las entradas a partir del año 2000 se debe hacer lo siguiente:
| Fecha>=2001 |
Con la palabra "now" se puede hacer llamadas a las entradas actuales.
| Fecha>now |
Encontrará todas las entradas con fechas futuras.
Comenzando por la fecha actual, usted puede buscar puntos en el tiempo pasado o en el futuro:
| Fecha>-14 |
Encuentra todas las entradas que tienen por lo menos 14 días de antigüedad.
| Fecha<+24:00 |
Encuentra todas las entradas que serán en 24 horas o más.
Aquí también baseportal reconoce una serie de entradas diferentes:
| Llamada | Descripción |
|---|---|
| -7,3:13.11 | 7 días, 3 horas, 12 minutos, y 11 segundos en el pasado |
| +100 | 100 días en el futuro |
| -14:00 | 14 horas en el pasado |
| +.3153600 | 31536000 segundos en el futuro (=365 días) |
Nuevamente los caracteres que separan las entradas son muy importantes: El punto "." (Separa minutos y segundos), la coma "," (separa días y horas) y el doblepunto ":" (separa horas y minutos).
Adevertencia: Cuando haga una búsqueda que incorpore un signo más "+" en una URL, debe ser reemplazado usando %2b, porque "+" en URLs aparece como espacios en blanco. Una búsqueda completa usando URL podría verse así:
| http://baseportal.com/baseportal/nombre/pagina&fecha>-10&fecha<%2b10 |
No se pueden realizar búsquedas en la parte media de una fecha, porque no se puede ordenar dicha información. El orden es:
| Año.Mes.Día,Hora:Minuto.Segundo |
En otras palabras, uno no puede ingresar un mes así no más, como Junio, y recibir todas las entradas con Junio independiente del año en un campo de fecha "normal". Un llamado como...
| Fecha~=June |
... es posible, pero solo devolverá las entradas de Junio del año presente.
Estas limitaciones pueden ser superadas usando formatos personalizados.
Se puede usar un formato personalizado para la definición de un campo de fecha. Se puede hacer el siguiente estamento:
| Estamento | Descripción |
|---|---|
| Día | Día del mes (1 a 31) |
| Mes | Mes como un múmero (1 a 12) |
| NombreMes | Nombre del mes (Enero a Diciembre) |
| NombreMesCorto | Nombre del mes abreviado (Ene a Dic) |
| Año | Año de 4 dígitos (1920 a 2019) |
| Año2 | Año de 2 dígitos (00 a 19) |
| Hora | Hora (00 a 23) |
| Minuto | Minuto (00 a 59) |
| Segundo | Segundo (00 a 59) |
Todos los demás caracteres se mostrarán sin modificaciones. El formato...
| Día / NombreMes |
... lleva a los siguientes dos menús cuando se entran datos o se buscan puntos en el tiempo:
Pero existe otro significado: como el año no está incluido en el formato de entrada, entonces una entrada puede ser buscada por mes:
| Cumpleaños~=Abril |
Nos dará todas las entradas con cumpleaños en Abril.
|
Así como en el formato de entrada, usted también puede definir el formato de salida de las fechas. La siguiente entrada es posible:
| Entrada | Significado |
|---|---|
| Díasemana | Días de la semana (Lunes a Domingo) |
| DíasemanaCorto | Días de la semana abreviados (Lun a Dom) |
| DíasemanaNúmero | Días de la semana con números (1 a 7) |
| Día | Día del mes (1 a 31) |
| Día0 | Día del mes antecedido por un cero (01 a 31) |
| Mes | Mes como número (1 a 12) |
| Mes0 | Mes antecedido por un cero (01 a 12) |
| NombreMes | Nombre del mes (Enero a Diciembre) |
| NombreMesCorto | Nombre del mes abreviado (Ene a Dic) |
| Año | Año de 4 dígitos (1920 a 2019) |
| Año2 | Año de 2 dígitos (00 a 19) |
| Hora | Hora (00 a 23) |
| Hora1 | Hora sin cero antepuesto (0 a 23) |
| Hora12 | Hora „análoga" (1 a 12) |
| Hora012 | Hora „análoga" con un cero antepuesto (01 a 12) |
| Minuto | Minuto (00 a 59) |
| Minuto1 | Minuto sin cero antepuesto (0 a 59) |
| Segundo | Segundo (00 a 59) |
| Segundo1 | Segundo sin un cero antepuesto (0 a 59) |
Los demás caracteres serán mostrados sin cambios. El formato...
| NombreMes Día0, Año (Díasemana) |
... llevará a la siguiente salida:
| Diciembre 06, 2000 (Día de semana) |
Para guardar datos que contienen fechas, se puede utilizar los mismos procedimientos que en las búsquedas. Se pueden entrar filas de fechas con formato personalizado:
| put ["_fecha_año", "2000", "_fecha_mes", "Agosto"]; |
Este tipo de asignación está orintado a poder ingresar datos desde un formulario:
| <form action="/baseportal/htx=/nombre?pagina&cmd=add" method="post" enctype="multipart/form-data"> <select name="_Año-Cumpleaños:="> <option>1960<option>1961<option>1962<option>1963...etc.</select> <select name="_Mes-Cumpleaños:="> <option>1<option>2<option>3<option>4...etc.</select> <select name="_Día-Cumpleaños:="> <option>1<option>2<option>3<option>4...etc.</select> </form> |
O entrar la fecha completa de una vez:
| put "Fecha:=2002-07-01"; |
Para guardar la fecha actual, deberá usar el valor auxiliar "now":
| put "Fecha:=now"; |
También se pueden usar los formatos de fecha en programación. baseportal ofrece una subrutina llamada date:
| Date (Punto en el timepo, Formato); |
El Punto en el timepo puede ser: a) definido en una llamada, b) puede ser mostrado en segundos desde el punto 1.1.1970 (número > 1000000), c) ocupando "now" para la fecha actual, o d) puede ser un valor extraído de una base de datos.
El formato es compatible con la entrada de una definición de formato personalizado. La línea...
| out date("2000-02-01", "Díasemana, Día. NombreMes.Año"); |
...mostrará lo siguiente:
| Martes, 1. Febrero.2000 |
Algunos formatos comunes pueden ser ingresados con nombres únicos:
| Salida | formato |
|---|---|
| sin entrada | Día.Mes.Año, Hora:Minuto |
| largo | Díasemana, Día.NombreMes.Año, Hora:Minuto |
| corto | Día.Mes.Año2, Hora:Minuto |
| interno | Año.Mes0.Día0,Hora:Minuto.Segundo#NúmeroDíasemana |
Aquí, la entrada "now" también puede ser usada para la fecha actual...
| out date("now", "largo"); |
...que da el siguiente resultado
| Viernes, 8. Diciembre.2000, 17:03 |
Una entrada relativa puede ser expresada de la siguiente forma:
| out date ("+10"); |
...muestra la fecha en 10 días más en forma estándar: Día.Mes.Año, Hora:Minuto.
Si desea mostrar una salida de una base de datos en un formato diferente, configure una variable donde pueda guardar una fecha, para luego usarla en Punto en el timpo:
| out date($Fecha, "corto"); |
En este ejemplo la fecha viene del campo "Fecha" de una base de datos. La salida será Día.Mes.Año2, Hora:Minuto
Si usted desea comparar fechas en una base de datos con la fecha actual puede ser logrado gracias al comando:
| if($Fecha lt date ("now", "interno")) { ... } |
La fecha guardada viene del campo Fecha y sebería ser menor a la fecha actual. Como la fecha actual en el campo $Fecha es sin formato, si usted lo incorpora con el comando get, entonces el formato también debera ser 'interno'.
Las fechas solo pueden ser comparadas usando comparación de texto.
También se puede usar while... con 'loop' en PERL para la comparación de fechas. Ya que loop convierte a $Fecha en el formato derecho automáticamente, el código %_raw debe ser usado en orden favorecer una comparación.
| <loop code=perl> if($_raw(date) lt date ("now", "interno")) { ... } </loop> |
| Misceláneo | ^^ |
En cada lenguaje de programación hay ciertos caracteres que tienen significados especiales. En este documento ya hemos dado a conocer el signo $ - que no se muesra como es, pero se antepone a las variables.
Pero, ¿qué pasa si además de poner el contenido de la variable test, usted desea mostrar $test, que signifique el signo $ seguido de la variable test? Será necesario "cubrir" el signo $, para que sea mostrado en su forma normal. Como todo en PERL, esto está dispuesto con el signo \, también conocido como slash invertido, o el signo escape:
| Valor de \$test:$test |
Asumiendo que la variable $test contien el texo "Hola", entonces se escribirá los siguiente:
| Valor de $test: Hello |
A veces otros caracteres tienen valores especiales como por ejemplo un espacio. Si usa el tag...
| <do action=all Nombre~=a listfields=Nombre,Calle> |
el espacio actuará como una separación entre los parámetros. Ahora, si usted necesita usar un campo que tiene espacios entremedio, el caracter \ puede servirle:
| <do action=all Nombre\ o\ firma~=a listfields=Nombre\ o\ firma,Calle> |
Variables son 'posicionadores' para los valores y son usados en muchos lenguajes de programación. Las variables simples comienzan con un $ y siguen con una palabra que debe empezar con un letra y luego letras o números o subguión (Po ejemplo: $texto, $mi_nombre, $urx_123). El contenido de las variables puede ser tal extenso como se desee, y consiste de texo, números o cualquier otro caracter disponible.
Los parámetros ingresados a trvés de una URL o un tag de baseportal son accesibles como variables automáticamente.
Ejemplos:
| <perl> out "Counter: $cnt<p>"; $cnt++; out '<a href="/cgi-bin/baseportal.pl?htx=/counter&cnt='.$cnt.'">continuar</a>'; </perl> |
Este código funciona como un contador. Cada click en continuar eleva el número en una unidad. Esto ocurre porque la variable $cnt, cuyo valor esta basado en URLs, es accesible desde cualquier página de salida.
Usar variables es una inteligente manera de adaptar textos individuales o bloques de códigos:
| <font face=arial,helvetica color=red size=4><b>$texto</b></font> |
La variable $texto será sustituída por el valor actual. Asumiendo que las líneas anteriores están guardadas en la página de salida Título, entonces incluir esta página en otro lugar usando
| <include src=título texto=introducción> |
... llevará a la siguiente salida:
| Introducción |
baseportal ofrece una serie de variables especiales. Estas siempre comienzan con un subguión _. Sin embargo, también es posible usar variables propias con un subguión al comienzo.
Búsqueda en base de datos
| Nombre | Descripción |
|---|---|
| $_db | Nombre de la última base de datos usada |
| $_range | Comienzo del rango de la salida |
| $_range_length | Número de entradas de la salida |
| $_amount | Número de entradas hasta la última vez que se ingresaron datos |
| $_amount_query | Número de registros que fueron ingresados la última vez sin rango |
| $_amount_all | Número de todos los registros existentes en la última base de datos usada |
Parametros y valores de salida
| Nombre | Descripción |
|---|---|
| %_cgi | Valores transferidos con CGI (GET o POST) usando "=" (por ejemplo, Color=rojo) |
| %_get | Valores usados en tags, transferido con CGI o usados en un llamado de base de datos (por ejemplo, Color=rojo) |
| %_sel | Valores de un llamado (por ejemplo, Nombre==a) |
| %_put | Valores a ser escritos (por ejemplo, Nombre:=Enrique) |
Con los parámetros asociados %_cgi y %_get se pueden llamar parámetros que no son accesibles con variables normales, porque contienen caracteres inválidos (por ejemplo, espacios, caracteres especiales, etc.) o porque han sido sobreescritos por otras variables. Ejemplos: $_get{"mi nombre"}; $cgi{"12345"};
Diseño:
| Parámetro | Descripción | Predeterminado |
|---|---|---|
| border=<número> | Grosor del borde de una tabla | 0 |
| gridcolor=<color>/- | Color de la malla de una tabla | f0f0f0 (use - para eliminar el valor predeterminado) |
| padding=<número> | Distancia del contenido de una tabla : borde | 4 |
| spacing=<number> | Grosor de la malla de la tabla | 2 |
| dataface=<fuente> | Fuente de texto de los datos | |
| datacolor=<color> | Color de texto de los datos | |
| datasize=<número> | Tamaño de texto de los datos | |
| databack=<color> | Color de fondo del campo de datos | d0d0d0 (use - para eliminar el valor predeterminado) |
| dataalign=left/middle/right | Alineación del campo de datos | |
| headface=<fuente> | Fuente de texto de la cabecera de la tabla | valor de dataface |
| headcolor=<color> | Color del texto de la cabecera de la tabla | valor de datacolor |
| headsize=<número> | Tamaño del texto de la cabecera | valor de datasize |
| headback=<color> | Color de fondo de la cabecera | d0d0f0 (use - para eliminar el valor predeterminado) |
| headalign=left/middle/right | Alineación de la cabecera de la tabla |
sort y range:
| Parámetro | Descripción |
|---|---|
| <campo>==* | Ordena de acuerdo a un campo |
| sort=- | Orden inverso |
| sort=<(-)campo1,(-)campo2,...> | Odena de acuerdo al campo1, luego al campo2... (- = orden inverso) |
| showsort=<campo1,campo2,.../*> | Campos con link para ordenar (*=todos los campos que estén ordenados) |
| range=(-)<inicio>(,<número>) | Desde el inicio (cuando use - se invirte el orden), hasta este valor (o hasta el final si se omite el número) |
Navegación:
| Parámetro | Descripción |
|---|---|
| showamount=no/all/sel/all,sel | Número de entradas mostradas: no mostrar / total sin selección / de una selección / muestra el total de la selección |
| selectbrowse=no/top/bottom | (Todo, Nuevo, Detalle, ...) No / Arriba / Abajo / Arriba y abajo |
| buttonbrowse=no/top/bottom | (>, >>...) No / Arriba / Abajo / Arriba y abajo |
| pagebrowse=no/(0)top/bottom/top,bottom | (1, 21, etc.) con barra de menú / (0 en el comienzo=inicar barra de menu con 0), barra de menu arriba / barra de menu abajo / arriba y abajo |
| indexfield=<campo> | Sin barra de menu para los campos / de acuerdo al campo (si es una campo de opción, use los valores y si no es, entonces: a,b,c,...z) |
| indexbrowse=no/top/bottom |
Salida:
| Parámetro | Descripción |
|---|---|
| listfields=<(-)campo1,campo2,campo3..>/#<número> | Campos que deben aparecer el el orden especificado. Usando - se refiere a los campos que no deben aparecer #<número>=número máximo de campos |
| allfields=<(-)campo1,campo2,campo3..>/#<número> | Campos que deben aparecer en el orden indicado. Usando - se refiere a los que no deben aparecer #<número>=número máximo de campos |
| formfields=<(-)campo1,campo2,campo3..>/#<número> | Campos que deben aparecer en el orden especificado por una entrada de formulario #<número>=número máximo de campos |
| searchfields=<(-)campo1,campo2,campo3..>/#<número> | Campos que deben aparecer en el orden indicado en un formulario de búsqueda #<número>=número máximo de campos |
| keyfields=<campo> | Campo que contendrá un link para el detalle de la entrada (predeterminado=primer campo) |
| listtype=list/all/add/search | Tipo de salida |
| tdparam=<código-html> | Suplemento de las celdas de las tablas <td> (por ejemplo, con "nowrap") |
| detail=no/link/linktop/linkbottom/top/bottom | Salida del detalle: Sin/Después de link solo,arriba,abajo/Arriba/Abajo |
| search=no/link/linktop/linkbottom/top/bottom | Salida de la búsqueda: Sin/Después de link solo,arriba,abajo/Arriba/Abajo |
| input=no/link/linktop/linkbottom/top/bottom | Formulario de entrada: Sin/Después de link solo,arriba,abajo/Arriba/Abajo |
| maxlistlength=0/<número> | Máximo del largo del texto de salida. Los saltos de renglón no se omiten. 0=no omitir saltos de renglón, largo ilimitado |
| convert_br=<campo1,campo2...>/- | Campos en los cuales, los saltos de renglón son convertidos a <br> -=Ningún campo |
| convert_html=<campo1,campo2...>/* | Campos en los caules, los códigos HTML son convertidos en sus respectivos sustitutos *=Todos los campos |
| convert_quote=<campo1,campo2...>/* | Campos en los cuales, las los signos ", ' y \ son convertidos. *=Todos los campos |
| convert_html=<campo1,campo2...>/* | Campos que son convertido para una llamada de URL *=Todos los campo |
| language=es/en/de/fr/pl/it/tr/el/no/ja/ko/zh/id/sr/ca | Muestra el texto en Español, Inglés, Alemán, Francés, Polaco, Italiano, Turco, Griego, Noruego, Japonés, Coreano, Chino, Indonesio, Serbian, Catalan (predeterminadamente en Español) |
Llamadas:
| Parámetro | Descripción |
|---|---|
| db=<base de datos> | Base de datos a trabajar |
| htx=<página de salida> | Página de salida |
| Ejemplos: | ^^ |
En algunos casos especiales es necesario tener los formularios de baseportal disponibles en la página principal (por ejemplo, para un sistema de votación). Para los datos que desee llamar use los nombres de los campos definidos en la base de datos. Se puede usar el siguiente estilo. Observe el caracter := después del nombre del campo. Los campos ocultos (hidden) son absolutamente necesarios, de manera que los navegadores puedan acceder a ellos.
| <form action="/baseportal/SuNombre/Directorio/Template" method="post" enctype="multipart/form-data"> <input type="hidden" name="cmd=" value="add"> <input type="hidden" name="htx=" value="/SuNombre/Directorio/Template"> |
Ahora use los nombres de los campos dependiendo de la base de datos:
| Por favor, ingrese su nombre: <input type="text" name="nombre:="><p> Por favor ingrese su apellido: <input type="text" name="apellido:="><p> <input type="submit" value="enviar"> </form> |
Ahora los datos serán enviados a la página de salida (template) para ser guardado en la base de datos. Se debe usar
| <do action=input> |
Ejemplo:
| <html> <head></head> <body> <do action=input> <p>Gracias por su entrada...</p> <body> </html> |
Si deben mostrarse todas las entradas, entonces debe usar:
| <html> <head></head> <body> <do action=input> <do action=list listtype=list> <body> </html> |
Cuando ha creado una página de salida ud. mismo (sin usar <do action=all...), y controla el número de registros a mostrar con range=x,y, necesitará links para navegar a las siguientes páginas que contengan los demás registros.
Inserte este código en su página de salida:
| <perl> mi $NuevoRango=$_range+$_range_length; mi $AnteriorRango=$_range-$_range_length; $AnteriorRango=0 if $AnteriorRango<0 && $AnteriorRango>-$_range_length; out "<< <a href=\"$_link&range=$AnteriorRango,$_range_length\">Atrás</a> " if $AnteriorRango>=0; out "<a href=\"$_link&range=$NuevoRango,$_range_length\">Siguiente</a> >>" if $NuevoRango<$_amount_query; </perl> |
Dependiendo del número actual de entradas mostradas, aparecerá lo siguiente:
Para tener una mejor presentación de los registros en una lista, es una buena idea cambiar los colores de fondo en cada línea. Aquí usaremos el contador interno 17.
| <table cellpadding=2 border=1 cellspacing=0> <tr><td><b>Nombre</b></td><td><b>Edad</b></td></tr> <loop code=perl> if($_loop % 2==0) { out '<tr bgcolor="#a0a0a0">'; } else { out '<tr bgcolor="#e0e0e0">'; } out "<td>$Nombre</td><td>$Edad</td></tr>"; </loop> </table> |
Este código llevará a la siguiente salida:
| Nombre | Edad |
| Bill Gates | 45? |
| Madonna | Demasiado vieja |
| Liz Taylor | No responde |
| Britney Spears | 18 |
Muchas veces es importante conoceer el número exacto de registros en una base de datos. Solo deberá insertar una línea de código PERL para poder usar la variable $_amount_all:
| <perl> init "dbname"; </perl> En esta base de datos hay $_amount_all entradas. |
Solo deberá cambiar dbname al nombre de su base de datos.
| © es.baseportal.com. Todos los derechos reservados. Términos de uso |