|     Inicio    |   |         |  |   FOROS      |  |      |      
   Elastix - VoIP B4A (Basic4Android) App inventor 2 PHP - MySQL
  Estación meteorológica B4J (Basic4Java) ADB Shell - Android Arduino
   AutoIt (Programación) Visual Basic Script (VBS) FireBase (BD autoactualizable) NodeMCU como Arduino
  Teleco - Emisora de A.M. Visual Basic Cosas de Windows Webs interesantes
Translate:
Búsqueda en este sitio:


Nuevo concurso para España, Argentina, Brasil, Chile, Colombia, Ecuador, México, Perú y Portugal.

App inventor 2 en español
Cómo programar los teléfonos móviles con Android
mediante App inventor 2 - Juan Antonio Villalpando

--- PHP y MySQL en App Inventor 2 --

Volver al índice del tutorial de PHP y MySQL

____________________________

342.- App inventor y MySQL ejemplo de reserva de local.

- Supongamos que disponemos de un local y podemos reservar su uso en determinado día y a determinada hora (Hay seis horas).

- Vamos a realizar una aplicación donde los usuarios verán si ya está disponible el día y la hora elegida.

- El usuario elegirá un día en un calendario. Saldrán las seis horas disponibles para elegir. Si el usuario ve que una determinada hora está en blanco, podrá escribrir su nombres indicando que esa hora ha sido elegida por él. Si ya existiera un texto, el usuario no debería cambiarlo.

- En realidad, cualquier usuario puede modificar cualquier hora ya elegida, pero suponemos que son usuarios honrados y no modificarán las que ha puesto otros usuarios.

- Esto es simplemente una aplicación de prueba y aprendizaje que como todas se puede mejorar.

______________________________________________
1.- Calendario.

- Podríamos utilizar el SelectorDeFecha de App inventor para elegir un día, pero vamos a utilizar un calendario basado en el tutorial de PuraVida: http://puravidaapps.com/datepicker.php, basado a la vez en la API de http://jqueryui.com/datepicker/

- Se trata de utilizar varios scripts de javascript y llamarlos desde una página web (fechas.htm) que está en la misma aplicación.

  • jquery-1.8.0.min.js
  • jquery-ui-1.8.22.custom.css
  • jquery-ui-1.8.22.custom.min.js
  • ui-icons_ef8c08_256x240.png
  • ui-icons_ffffff_256x240.png

- Estos archivos se encuentran en la aplicación, concretamente en la carpeta base de la aplicación, la carpeta base de cada aplicación se llama assets.

- Fíjate en este detalle: Mientra se está desarrollando la aplicación en App inventor, el directorio assets donde se asienta el archivo fecha.htm está en:

file///mnt/sdcard/AppInventor/assets/fecha.htm

pero cuando ya esté totalmente finalizado y se vaya a Generar el archivo .apk de instalación, se debe indicar que el archivo fecha.htm está en:

file:///android_assets/fecha.htm

Para hacer este cambio, solo tendremos que poner la variable en_prueba a falso.

- Aquí está el código del Calendario, fíjate que en las Propiedades del Reloj se ha establecido un IntervaloDelTemporizador de 500 ms, es decir cada ese tiempo se analizará si ha habido un cambio de Fecha.

- Es código simple, pero que tal vez te cueste trabajo entender.

- He modificado el archivo jquery-ui-1.8.22.custom.min.js, poniendo los nombres de los días y meses en español y estableciendo que el FirstDay de la semana sea el lunes.

p342_calendario.aia

______________________________________________
______________________________________________
______________________________________________
2.- Reservar día y hora. App inventor. PHP. MySQL.

p342_reservas_mysql.aia

- Aquí tenemos la aplicación completa con el calendario y la conexión con la base de datos MySQL mediante PHP.

                           

_________________
- Diseño.

- IntervaloDelTemporizador: 500

- Fíjate que tiene un VisorWeb1 y un Web1, que son dos elementos distintos.

NOTA: Web1 está en Conectividad (no confundir con VisorWeb).

NOTA: El VisorWeb1 tiene en la Propiedades, desmarcada la opción de Visible, por eso no se ve en la imagen.

- Se observa que se han subido los archivos de textos e imágenes.

- Puedes bajar los archivos de textos e imágenes de aquí: reservas.zip

_________________
- Bloques.

 

- DisposicionVertical1.Visible, aquí es donde se encuentran los CamposDeTexto, unas veces será Visible falso y otras Visible cierto, según se quiera presentar el Calendario o los CamposDeTexto.

- Cada vez que elegimos una fecha, aparecerá en la Etiqueta est_fecha, se tomará ese valor y preparará la orden de SELECCIONAR esa fecha en la base de datos.

orden = SELECT * FROM ocupaciones WHERE fechas='est_fecha.Texto'

- El proceso envio, llamará al archivo PHP reservas.php que se comunica con la Base de datos MySQL

http://kio4.com/appinventor/php/reservas.php?orden = SELECT * FROM ocupaciones WHERE fechas='est_fecha.Texto'

- Se sustituye el espacio por %20

http://kio4.com/appinventor/php/reservas.php?orden%20=%20SELECT%20 *%20 FROM%20 ocupaciones%20WHERE%20 fechas='est_fecha.Texto'

Así es como se enviará la orden completa (pulsa para ver):

http://kio4.com/appinventor/php/reservas.php?orden=SELECT%20*%20FROM%20ocupaciones%20WHERE%20fechas=%2707/07/2016%27

