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
____________________________
326A.- Crear una base de datos MiniWebDB en un archivo mediante PHP en un servidor web.
p326A_servidor_tinywebdb.aia
- La base de datos de App inventor MiniWebDB, está en un servidor remoto. Vamos a crearnos una base de datos para nuestra MiniWebDB.
- En internet hay varios tutoriales para construirla con Python. Nosotros la vamos a construir en un archivo y mediante PHP.
- Vamos a crear una sencilla aplicación para hacer las pruebas.
- Introducimos una Etiqueta y un Valor a Guardar. Pulsamos el botón "Pulsa para Guardar", se guardarán esos valores en nuestra MiniWebDB.
- Introducimos una Etiqueta. Pulsamos el botón "Pulsa para Ver", obtendremos los datos guardados (Etiqueta y Valor).
__________________________________________
- Diseño.
- Las MiniWebDB de App inventor suelen utilizar este servidor:
http://appinvtinywebdb.appspot.com
- En nuestro caso construiremos y utilizaremos este: http://kio4.esy.es/mi_tinywebdb.php
- Escribimos esa dirección en URLDelServicio: http://kio4.esy.es/mi_tinywebdb.php
__________________________________________
- Bloques.
__________________________________________
1.- Código PHP.
mi_tinywebdb.php
|
<?php
// Juan Antonio Villalpando
// http://kio4.com/appinventor/326A_crear_miniwebDB.htm
// http://kio4.esy.es/mi_tinywebdb.htm
$recibe_post = $_SERVER["REQUEST_URI"];
$etiqueta = $_POST['tag'];
$archivo = 'mi_tinywebdb.htm';
if (!file_exists($archivo)) {$handle = fopen($archivo, 'w');}
if(strpos($recibe_post,'storeavalue')){
///////////////////////////////////////////////////////////////////////////////////////////////////
// GUARDAR ETIQUETA Y VALOR.
$valorAGuardar = $_POST['value'];
$linea = $etiqueta.":".$valorAGuardar.":<br>\n";
$auxi = fopen($archivo, 'a'); // Añade $linea al archivo mi_tinywebdb.htm
fwrite($auxi, $linea);
} else {
///////////////////////////////////////////////////////////////////////////////////////////////////
// OBTENER EL VALOR DE LA ETIQUETA.
// Busca en el archivo "mi_tinywebdb.htm" el Valor correspondiente a la Etiqueta pedida.
$auxi = fopen($archivo, 'r');
$existe = "";
while(!feof($auxi)){
$linea = fgets($auxi);
$campos = explode(":", $linea);
if ($campos[0] == $etiqueta) {
$valor =$campos[1];
$existe ="si";
}
}
// Envía el resultado.
if ($existe == "si"){
// Envia el valor obtenido.
$resultado = array("VALUE", $etiqueta, $valor);
} else {
// Envia "No_existe" esa Etiqueta.
$resultado = array("VALUE", $etiqueta, "No_existe");
}
$resultado_en_JSON = json_encode($resultado);
echo $resultado_en_JSON;
}
fclose($auxi);
?>
|
__________________________________________
- Comentarios.
- Las Etiquetas y los Valores se guardan en el archivo mi_tinywebdb.htm.
- Lo he creado .htm, para que en cualquier momento podamos consultar fácilmente su contenido: http://kio4.esy.es/mi_tinywebdb.htm
- Cuando la aplicación envía una petición, según sea storeavalue querrá guardar u obtener la información.
- Los datos vienen en las variables $_POST['tag']; y $_POST['value'];
- Si la quieres GUARDAR ETIQUETA Y VALOR, escribe esto en el archivo: $linea = $etiqueta.":".$valorAGuardar.":<br>\r\n";
- Quedará así: juan antonio:"1234 5678": <br>
- Fíjate que el separador de campo son los dos puntos :, tú puedes poner otro.
------------------------------------------
- Si quieres OBTENER EL VALOR DE LA ETIQUETA, busca en todo el archivo la etiqueta requerida.
- Si existe, envía $resultado = array("VALUE", $etiqueta, $valor);
- Si no existe, envía $resultado = array("VALUE", $etiqueta, "No_existe");
- Para que App inventor pueda interpretar los datos enviados, se debe codificar y mandar formato JSON.
$resultado_en_JSON = json_encode($resultado);
- Se envía mediante el echo.
echo $resultado_en_JSON;
------------------------------------------
- Según introducimos valores, podemos ver cómo se almacenan entrando en la dirección donde está el archivo de nuestra base de datos:
http://kio4.esy.es/mi_tinywebdb.htm
-----------------------------
- Si envía una etiqueta repetida se volverá a guardar, por ejemplo:
- Cuando se pida el Valor de esa Etiqueta, se obtendrá el último Valor guardado.
__________________________________________
__________________________________________
__________________________________________
2.- Mejora del Código PHP.
- Recuerdas que si quieres poner este, debes cambiar el URLDelServicio: http://kio4.esy.es/mi_tinywebdb_v2.php
- Escribimos esa dirección en URLDelServicio: http://kio4.esy.es/mi_tinywebdb_v2.php
- Con este código evitamos que se guarden etiquetas repetidas.
- En el código PHP he cambiado el nombre del archivo de la base de datos, ahora es:
$archivo = 'mi_tinywebdb_v2.htm';
http://kio4.esy.es/mi_tinywebdb_v2.htm
mi_tinywebdb_v2.php
|
<?php
// Juan Antonio Villalpando
// http://kio4.com/appinventor/326A_crear_miniwebDB.htm
// http://kio4.esy.es/mi_tinywebdb_v2.htm
$recibe_post = $_SERVER["REQUEST_URI"];
$etiqueta = $_POST['tag'];
$archivo = 'mi_tinywebdb_v2.htm';
if (!file_exists($archivo)) {$handle = fopen($archivo, 'w');}
if(strpos($recibe_post,'storeavalue')){
//////////////////////////////// Si ya existe esa Etiqueta, la BORRA.
$arc = file($archivo);
$auxi = fopen($archivo,"w");
foreach($arc as $linea)
{
$campos = explode(":", $linea);
if ($campos[0] != $etiqueta) {
fputs($auxi, $linea);
}
}
fclose($auxi);
/////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////
// GUARDAR ETIQUETA Y VALOR.
$valorAGuardar = $_POST['value'];
$linea = $etiqueta.":".$valorAGuardar.":<br>\n";
$auxi = fopen($archivo, 'a'); // Añade $linea al archivo mi_tinywebdb_v2.htm
fwrite($auxi, $linea);
} else {
///////////////////////////////////////////////////////////////////////////////////////////////////
// OBTENER EL VALOR DE LA ETIQUETA.
// Busca en el archivo "mi_tinywebdb_v2.htm" el Valor correspondiente a la Etiqueta pedida.
$auxi = fopen($archivo, 'r');
$existe = "";
while(!feof($auxi)){
$linea = fgets($auxi);
$campos = explode(":", $linea);
if ($campos[0] == $etiqueta) {
$valor =$campos[1];
$existe ="si";
}
}
// Envía el resultado.
if ($existe == "si"){
// Envia el valor obtenido.
$resultado = array("VALUE", $etiqueta, $valor);
} else {
// Envia "No_existe" esa Etiqueta.
$resultado = array("VALUE", $etiqueta, "No_existe");
}
$resultado_en_JSON = json_encode($resultado);
echo $resultado_en_JSON;
}
fclose($auxi);
?> |
__________________________________________
- Comentarios.
- Con este último código PHP, si encuentra una Etiqueta igual que la que vamos a guardar, la borra, y escribe la nueva Etiqueta y su Valor al final del archivo, prueba y consulta:
http://kio4.esy.es/mi_tinywebdb_v2.htm
- El código que he añadido borra aquellas líneas que tengan una cadena como la de la etiqueta y estén a la izquierda de los dos puntos.
- Tanto con este código como con el otro puedes crear varias bases de datos, simplemente cambiando el nombre del PHP y del archivo .htm.
__________________________________________
__________________________________________
__________________________________________
3.- Bajar el archivo mi_tinydbd.htm al móvil.
- Nuestra base de datos es el archivo mi_tinydbd.htm y está en nuestro servidor web, concretamente: http://kio4.esy.es/mi_tinywebdb.htm
- Vamos a bajarlo a nuestro móvil, para ellos podemos consultar el tutorial: 328_bajar_archivos_php.htm
- Aquí pongo el archivo de ese tutorial adaptado a la dirección de nuestra base de datos.
p328_K_bajar_tinydb.aia
- El archivo mi_tinywebdb.htm, que contiene nuestra base de datos, se baja de internet y se guarda en el directorio:
/mnt/sdcard/mi_tinywebdb.htm
de nuestro móvil.
- Lo puedes localizar mediante un explorador de archivos de móvil como el AndExplorer.
__________________________________________
__________________________________________
__________________________________________
4.- Mismo código anterior con "|".
- Este código es casi el mismo que hemos visto anteriormente, simplemente he cambiado el separador ":" por "|"
mi_tinywebdb_v2.php
|
<?php
// Juan Antonio Villalpando
// http://kio4.com/appinventor/326A_crear_miniwebDB.htm
//
// http://mydomain/mydirectory/mi_tinywebdb_v2.htm
$recibe_post = $_SERVER["REQUEST_URI"];
$etiqueta = $_POST['tag'];
$archivo = 'mi_tinywebdb_v2.htm';
if (!file_exists($archivo)) {$handle = fopen($archivo, 'w');}
if(strpos($recibe_post,'storeavalue')){
//////////////////////////// Si ya existe esa Etiqueta, la BORRA.
$arc = file($archivo);
$auxi = fopen($archivo,"w");
foreach($arc as $linea)
{
$campos = explode("|", $linea);
if ($campos[0] != $etiqueta) {
fputs($auxi, $linea);
}
}
fclose($auxi);
/////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
// GUARDAR ETIQUETA Y VALOR.
$valorAGuardar = $_POST['value'];
$linea = $etiqueta."|".$valorAGuardar."| \n";
$auxi = fopen($archivo, 'a'); // Añade $linea al archivo mi_tinywebdb_v2.htm
fwrite($auxi, $linea);
} else {
////////////////////////////////////////////////////////////////
// OBTENER EL VALOR DE LA ETIQUETA.
// Busca en el archivo "mi_tinywebdb_v2.htm" el Valor de la Etiqueta pedida.
$auxi = fopen($archivo, 'r');
$existe = "";
while(!feof($auxi)){
$linea = fgets($auxi);
$campos = explode("|", $linea);
if ($campos[0] == $etiqueta) {
$valor =$campos[1];
$existe ="si";
}
}
// Envía el resultado.
if ($existe == "si"){
// Envia el valor obtenido.
$resultado = array("VALUE", $etiqueta, $valor);
} else {
// Envia "No_existe" esa Etiqueta.
$resultado = array("VALUE", $etiqueta, "No_existe");
}
$resultado_en_JSON = json_encode($resultado);
echo $resultado_en_JSON;
}
fclose($auxi);
?>
|
__________________________________
__________________________________
|