Dedicado a mis proyectos en Gambas ,un lenguaje de programación parecido al Visual Basic + Java pero ampliamente mejorado y...¡¡para gnu/linux!!.La potencia del gnu/linux sumada a la facilidad del Basic



Consultas, Desarrollo de programas y petición de presupuestos:



Mostrando entradas con la etiqueta php. Mostrar todas las entradas
Mostrando entradas con la etiqueta php. Mostrar todas las entradas

martes, 21 de abril de 2015

MANUAL PASO A PASO: Creando una aplicación web usando PHP y JavaScript (jquery y jeasyui)



MANUAL PASO A PASO: 

Creando una aplicación web usando PHP y JavaScript (jquery y jeasyui)

 Este manual trata el desarrollo paso a paso de una aplicación web (multiplataforma, cliente-servidor),  usando los lenguajes de programación PHP y JavaScript, además  los framework jquery y jeasyui.
Johan Guerreros Montaya y el que escribe este artículo, hemos tardado un mes en elaborarlo con la idea de:
  • Explicar como realizar una aplicación web cliente-servicor, con las operaciones básicas: añadir, borrar y modificar registros.
  • Hemos usado el framework jeasyui para crear  un "entorno de trabajo" fácil y cómodo dentro del navegador web. Usando controles como los combobox, datagrid, textbox, cuadros de dialogos, formularios, y cuadros de mensajes, y explicando su uso.
  •  Además hemos añadido como trabajar con tablas relacionadas (vinculados por un campo), para que se vea como se resuelven los problemas de presentación en los formularios y en los cuadros de dialogos de petición de datos.



Os dejo un video para que veais como es la aplicación que podeis hacer siguiendo el manual:




Libro en formato .pdf:
http://www.lulu.com/shop/julio-sanchez-berro-and-johan-guerreros-montoya/creando-una-aplicaci%C3%B3n-web-paso-a-paso-usando-php-y-javascript-jquery-y-jeasyui/ebook/product-22137504.html


Libro en Tapa Blanda
http://www.lulu.com/shop/julio-sanchez-berro-and-johan-guerreros-montoya/creando-una-aplicaci%C3%B3n-web-paso-a-paso-usando-php-y-javascript-jquery-y-jeasyui/paperback/product-22137592.html


Os dejo también el indice del manual:

El problema que tiene que resolver nuestra aplicación
Análisis. Nuestra estructura de la base de datos.
Creando la base de datos y las tablas en el servidor.
Controles de jeasyui
Paso de los resultados de las consultas a los controles de jeasyui
Control easyui-datagrid:
Control easyui-combobox:
Paso de datos del easyui-datagrid a easyui-dialog:
Estructurada de nuestra aplicación:
Carpeta Principal o raíz: Archivo index.html
Ciudades
index.html:
NewCiudad()
EditCiudad()
SaveCiudad()
DestroyCiudad()
conn.php
get_Ciudad.php
save_Ciudad.php
update_Ciudad.php
destroy_Ciudad.php
Usuarios
index.html
NewUser()
EditUser():
SaveUser():
DestroyUser()
conn.php
get_users.php
get_dataCiudad.php
save_user.php
update_user.php
destroy_user.php
Anexo 1: Como conseguir un alojamiento web para hacer las pruebas de tu aplicación.
Anexo 2: Uso de FTP con Filezilla
Anexo 3: Como usar Filezilla y Sublime, para crear y editar el código fuente.
Anexo 4: Enlaces de descarga del código fuente de la aplicación.

Un cordial saludo

Julio

miércoles, 22 de octubre de 2014

Mi nueva publicación en Lulu.com: Aplicación Cliente-Servidor: Marcador Online


Mi nueva publicación en Lulu.com: Aplicación Cliente-Servidor: Marcador Online

Os dejo aqui mi nueva publicación en lulu.com.: enlace a lulu.com

Es la recopilación en el formato en pdf, del proyecto que estuve desarrollando en este mismo blog de como hacer un marcador online usando php, mysql, python y gambas3.

Espero que os guste.


Saludos

sábado, 11 de octubre de 2014

Indice de entradas del Marcador Online (servidor y clientes)