El archivo reserva.php realizará esa orden en la base de datos MySQL y mediante la instrucción print, devolverá la respuesta a esa SELECCION.

- Web1.Obtuvotexto, cuando se ha enviado la orden al archivo reservas.php, éste mediante la instrucción print, devuelve un texto, ese texto lo recibe Web1.ObtuvoTexto en la variable ContenidoDeRespuesta.

206, 07/07/2016, Reservado para Juan, , Antonio, proyector., Luis, tendremos baile., , ,

- El ContenidoDeRespuesta obtenido se guarda en una lista llamada respuesta. Por ejemplo obtendría algo así:

(12 04/07/2016 uno dos tres cuatro cinco seis)

- En caso de que en este día no haya nada guardado, obtendría esto:

(vacio)

Este vacio, se ha enviado desde el archivo reservas.php con la instrucción

if ($en_csv == ""){ $en_csv = "(vacio)"; } // Si no hay registro, devuelve ((vacio))
print $en_csv;

- De tal manera que si vienen datos guardados se escribirá en los CamposDeTexto y si solo viene el (vacio) no saldrán los CamposDeTexto.

- Esto se hace comprobando si la lista recibida tiene solo uno o más de un campo. respuesta > 1

- El Botón de Guardar vale tanto para guardar en una nueva fecha como en modificar los datos de una fecha ya creada.

INSERTAR lo que hace es grabar un nuevo registro con una fecha, por ejemplo:

12 04/07/2016 uno dos tres cuatro cinco seis

UPDATE lo que hace es que una fecha que ya esté guardada anteriormente, modifica algunos de sus datos.

- Para que el mismo Botón valga tanto para Modificar como para Guardar, he puesto una serie de condiciones que complica algo el entendimiento del código.

- Si el resultado tiene un más de un campo, significa que esa fecha ya existe en la base de datos así que habrá que modificar, UPDATE.

- Si el resultado tiene solo un campo (vacio), significa que esa fecha no existía en la base de datos así que habrá que crearla, INSERT.

_________________
- Base de datos.

- Ya vimos en 317_hosting_gratuito la creación de la base de datos u798509677_comun y dentro de ella vamos a crea la tabla ocupaciones.

- Observa que he puesto un campo id, INT, PRIMARY y que Automáticamente (A_I) escribirá un número de registro.

 

_________________
- Archivo PHP.

- Con phpMyAdmin creamos una base de datos llamada reservas y la hemos asignado al usuario profes con su contraseña.

- Este archivo lo subiré a mi hosting: http://kio4.com/appinventor/php/reservas.php

reservas.php
<?php

// Juan Antonio Villalpando
// juana1991@yahoo.com 

// http://kio4.com
// 07/07/2016

error_reporting ( E_ALL  ^  E_NOTICE  ^  E_DEPRECATED ); // 1.- IDENTIFICACION nombre de la base, del usuario, clave y servidor $db_host="mysql.hostinger.es"; $db_name="u798509677_comun"; $db_login="u798509677_juan"; $db_pswd="contraseña"; $con = mysql_connect($databasehost,$databaseusername,$databasepassword) or die(mysql_error()); mysql_set_charset("utf8"); mysql_select_db($databasename) or die(mysql_error()); $llegan=$_GET; $peticion=$llegan['orden']; // echo $peticion; $hacer = mysql_query($peticion); /////////////////////////////////////////////////////////////////////////////// // En los casos que hay SELECT y se debe enviar una respuesta actúa este código if (substr($peticion, 0, 6) == 'SELECT') { $resultado = mysql_query("SHOW COLUMNS FROM ocupaciones"); $numerodefilas = mysql_num_rows($resultado); if ($numerodefilas > 0) { while ($rowr = mysql_fetch_row($hacer)) { for ($j=0;$j<$numerodefilas;$j++) { $en_csv .= $rowr[$j].", "; } } } } if ($en_csv == ""){ $en_csv = "(vacio)"; } // Si no hay registro, devuelve ((vacio)) print $en_csv; /////////////////////////////////////////////////////////////////////////////// ?>

Fijate que el nombre y contraseña son los que le pusistes a la base de datos.

Conectamos con la base de datos:

$con = mysql_connect($databasehost,$databaseusername,$databasepassword) or die(mysql_error());

Tomamos GET la información que nos llega:

$llegan=$_GET;

Tomamos la orden que nos ha llegado

$peticion=$llegan['orden'];

$peticion=INSERT INTO  ocupaciones (fechas, uno, dos, tres, cuatro, cinco, seis)  VALUES('07/07/2016','uno','dos','tres','cuatro','cinco','seis')

Hacemos, ejecutamos esa petición:

$hacer = mysql_query($peticion);

Ya está, esa orden INSERTARÁ EN la tabla ocupaciones los VALORES indicados.

Para comprobar la entrada de datos vamos a phpMyAdmin y podemos Examinar los datos que se han grabado.

_________________
- Propuestas.

- Realiza el mismo ejemplo con el SelectorDeFecha.

_______________________________

- Mi correo:
juana1991@yahoo.com
- KIO4.COM - Política de cookies. Textos e imágenes propiedad del autor:
© Juan A. Villalpando
No se permite la copia de información ni imágenes.
Usamos cookies propias y de terceros que entre otras cosas recogen datos sobre sus hábitos de navegación y realizan análisis de uso de nuestro sitio.
Si continúa navegando consideramos que acepta su uso. Acepto    Más información