Estimado visitante:
Si has llegado aqui, es porque te interesa gambas, un basic visual para gnu/linux.
He dado prioridad a realizar un blog donde se exponga desde cero el uso de gambas3 y como programar con el.
Este es el enlace:
http://cursogambas.blogspot.com.es/
Cuando este el curso terminado, continuare con este blog sobre como desarrollar una aplicación de listin telefónico con gambas3 .
Saludos
miércoles, 7 de noviembre de 2012
martes, 1 de mayo de 2012
05 Código Fuente y Direcciones web.
Páginas Webs Relacionadas:
Post en el foro de gambas-es.org:
Post explicando la instalación de apache2 y mysql:
Videos en YouTube:
01 Introduccion. Instalación servidor apache2
Manual Paso a Paso:
Como empezar a Realizar Páginas Web dinámicas con Gambas
(Para
gambas 2.xx y 3.1)
Redactado
por Julio Sánchez Berro
Agradecimientos
al foro Gambas-es.org
y
en especial a sus miembros Soplo y Jguardon
por
sus aportaciones
Instalar Apache y MySQL
1.-
Lo primero que haremos será aumentar nuestros privilegios como root:
$
sudo su
2.-
Instalamos MySQL 5
#
apt-get install mysql-server mysql-client
2.1.-
Llegará un momento en que te pedirá la contraseña para el usuario
root de MySQL
Nueva
contraseña para el usuario “root” de MySQL : TUCLAVE
Vuelva
a introducir la contraseña para el usuario “root” de MySQL: TU
CLAVE
3.- Instalamos Apache2
Ya
esta disponible en los repositorios, así que solo
ejecutamos la siguiente instrucción:
#
apt-get install apache2
Luego
que instale verificamos en nuestro navegador http://localhost ó
desde cualquier maquina de nuestra red local escribimos la ip del
equipo donde estamos montando nuestro servidor
Si
todo va bien debería mostrarnos en nuestro navegador algo
como esto: It works!
02 Configurar Apache para ejecutar script realizados en Gambas
Configurar Apache para poder ejecutar script realizados en Gambas
0) Tenemos que tener instalado el componente gambas2-script (o
gambas3-script)
Si no lo tenemos instalado, lo instalamos con
$sudo su apt-get install gambas2-script
1)
Crear enlaces simbólicos y carpetas
Debes de
crear un enlace símbolico al programa gbs2 (o gbs3)
Nota:
Si no sabes
donde esta el archivo gbs2 (o gbs3 para gambas3), lo puedes buscar
con el comando whereis
$whereis
gbs2
Que te
devolverá las rutas donde este el programa.
Dependiendo
como lo hayas instalado (con paguete .deb, repositorio oficial, o
compuilandolo), estas rutas podrán variar.
Imaginamos
que se haya instalado en /usr/bin, ahora vamos a crear el enlace:
Para
Gambas2
sudo
ln -s /usr/local/bin/gbs2 /usr/local/bin/gbw2
(si lo hemos compilado a mano, se instala en /usr/local)
Nota:
Si instalas gambas desde paquete .deb, la ruta sera:
sudo
ln -s /usr/bin/gbs2 /usr/bin/gbw2
Para
Gambas3
sudo
ln -s /usr/local/bin/gbs3 /usr/local/bin/gbw3
Nota:
Si instalas gambas desde paquete .deb, la ruta sera:
sudo
ln -s /usr/bin/gbs3 /usr/bin/gbw3
Ahora
tendras que crear una carpeta donde vayas a alojar los archivos de
script.
Por ejemplo
la puedes crear en /usr/bin/cgi-bin
Con
permiso de ejecución para todos los usuarios:
sudo
chmod 705 /usr/bin/cgi-bin
Es
esta carpeta, es donde alojarás tus script realizados en gambas.
sudo chmod 705 miscript.cgi
2)Editar
el archivo de configuración de apache2
(/etc/apache2/sites-available/default)
sustituir:
ScriptAlias
/cgi-bin/ “/usr/lib/cgi-bin/”
<Directory
"/usr/lib/cgi-bin">
AllowOverride None
Options
+ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order
allow,deny
Allow
from all
</Directory>
y
por:
ScriptAlias
/cgi-bin/ /var/www/cgi-bin/
<Directory "/var/www/cgi-bin/">
AllowOverride
None
Options
+ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order
allow,deny
Allow
from all
Addhandler
cgi-script .cgi .pl .gb
</Directory>
3) Y reiniciar apache
sudo
/etc/init.d/apache2 restart
Ya esta tu servidor apache preparado para ejecutar scripts CGI en
gambas....!!
Nota:
Si te aparece este error:
apache2: bad user name ${APACHE_RUN_USER}
En esta dirección explica como arreglarlo:
http://guerratopia.com/error-apache2-bad-user-name-apache_run_user
Básicamente esta es la solución:
Abrimos
una terminal y ponemos lo siguiente:
sudo gedit /etc/apache2/apache2.conf
sudo gedit /etc/apache2/apache2.conf
Dentro
buscamos estas lineas:
# These need to be set in /etc/apache2/envvars
User ${APACHE_RUN_USER}
Group ${APACHE_RUN_GROUP}
# These need to be set in /etc/apache2/envvars
User ${APACHE_RUN_USER}
Group ${APACHE_RUN_GROUP}
Y
las sustituimos la parte de ${APACHE_RUN_USER} y de
${APACHE_RUN_GROUP} por www-data, quedara algo asi:
# These need to be set in /etc/apache2/envvars
User www-data
Group www-data
# These need to be set in /etc/apache2/envvars
User www-data
Group www-data
Después
guardamos y cerramos y reiniciamos apache.
sudo /etc/init.d/apache2 restart
sudo /etc/init.d/apache2 restart
Para ver el fichero de log con los errores que se hayan
producido en apache2:
cat /var/log/apache2/error.log
03 Un ejemplo: Web dinamica con SQLite (1)
Os explico a continuación un pequeño ejemplo.
Vamos a crear una pagina web con un formulario (inicio.html), donde
preguntemos al usuario por unos datos (nombre o apellidos), y según
lo que introduzca el usuario y usando un script realizado en gambas
(consulta.cgi), haremos una consulta a una base de datos del tipo
Sqlite (llamada agenda), y mostraremos los resultados en otra pagina
web.
La estructura a crear es la siguiente:
a)Base de datos Sqlite:
La base de datos sqlite estará en:
/var/www/base/
Y se llamará
agenda
Nota:
La base de datos “agenda” contiene una tabla llamada “lista”
con varios campos ( nombre, apellidos y teléfono).
b)Archivo inicio.html
Estará en:
/var/www/inicio.html
c)Archivo script en gambas:
Estará en:
/var/www/cgi-bin/
Y se llamará: (consulta.gb)
consulta.cgi
El código:
El archivo inicio.html:
<html>
<head>
<title>Ejemplo
Web de Bases de datos con Gambas</title>
</head>
<body>
<FORM
action="http://localhost/cgi-bin/consulta.cgi"
method="GET">
<h1>Ejemplo
Web de Bases de datos con Gambas</h1>
<h3>
Buscar por
nombre o apellido </h3>
<P>
Introduzca el
nombre:<INPUT
TYPE="text"
NAME="nombre"><BR>
<INPUT
type="submit"
value="Enviar">
<INPUT
type="reset">
</P>
</FORM>
<FORM
action="http://localhost/cgi-bin/consulta.cgi"
method="GET">
<P>
Introduzca el
apellido:<INPUT
TYPE="text"
NAME="apellido"><BR>
<INPUT
type="submit"
value="Enviar">
<INPUT
type="reset">
</P>
</FORM>
</body>
</html>
Como veis son dos formularios (<form>) y usa el metodo GET para
enviar el nombre de la variable (nombre/apellido) y el valor que ha
escrito el usuario.
Esta es la captura de pantalla que se obtiene:
04 Un Ejemplo: Web dinamica con SQilte (2)
El archivo script en gambas: consulta.cgi
#!/usr/bin/env
gbw2
<%
USE
"gb.db"
USE
"gb.db.sqlite3"
Dim
myreqnombre
as
String
Dim
myreqapellido
as
String
dim
conexion
as
connection
dim
tablacontactos
as
result
dim
sentencia
as
string
myreqnombre
=
Request["nombre"]
myreqapellido
=
Request["apellido"]
conexion=new
connection
conexion.type="sqlite3"
conexion.host="/var/www/base"
conexion.name="agenda"
conexion.open()
if
error
then
print
"Error
al conectarse a la base de datos"
conexion=null
else
print
"<html><body>"
if
myreqnombre<>""
then
print
"El
dato pasado es el nombre..."
print
myreqnombre
print
"<br>"
sentencia="Select
* from lista where nombre like '%"
&
myreqnombre
&
"%'"
print
"<br>
La sentencia que ejecuto es: "
&
sentencia
&
"<br>"
tablacontactos=conexion.Exec(sentencia)
print
"Numero
de registros: " &
tablacontactos.count
&
"<br>"
print
"<TABLE
BORDER=\"1\">"
print
"<TR>"
print
"<th>"
&
tablacontactos["nombre"]
&
"</th>"
&
"<th>"
&
tablacontactos["apellido"]
&
"</th>"
&
"<th>"
&
tablacontactos["telefono"]
&
"</th>"
print
"</TR>"
tablacontactos.movenext()
loop
print
"</TABLE>
"
endif
if
myreqapellido<>""
then
print
"El
dato pasado es el apellido..."
print
myreqapellido
print
"<br>"
sentencia="Select
* from lista where apellido like '%"
&
myreqapellido
&
"%'"
print
"<br>
La sentencia que ejecuto es: "
&
sentencia
&
"<br>"
tablacontactos=conexion.Exec(sentencia)
print
"Numero
de registros: " &
tablacontactos.count
&
"<br>"
print
"<TABLE
BORDER=\"1\">"
do
while
tablacontactos.Available
print
"<TR>"
print
"<th>"
&
tablacontactos["nombre"]
&
"</th>"
&
"<th>"
&
tablacontactos["apellido"]
&
"</th>"
&
"<th>"
&
tablacontactos["telefono"]
&
"</th>"
print
"</TR>"
tablacontactos.movenext()
loop
print
"</TABLE>
"
endif
if
myreqapellido=""
and
myreqnombre=""
then
Print
"Debe
de escribir un criterio"
&
"<br>"
endif
print
"<a
HREF=\"http://127.0.0.1/inicio.html\">
Ir al Inicio</A>"
print
"</body></html>"
%>
Varias cosas a comentar:
- Los script para web, no admiten comentarios, (por eso no he comentado nada del código) por que se genera un error en el servidor y no ejecuta el script
- La orden “USE” debe de ir en mayúscula. Esta orden indica los componentes que vamos a usar en el programa
- La primera línea “#!/usr/bin/env gbw2” indica al servidor que estamos ejecutando un script del tipo de gambas2
- Con <% y %> indicamos que empiezan órdenes en el lenguaje Basic
Captura de pantalla:
Suscribirse a:
Entradas (Atom)