|     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.

B4A en español - Juan Antonio Villalpando
(BASIC4Android)

-- Tutorial de B4A --

Volver al índice del tutorial

____________________________

108.- Conectar con MySQL.

Se trata de comunicarnos con una base de datos remota MySQL.

Disponemos de la siguente pantalla.

Además agregamos la librería WebViewExtras en una versión mayor o igual a la 1.30.

Creamos es código...

Código B4A
Sub Process_Globals
// Juan Antonio Villalpando
// juana1991@yahoo.com 

// http://kio4.com

End Sub

Sub Globals
 Dim Label1, Label2 As Label
 Dim EditText1, EditText2, EditText3 As EditText
 Dim WebView1 As WebView
 Dim WebViewExtras1 As WebViewExtras
 Dim orden As String
 Dim Nombre, Edad, Ciudad, Nombre2 As String
 
End Sub

Sub Activity_Create(FirstTime As Boolean)
    Activity.LoadLayout("Layout1")
     WebViewExtras1.addJavascriptInterface(WebView1, "B4A")
     WebViewExtras1.addWebChromeClient(WebView1, "")
End Sub

Sub Activity_Resume

End Sub

Sub Activity_Pause (UserClosed As Boolean)

End Sub


Sub btnEnviar_Click
Nombre = EditText1.Text
Edad = EditText2.Text
Ciudad = EditText3.Text

orden= "INSERT INTO personas (Nombre, Edad, Ciudad) VALUES ('" & Nombre & "','" & Edad & "','" & Ciudad & "')"
orden= orden.Replace (" ","%20")

WebView1.LoadUrl("http://kio4.com/appinventor/php/basedatosmysql.php?orden=" & orden)
End Sub

Sub btnBorrarNombre_Click
Nombre = EditText1.Text

orden= "DELETE FROM personas WHERE Nombre='" & Nombre & "'"
orden= orden.Replace (" ","%20")

WebView1.LoadUrl("http://kio4.com/appinventor/php/basedatosmysql.php?orden=" & orden)
End Sub

Sub btnActualiza_Click
Nombre = EditText1.Text
Nombre2 = EditText2.Text

orden= "UPDATE personas SET Nombre='" & Nombre & "' WHERE Nombre='" & Nombre2 & "'"
orden= orden.Replace (" ","%20")

WebView1.LoadUrl("http://kio4.com/appinventor/php/basedatosmysql.php?orden=" & orden)
End Sub

Sub btnVertabla_Click

orden= "SELECT * FROM personas ORDER BY Nombre"
orden= orden.Replace (" ","%20")

WebView1.LoadUrl("http://kio4.com/appinventor/php/basedatosmysql.php?orden=" & orden) 
End Sub

Sub WebView1_PageFinished (Url As String)
  
   Dim Javascript As String
   Javascript="B4A.CallSub('Process_HTML', false, document.documentElement.outerHTML)"

   Log("PageFinished: "&Javascript)
   WebViewExtras1.executeJavascript(WebView1, Javascript)
   Log("FIN")
End Sub

Sub Process_HTML(Html As String)
   Label1.text = Html
End Sub
      

Queremos INSERTAR EN la tabla personas los Valores de Nombre, Edad y Ciudad

orden= "INSERT INTO personas (Nombre, Edad, Ciudad) VALUES ('" & Nombre & "','" & Edad & "','" & Ciudad & "')"

Cuidado con las comillas 'simple' y las comillas "dobles"

Cambiamos los espacios por su código %20

orden= orden.Replace (" ","%20")

ya se podríamos tener problemas al enviar la orden con espacios.

Ejecutamos la orden enviándola a la web.

WebView1.LoadUrl("http://kio4.com/appinventor/php/basedatosmysql.php?orden=" & orden)

_________________
- 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.com/appinventor/php/basedatosmysql.php

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

basedatosmysql.php (Copiar este archivo en C:\wamp\www)
<?php

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

// http://kio4.com

$databasehost = "localhost";
$databasename = "ciudadanos";
$databaseusername ="root";
$databasepassword = "1234";

$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 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;

    }
///////////////////////////////////////////////////////////////////////////////    
?>

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  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

________________________________________________________________________________

En las órdenes de INSERTAR, BORRAR, ACTUALIZAR no necesitamos que nos devuelva valores,

pero en las órdenes de Vertabla y BuscarNombre, nos deberá devolver los datos de toda la tabla o del Nombre requerido.

Tanto una como otra necesitan de la orden SELECT, así que en el archivo PHP cuando llegue petición con la palabra SELECT, realizará esta parte del código...


///////////////////////////////////////////////////////////////////////////////
// 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

Y esto saldrá en la WebView.

Queremos que la información que sale en la WebView también la podamos obtener en una variable o directamente en la Etiqueta Label1, para ello necesitamos utilizar WebViewExtras y esta parte del código...

 

WebViewExtras1.addJavascriptInterface(WebView1, "B4A")
WebViewExtras1.addWebChromeClient(WebView1, "")

Sub WebView1_PageFinished (Url As String)
Dim
Javascript As String
Javascript="B4A.CallSub('Process_HTML', false, document.documentElement.outerHTML)"
Log("PageFinished: "&Javascript)
WebViewExtras1.executeJavascript(WebView1, Javascript)
Log("FIN")
End
Sub

Sub Process_HTML(Html As String)
Label1.text = Html
End Sub

________________________________

- 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