Indice de entradas del Marcador Online (servidor y clientes)

 




Este es un indice de las entradas que le he dedicado a este proyecto:

1, Desarrollo Online de un marcador de records para un juego (I)

En esta entrada describo lo que quiero hacer.
2.  Desarrollo Online de un marcador de records para un juego (II): En el Servidor: MySQL y PHPmyAdmin

Se describe como conseguir el la instalación y uso de MySQL, y la creación de la base de datos, tabla y campos necesarios.

3, Desarrollo Online de un marcador de records para un juego (III): En el Servidor: PHP

Se describe el código en php, que tendremos que crear en el servidor, para manejar la base de datos, y añadir los datos que nos pasen en la url.

4. Desarrollo Online de un marcador de records para un juego (IV): En el cliente: Python
Desarrollo de un cliente en el lenguaje Python, que sea capaz de leer los datos del servidor, enviar datos al servidor y mostrarlos en consola.

5. Desarrollo Online de un marcador de records para un juego (V): En el cliente: Gambas3 
 Desarrollo de un cliente en el lenguaje Gambas3, que sea capaz de leer los datos del servidor, enviar datos al servidor y mostrarlos con entorno gráfico.


En formato pdf lo puedes comprar en: http://jsbsan.blogspot.com.es/2014/10/mi-nueva-publicacion-en-lulucom.html







Desarrollo Online de un marcador de records para un juego (V): Ahora creando el cliente en Gambas3


Desarrollo Online de un marcador de records 

para un juego (V): 

Ahora creando el cliente en Gambas3


Ayer vimos, como era hacer el cliente en python, ( enlace ) hoy lo vamos ha hacerlo en gambas3.
Estos son los pasos a seguir:
1) Crear un nuevo proyecto en gambas3.
Crear un nuevo proyecto, preferiblemente usando qt4, y elegir la carpeta y escribir el nombre del proyecto. Yo le he puesto "LecturaEscrituraPaginaWeb"
2) Uso de gb.net y gb.net.crul
 En la pestaña de Proyecto/Propiedades/Componentes elegir esos componentes que nos permitiran tener acceso a las clases para lectura de la página web


3) Creamos la funcion que lee los datos:


4) En esta funcion se llaman a su vez otras funciones
4.1) Funcion que se encarga de leer cualquier página web:
4.2) Funcion que se encarga de limpiar el codigo (quitar caracteres no necesarios)
4,3) Cargar los datos en el gridview:



5) Creamos el entorno gráficoun formulario con los siguientes controles:
- Un gridview para mostrar los datos que vamos a leer.
- Dos textbox para la recogida de datos del jugador y de su pais
- Un valuebox para tomar el dato de la puntuación del jugador
- Dos botones: uno para hacer una consulta al marcador y otro para enviar datos y consultar el marcador.
La diferencia de estos dos botones, es que en uno mandaremos solo la url sin datos, y el otro con datos
Nota:
He añadido un TextArea, para mostrar el contenido de lo que se lee de la página web.

Este es el código a añadir al formulario:




Codigo completo del programa:
enlace de descarga: alojado en drive google

Mostrando el marcador en Gambas3
Nota: Enlace a indice del "Desarrollo Online": enlace

viernes, 10 de octubre de 2014

Desarrollo Online de un marcador de records para un juego (IV): En el cliente: Python


Desarrollo Online de un marcador de records para un juego (IV): En el cliente: Python 




Bien, una vez desarrollado el programa que estará en el servidor, hoy vamos a desarrollar el programa cliente. Este realmente estará incorporado como librería/módulo al juego.

¿con que lenguaje lo podemos hacer?
Con cualquiera que tenga la posibilidad de cargar páginas web y parsearla (ver nota 1), parsear es  obtener la información que nos interese. Lo voy a hacer con dos lenguajes: Python y Gambas3

En este artículo desarrollaré la forma de hacerlo con Python.

Datos del entorno de programación:
¿que versión de python he usado? 
Python2
¿que módulos/librerias necesitamos tener instalado? 
Tenemos que tener instalados los paquetes python-request y python-urllib3
Yo las he instalado usando el comando pip
$sudo apt-get install python-pip
$sudo pip install requests
(o  sudo pip install --upgrade requests, para actualizar la libreria)


