|     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

____________________________

340.- App inventor y MySQL.

p340_mysql_php.aia

- En esta ocasión vamos a comunicar el Android de nuestro móvil con una base de datos externa ubicada en un servidor web.
- Nuestra base de datos será de tipo MySQL y la forma de comunicarnos con ella será mediante archivos PHP.

- Hay dos formas de hacerlo:

- Una, los códigos que manejan la base de datos (INSERT INTO personas (Nombre, Edad, Ciudad) VALUES ('Juan', '22', 'Jerez')"; están en el código de bloques de App inventor y los enviamos a un archivos PHP del servidor para que haga esa operación en la base de datos del servidor.

- Otra, en el código de bloques de App inventor se llama a un archivo PHP que se encuentra en el servidor y ese archivo tiene el código (INSERT INTO personas (nombre, edad, ciudad) VALUES ('juan', '22', 'jerez')" para que haga esa operación en la base de datos del servidor.

---------------------------------------------

- Vamos hacerlo con el primer método, es decir los códigos de MySQL estarán en App inventor.

(En el siguiente tutorial: 340B_appinventor_mysql, lo haremos de la otra forma, poniendo los códigos de MySQL en un archivo php)

_________________

- Hosting. Base de datos MySQL y PHP.

- Partimos que tenemos la base de datos de tutoriales anteriores en el servidor gratuito de hostinger según vimos en el tutorial... 317_hosting_gratuito.htm
- (También puedes experimentar con el servidor WAMP instalado en tu ordenador como indico al final de esta página).

- Aquí vamos hacerlo con el servidor remoto de hostinger.

- Ya vimos en 317_hosting_gratuito.htm la creación de la base de datos u798509677_comun y dentro de ella la tabla personas aquí la tenemos...

- La base de datos tendrá estas referencias, que utilizaremos para comunicarnos con ella por PHP:

// 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";
$link = mysql_connect($db_host, $db_login, $db_pswd);

_________________
- Diseño.

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

_________________
- Bloques.

- Vamos a estudiar los distintos bloques.

_________________
- Insertar.

Para insertar los datos de Nombre, Edad y Ciudad en nuestra base de datos, debemos enviar esta orden:

INSERT INTO  personas (Nombre, Edad, Ciudad)  VALUES('CampoDeTexto1','CampoDeTexto2','CampoDeTexto3')

Tomará los valores de los CampoDeTexto y lo insertará en su correspondiente columna de la tabla personas.

Esto lo haremos así...

Muy importante: Debes respetar los espacio entre las palabras. El código del espacio en ASCII es 32, que se corresponde en hexadecimal a %20

- Es decir %20 es el espacio.

- Creamos la línea de comandos poniendo los VALUES entre comilla 'simple' y separando mediante coma,

Enviamos esa orden a nuestro servidor web para que actúe un archivo PHP

- El archivo se encuentra en http://kio4.esy.es/basedatosmysql.php

NOTA IMPORTANTE: en donde pone segmento: hay un espacio, no está vacío, debes crear un espacio con el espaciador. Esta bloque lo que hace es sustituir los posibles espacio de datos por %20. Es decir si el usuario escribe Puerto Real, este bloque lo convertirá en Puerto%20Real.

Una vez que tenemos la orden preparada, nos vamos a nuestro archivo basedatosmysql.php que se encuentra en nuestro servidor:

http://kio4.esy.es/basedatosmysql.php

además debes enviar la orden, es decir estarás enviando:

http://kio4.esy.es/basedatosmysql.php?orden=INSERT%20INTO%20personas%20(Nombre,Edad,Ciudad)%20VALUES('Juan','22','Puerto%20Real')

Esto significa:

Ve al archivo basedatosmysql.php lleva una variable llamada orden

La orden INSERTARÁ EN la tabla personas, en las columnas (Nombre, Edad, Ciudad) los VALORES Juan, 22, Puerto Real.

_________________
- Archivo PHP.

En nuestro servidor web necesitaremos un archivo PHP, concretamente: basedatosmysql.php, que tome el valor de la orden y la ejecute para insertar los valores en la tabla persona.

Como bien digo, este archivo debe estar en nuestro servidor web, en mi caso: http://kio4.esy.es/basedatosmysql.php

Si lo estás haciendo con WAMP http://localhost/basedatosmysql.php

basedatosmysql.php

<?php

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

// http://kio4.com

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($db_host, $db_login, $db_pswd) or die(mysql_error()); mysql_set_charset("utf8"); // 2.- CONEXION A LA BASE DE DATOS mysql_select_db($db_name) 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 personas"); $numerodefilas = mysql_num_rows($resultado); if ($numerodefilas > 0) { while ($rowr = mysql_fetch_row($hacer)) { for ($j=0;$j<$numerodefilas;$j++) { $en_csv .= $rowr[$j].", "; } $en_csv .= "\n"."<br>"; } } print $en_csv; } /////////////////////////////////////////////////////////////////////////////// mysql_close($con); ?>

- 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($db_host, $db_login, $db_pswd) 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  personas (Nombre, Edad, Ciudad)  VALUES('Juan','22','Puerto Real')

Hacemos, ejecutamos esa petición

$hacer = mysql_query($peticion);

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

Podemos comprobarlo entrando en nuestra base de datos mediante http://localhost/phpmyadmin

_________________
- Borrar.

Agregamos a los bloques de App inventor los códigos de Borrar y Actualizar.

DELETE FROM personas WHERE Nombre='CampoDeTexto1'

BORRA DE la tabla personas, DONDE se llamen como indica el Nombre

- Escribimos algún Nombre existente y pulsamos el btnBorrar. La orden se enviará con el mismo código de envío que hemos visto anteriormente.

- Se borrará todo el registro de ese usuario.

_________________
- Actualizar.

UPDATE personas SET Edad='CampoDeTexto2', Ciudad='CampoDeTexto3' WHERE Nombre='CampoDeTexto1'

ACTUALIZA la tabla personas. PONES nueva Edad y nueva Ciudad DONDE ese Nombre.

- Escribimos algún Nombre existente, una Edad y una Ciudad. Se modificará la Edad y Ciudad de ese Nombre.

_________________
- Ver tabla y Buscar por Nombre.

Esto es un poco más complicado. En los códigos anteriores enviábamos una orden y se ejecutaba en la base de datos. No nos hacia falta respuesta.

Pero ahora se envía una orden y debemos ObtenerunTexto de Respuesta, es decir le enviamos una orden para Vertodalatabla y nos envía la Respuesta que serán los datos de la tabla.

- La respuesta la envía la orden print $en_csv; que está al final del archivo basedatosmysql.php

Para Ver toda la tabla enviamos esta orden

SELECT * FROM personas ORDER BY Nombre

SELECCIONA todos los datos DE personas ORDENADOS POR Nombre

El bloque Web1.ObtuvoTexto

nos devolverá todos los datos de la tabla en la variable contenidoDeRespuesta.

Ese contenidoDeRespuesta lo pondremos en la Etiqueta1

Además también convertiremos contenidoDeRespuesta a una lista, ya que contenidoDeRespuesta viene en formato CSV y lo mostraremos en la Etiqueta2

La parte del código de basedatosmysql.php que realiza esta orden es distinta a las anteriores.

Esta parte del código ya se añadió antes, no hace falta volverlo a escribir.
///////////////////////////////////////////////////////////////////////////////
// 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 personas");
    $numerodefilas = mysql_num_rows($resultado);
    if ($numerodefilas > 0) {
     
    while ($rowr = mysql_fetch_row($hacer)) {
     for ($j=0;$j<$numerodefilas;$j++) {
      $en_csv .= $rowr[$j].", ";
     }
     $en_csv .= "\n";
    }
     
    }
     
    print $en_csv;

    }
/////////////////////////////////////////////////////////////////////////////// 

Lo que hace es comprobar si la orden de llegada comienza por la palabra SELECT

if (substr($peticion, 0, 6) == 'SELECT') {

Si es así, realiza el código siguiente, pone los datos obtenido en formato CSV, todo eso es poner coma, cambio de línea... no es necesario entender esta parte del código.

Lo cierto que al final tendremos la variable $en_csv que tendrá la información que queremos en formato CSV

Eso se envía a nuestra aplicación mediante print

Nuestra aplicación tomará la información mediante el bloque Web1.ObtuvoTexto y los datos estarán en contenidoDeRespuesta

__________________

 

El Bloque de Buscar por Nombre es similar, escribimos un Nombre existente en el CampoDeTexto1 y nos mostrará información de ese Nombre.

SELECT * FROM personas WHERE Nombre='CampoDeTexto1'

Tanto en la parte de Borrar como la de Seleccionar Nombre actuará con todos los Nombres que tengan el mismo valor.

_________________
- Se puede hacer con GET y con POST.

- Si ponemos la llamada terminada en interrogación: http://kio4.esy.es/basedatosmysql.php?

En código será como el que hemos visto y en el PHP se recibirá los datos mediante $_GET

$llegan=$_GET;
$peticion=$llegan['orden'];

- Pero si ponemos la llamada de esta manera, sin interrogación:

http://androide.net23.net/correo_conecta2.php

- Tendremos que añadire el Bloque de PublicarTexto

y en el código PHP recibiremos la información mediante $_POST

$datos=$_POST;

$Nombre=$datos['Nombre'];
$Clave=$datos['Clave'];

- De los dos métodos es mejor es le hemos visto en esta página, es decir poner la interrogación y NO poner el Bloque de PublicarTexto.

- En la imagen de abajo presento la comparación de las dos maneras.

-----------------------------------------------------------

- WAMP. Hosting, Base de datos y PHP en tu ordenador local.

 

Si no tienes un hosting remoto, instala en tu ordenador WAMP, es un paquete que trae un servidor web (Apache) con PHP y MySQL. Sitio de WAMP server.

Se instalará en C:\wamp, la carpeta donde tenemos que poner el archivo basedatosmysql.php es C:\wamp\www

Podemos llegar al administrador WAMP desde un icono situado en el área de notificación, cerca del reloj.

Un cuadrado con una W, que debe estar de color verde.

En la línea final, si aparece Put Online, solo podrá ver la web el localhost (es decir, tu ordenador), si aparece Put Offline, la podrá ver otros ordenadores de intranet e internet (si tienes abierto el puerto 80 en el Router).

Para ver la página de inicio escribimos en un navegador http://localhost.

Debemos crear una base de datos con algunos datos. La base de datos la creamos escribiendo en un navegador

http://localhost/phpmyadmin

Base de datos

- Creamos nuestra base de datosque se llamará ciudadanos, y tendrá una tabla llamada personas. Esta tabla tendrá tres columnas: Nombre, Edad, Ciudad , son de tipo varchar.

- Crea también una columna llamada id, de tipo INT con Extra de auto_incremento y PRIMARY, como se explica al principo de esta página.

Ya tenemos la base de datos en nuestro ordenador, mediante http://localhost/phpmyadmin, podemos modificarla, añadirle datos, ampliar el número de columnas,...

Otra cosa importante es crear un usuario y contraseña para manejar esa base de datos.

Se puede poner mediante phpmyadmin en esa base de datos. Mira en Privilegios...
En Privilegios ponemos nombre y contraseña, en nuestro caso ponemos root y 1234 respectivamente.

Pulsamos en root. Editar los privilegios, marcamos todas las opciones.
Bajamos el scroll de la derecha, localizamos contraseña y ponemos 1234.

$databaseusername ="root";
$databasepassword = "1234";

_______________________________

- 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