El código que he realizado, lo he  programado y probado en la distribución gnu/linu  Linux Mint 17,  pero si tenéis los módulos instalado, lo podéis usar en cualquier sistema operativo, ya que Python es multiplataforma.

El código fuente lo podemos dividir varias zonas:
1) Importar los módulos necesarios



Nota: Si no tenemos instalados los módulos necesarios, saldrá este error cuando se intente ejecutar el programa:
import requests #hay que instalar el paquete.. python-request y python-urllib3
ImportError: No module named requests


2) Creamos una clase y el método leermarcador


3) Cargar el contenido de la página web en una lista:


Como veis uso la dirección http://www.marcadorjsbsan.hostinazo.com/marcador.php con la cual consigo los datos del marcador, si hay datos de los parametros usa la forma de pasar estos datos en la url: (http://www.marcadorjsbsan.hostinazo.com/marcador.php?jugador=DATOJUGADOR&pais=DATOPAIS&marcador=DATOPUNTUACION ) ,
lo que hacemos en enviar el nombre del jugador (DATOJUGADOR) , pais (DATOPAIS), y la puntuacion (DATOPUNTUACION).
Esta información la puedo poner usando  variables, para introducir los datos que el programa necesite.

La información que se devuelve (line) es una lista, con todo el contenido de la pagina web parseada.

4) Vamos a "limpiar" la lista de line


Limpiamos de los caracteres como los tabuladores y retornos de carro

5) Borrado de elementos extraídos no necesarios.
Si vemos la lista de elementos que se extrae de la página web, veremos (si se ha conectado correctamente) que el primer elemento es este: 'Connected successfully'
Este valor nos indica que la conexión se ha realizado correctamente y que podemos seguir leyendo los datos. En caso de que de error al borrarlo, querá decir que no se conecto. Para capturar este error, , usamos excepcciones (try.... excep..), y si ocurre paramos el programa.



6) Lectura de los datos, creando estructura de datos.


7) Muestra da datos.


En cada elemento de la lista "dato" se va almacenando el nombre del jugador, pais, y su puntuacion

Podemos hacer un pequeño código como ejemplo de uso:
En este codigo primero creamos un objeto marcador, luego llamamos al método leermarcador(), sin parametros para que nos muestre por consola el marcador Luego le pasamos los datos "pepe", pais "cub" y puntuacion "8", y los devuelve la variable "d" con los datos del marcador, que los escribirmos de nuevo en la consola.

Para ejecutarlo:
 $ python2 usandoleerweb.py
(tiene que estar en la misma carpeta el archivo leerweb.py)

Descarga de los archivos:

Salida por consola despues de ejecutar "usandoleerweb.py"
(Los resultados varian segun los datos almacenados en el servidor)



 Nota:
1) En linux tenemos la posibilidad de usar comandos del bash (por ejemplo, el wget), para descargarnos la pagina web, pasarlo a un archivo .html, y ya con el programa analizarlo. He preferido hacerlo con las herramientas o librerias propias que tenga el lenguaje de programación (Python y/o Gambas3)

Enlaces donde he encontrado la información:
http://python.majibu.org/preguntas/2699/extraccion-de-texto-plano-de-una-web-con-python-como


Nota: Enlace a indice del "Desarrollo Online": enlace

miércoles, 8 de octubre de 2014

Desarrollo Online de un marcador de records para un juego (III): En el Servidor: PHP


Desarrollo Online de un marcador de records para un juego (III): 
En el Servidor: PHP



En las entradas anteriores hablamos de la descripción del proyecto y de como instalar y crear nuestra base de datos (enlace1 y enlace 2). Ahora vamos a desarrollar el código del programa en PHP para manipular los datos que nos lleguen y mostrar los registros.
De los dos programas que comenté que hariamos en php, voy a empezar por explicar el que reinicia el marcador.

- Reiniciar el Marcador:

Este programa solo se usará cuando deseemos que el marcador se reinicie.

El código sería el siguiente:
1). Inicio y conexion a la base  de datos
Hay que indicar los datos de hosting, nombre de la base de datos y password. El password lo he cambiado a XXXXX, . uds, tendrian que cambiarlo a su hosting y su nombre de la base de datos.
<?php

// Conectando, seleccionando la base de datos
$link = mysql_connect('mysql.hostinazo.com', 'u431856591_marca', 'XXXXXXXX')
    or die('No se pudo conectar: ' . mysql_error());
echo 'Connected successfully<br>';
mysql_select_db('u431856591_marca') or die('No se pudo seleccionar la base de datos<br>');

2) Borrado de los todos los datos
//borro todos los registros que sean menores que minimo

$query ="truncate datos";
$result = mysql_query($query) or die('<br>Consulta fallida al borrar datos<br> ' . mysql_error());

Como veis en vez de usar la orden DELETE de mysql, uso la orden TRUNCATE, que hace lo mismo, pero reinicia el contador de la variable ID, esto lo hago por un mero hecho de como se muestra la tabla en la web, luego ese ID en el programa del cliente no se va a usar.

3) Insertar los registros vacios de datos:
for ($x=0; $x<=21; $x++) {
$query = "INSERT INTO datos (id, jugador, pais, marcador) ".
  "VALUES (NULL, 'vacio', 'vacio', 0)";
$result = mysql_query($query) or die('Consulta fallida al anadir:  <br>' . mysql_error());
} 

Inserto 20 registros con los datos de jugador y pais como "vacio", y el marcador a "0"

4) Hago una consulta para mostrar los 20 mejores registros:
// Realizar una consulta MySQL
$query = 'SELECT * FROM datos ORDER BY marcador DESC LIMIT 0,20';
$result = mysql_query($query) or die('Consulta fallida al mostrar resultados: ' . mysql_error());

Aquí lo mas interesante es la sentencia SQL que uso, ya que me muestra un limite de los 20 primeros registros, ordenador de forma descendiente por el marcador, obtendremos asi los regirstros con mayor puntuación primero. Todo esto se guarda en la variable $result

5)  Mostrar en la web el resultado obtenido de la consulta:
// Imprimir los resultados en HTML
echo "<table>\n";
while ($line = mysql_fetch_array($result, MYSQL_ASSOC)) {
    echo "\t<tr>\n";
    foreach ($line as $col_value) {
        echo "\t\t<td>$col_value</td>\n";
        $minimo=$col_value;
    }
    echo "\t</tr>\n";
}
echo "</table>\n";

echo "Minimo es: ". $minimo;
echo "<br>";

// Cerrar la conexión
mysql_close($link);
?>

Con este código conseguimos mostrar en la pagina web como quedaría la tabla de datos. Realmente este muestra de datos no la necesitamos, ya que lo que nos interesa solo es el borrado y rellenado de datos que hemos hecho en el paso nº 3.
Este archivo lo nombraremos como "reiniciarmarcador.php".


marcador.php

Ahora vamos a pasar al archivo que se encarga de añadir un nuevo resultado (junto con el nombre del jugador y  pais) que es pasado por la url enviamos y nos mostrará una tabla de como queda la tabla de records. Esta tabla de record (que es una página web), la leermos con nuestro programa cliente, y la mostrará al jugador.

1) Inicio y Conexión
Aqui nos conectamos a la base de datos, poniendo nuestros datos de alojamiento, nombre de la base de datos y contraseña.
?php

// Conectando, seleccionando la base de datos
$link = mysql_connect('mysql.hostinazo.com', 'u431856591_marca', 'XXXXXX')
    or die('No se pudo conectar: ' . mysql_error());
echo 'Connected successfully<br>';
mysql_select_db('u431856591_marca') or die('No se pudo seleccionar la base de datos<br>');

2) Toma de datos de la url.
La url que enviamos  sigue este patrón:
/*'url: '
http://www.marcadorjsbsan.hostinazo.com/marcador.php?jugador=jsbsan&pais=esp&marcador=200
*/

Para tomar los datos de la url:

$jugador=$_GET['jugador'];
$pais=$_GET['pais'];
$marcador=$_GET['marcador'];

3) Comprobar el mínimo de puntuación que tengo en el marcador y si la puntuación que me pasan en la url es superior, la inserto:
$query = 'SELECT * FROM datos ORDER BY marcador DESC LIMIT 0,20';
$result = mysql_query($query) or die('Consulta fallida al mostrar resultados: ' . mysql_error());


while ($line = mysql_fetch_array($result, MYSQL_ASSOC)) {
 $registros +=1;
    foreach ($line as $col_value) {
        $minimo=$col_value; 
        // es el ultimo valor que se va mostrando por fila el que me interesa ya que tiene el valor del marcador
    }
    
}

if ($minimo < $marcador or $registro<20) {

if ($marcador>0) {

//como el dato que recibo es mayor al minimo lo inserto:
//inserto el nuevo registro, el mayor al dato minimo que tengo!!!
/* inserto registro */
$query = "INSERT INTO datos (id, jugador, pais, marcador) ".
  "VALUES (NULL, '$jugador', '$pais', $marcador)";
$result = mysql_query($query) or die('Consulta fallida al anadir:  <br>' . mysql_error());
 }
}
Notas:
- Si no se incluye ningun dato en la url, no se inserta ningún dato, al ser marcador=0
-El dato de la puntuación lo tengo en la última columna, con lo cual es fácil y sabiendo cual es el mínimo usando el bucle Foreach que recorre las columnas de cada registro.


4) Muestro los datos en la web:
Para mostrar los datos, creando una tabla en html.
// Realizar una consulta MySQL
$query = 'SELECT * FROM datos ORDER BY marcador DESC LIMIT 0,20';
$result = mysql_query($query) or die('Consulta fallida al mostrar resultados: ' . mysql_error());

// Imprimir los resultados en HTML
echo "<table>\n";
while ($line = mysql_fetch_array($result, MYSQL_ASSOC)) {
    echo "\t<tr>\n";
    foreach ($line as $col_value) {
        echo "\t\t<td>$col_value</td>\n";
        $minimo=$col_value;
    }
    echo "\t</tr>\n";
}
echo "</table>\n";

5) Borrado de datos no necesarios y cerrar la conexión.
Si tengo registros cuya puntuación es menos al minimo, los borro, para minimizar el tamaño de la base de datos:
//borro todos los registros que sean menores que minimo

$query = "DELETE FROM datos WHERE marcador <$minimo";
$result = mysql_query($query) or die('<br>Consulta fallida al borrar datos sobrantes:<br> ' . mysql_error());

// Cerrar la conexión
mysql_close($link);
?>


Pruebas:
Vamos a hacer un ejemplo, escribiendo directamente en el navegador la siguiente linea:
http://www.marcadorjsbsan.hostinazo.com/reiniciarmarcador.php

Obtenemos el reinicio del marcador:
Si escribimos:
http://www.marcadorjsbsan.hostinazo.com/marcador.php?jugador=jsbsan&pais=esp&marcador=200

Obtenemos el ingreso de un nuevo dato (jugador: jsbsan, pais: esp, marcador: 200)

Si escribimos varias direcciones más con distintos valores podeis ver el resultado:
http://www.marcadorjsbsan.hostinazo.com/marcador.php?jugador=juan&pais=mx&marcador=250
http://www.marcadorjsbsan.hostinazo.com/marcador.php?jugador=john&pais=usa&marcador=50
http://www.marcadorjsbsan.hostinazo.com/marcador.php?jugador=mary&pais=gb&marcador=350


En la próxima entrada veremos como hacer que los ordenadores "clientes" (los de los jugadores),  cargen estos datos y los muestres a los jugadores.

Os dejo el enlace de descarga de las fuentes completas de los dos archivos .php




Saludos.


Nota:
1) Si habeis usado los enlaces de ejemplo, no olvideis en reiniciar el marcador:
http://www.marcadorjsbsan.hostinazo.com/reiniciarmarcador.php

2) Al estar usando una cuenta gratuita, tengo limitado los kbs de descarga, por lo que puede que el ejemplo no se ejecute.

3) Coloreado de código:
He usado para colorear el código el servicio de la página http://tohtml.com/

Nota: Enlace a indice del "Desarrollo Online": enlace