Não presisa saber nada de PHP, basta copiar os arquivos da API em C:\xampp\htdocs\Api_php :
edite o config.php a parte do mysql (IP E PORTA, LOCAL) teste.php(deve ser editado diretamente é só para testar se server php e mysql estar rodando)
'Se tudo estiver rodando no xampp deve aparecer uma página con os dados do select e opções de delete, update...:
http://127.0.0.1:8080/Api_php/teste.php --> mudei a porta pois tava conflitando com outra coisa
OU
toda http://127.0.0.1/Api_php/teste.php ---> padrão porta 80
toda inserção, exclusão, atualização e seleção fica do lado do B4A exemplo abaixo:
Sub Carregar Usuários
Starter.str_sql = "SELECIONE código, login, senha FROM usuários"
Starter.POST_Query = "{""dbsenha"":""" & Starter.SenhaPW & """,""database"":""" & Starter.databaseName & """, ""query"": """ & Starter.str_sql & """}"
HttpJob1.PostString(Starter.URLBase, Starter.POST_Query)
HttpJob1.GetRequest.SetContentType("aplicativo/json")
Fim do sub
Sub HttpJob1_ResponseSuccess(Trabalho como HttpJob)
Tentar
Dim jsonString como String = Job.GetString
Log("Resposta JSON: " & jsonString)
Analisador Dim como JSONParser
analisar.Initialize(jsonString)
Dim root como mapa = parser.NextObject
Se root.ContainsKey("sucesso") e root.Get("sucesso") = True então
Dados escuros como lista = root.Get("dados")
Log("Dados recebidos: " & dados)
' Atualizar SpinnerComboBox
SpinnerComboBox.Limpar
Para cada item como mapa em dados
Usuário escuro como mapa
usuário.Inicializar
usuário.Put("id", item.Get("código"))
usuário.Put("login", item.Get("login"))
user.Put("senha", item.Get("senha"))
UserList.Add(usuário)
SpinnerComboBox.Add(usuário.Get("login"))
Próximo
Outro
Log("Erro sem sucesso: " & root.Get("erro"))
ToastMessageShow("Erro: " & root.Get("erro"), Verdadeiro)
Fim Se
Pegar
Log("Erro ao processar JSON: " & LastException)
ToastMessageShow("Erro ao processar dados", True)
Fim da tentativa
Fim do sub
Sub JobDone(Trabalho como HttpJob)
Se Job.Success Então
Log("Resposta do servidor: " & Job.GetString)
Veja Job.JobName = "HttpJob1" Então
CallSub2(Eu, "HttpJob1_ResponseSuccess", Trabalho)
Fim Se
Outro
Log("Erro na requisição: " & Job.ErrorMessage)
ToastMessageShow("Erro na requisição: " & Job.ErrorMessage, True)
Fim Se
Trabalho.Libertação
Fim do sub
Sub HttpJob1_ResponseError(Trabalho como HttpJob, ErrorMessage como String)
Log("Erro na requisição: " & ErrorMessage)
ToastMessageShow("Erro na requisição: " & ErrorMessage, True)
Fim do sub
'************************************************* *******************
'Exemplos de operações DELETE, INSERT e UPDATE
Sub DeleteUser(id como String)
Tentar
Consulta Dim Como String = "{""dbsenha"":""" & Starter.SenhaPW & """,""database"":""" & Starter.databaseName & """, ""query"":""DELETE FROM usuários WHERE codigo = ?""}"
HttpJob1.PostString(Starter.URLBase, consulta)
HttpJob1.GetRequest.SetContentType("aplicativo/json")
Pegar
Log("Erro ao preparar uma consulta DELETE: ")
ToastMessageShow("Erro ao preparar uma consulta DELETE: ", True)
Fim da tentativa
Fim do sub
Sub InsertUser(login como String, senha como String)
Tentar
Dim consulta As String = "{""dbsenha"":""" & Starter.SenhaPW & """,""database"":""" & Starter.databaseName & """, ""query"":" "INSERT INTO usuários (login, senha) VALORES (?, ?)""}"
HttpJob1.PostString(Starter.URLBase, consulta)
HttpJob1.GetRequest.SetContentType("aplicativo/json")
Pegar
Log("Erro ao preparar uma consulta INSERT: " )
ToastMessageShow("Erro ao preparar uma consulta INSERT: ", True)
Fim da tentativa
Fim do sub
Sub UpdateUser(id como string, login como string, senha como string)
Tentar
Dim consulta As String = "{""dbsenha"":""" & Starter.SenhaPW & """,""database"":""" & Starter.databaseName & """, ""query"":" "UPDATE usuários SET login = ?, senha = ? WHERE codigo = ?""}"
HttpJob1.PostString(Starter.URLBase, consulta)
HttpJob1.GetRequest.SetContentType("aplicativo/json")
Pegar
Log("Erro ao preparar uma consulta UPDATE: ")
ToastMessageShow("Erro ao preparar uma consulta UPDATE: ", True)
Fim da tentativa
Fim do sub
xampp é perfeito pois já trais 2 serviços o mysql e o php, a função do php vai ser apenas fazer uma ponte do B4A para MySQL , eu já tinha vista outras soluções mais todas como query(delere, insert,update e select ) encontradas no php dificultando a vida de quem não quer aprender PHP, e quer apenas fazer seu APP se conectar ao Mysql, esta solução não envolve segurança e funcionalidade sim.
edite o config.php a parte do mysql (IP E PORTA, LOCAL) teste.php(deve ser editado diretamente é só para testar se server php e mysql estar rodando)
'Se tudo estiver rodando no xampp deve aparecer uma página con os dados do select e opções de delete, update...:
http://127.0.0.1:8080/Api_php/teste.php --> mudei a porta pois tava conflitando com outra coisa
OU
toda http://127.0.0.1/Api_php/teste.php ---> padrão porta 80
toda inserção, exclusão, atualização e seleção fica do lado do B4A exemplo abaixo:
Sub Carregar Usuários
Starter.str_sql = "SELECIONE código, login, senha FROM usuários"
Starter.POST_Query = "{""dbsenha"":""" & Starter.SenhaPW & """,""database"":""" & Starter.databaseName & """, ""query"": """ & Starter.str_sql & """}"
HttpJob1.PostString(Starter.URLBase, Starter.POST_Query)
HttpJob1.GetRequest.SetContentType("aplicativo/json")
Fim do sub
Sub HttpJob1_ResponseSuccess(Trabalho como HttpJob)
Tentar
Dim jsonString como String = Job.GetString
Log("Resposta JSON: " & jsonString)
Analisador Dim como JSONParser
analisar.Initialize(jsonString)
Dim root como mapa = parser.NextObject
Se root.ContainsKey("sucesso") e root.Get("sucesso") = True então
Dados escuros como lista = root.Get("dados")
Log("Dados recebidos: " & dados)
' Atualizar SpinnerComboBox
SpinnerComboBox.Limpar
Para cada item como mapa em dados
Usuário escuro como mapa
usuário.Inicializar
usuário.Put("id", item.Get("código"))
usuário.Put("login", item.Get("login"))
user.Put("senha", item.Get("senha"))
UserList.Add(usuário)
SpinnerComboBox.Add(usuário.Get("login"))
Próximo
Outro
Log("Erro sem sucesso: " & root.Get("erro"))
ToastMessageShow("Erro: " & root.Get("erro"), Verdadeiro)
Fim Se
Pegar
Log("Erro ao processar JSON: " & LastException)
ToastMessageShow("Erro ao processar dados", True)
Fim da tentativa
Fim do sub
Sub JobDone(Trabalho como HttpJob)
Se Job.Success Então
Log("Resposta do servidor: " & Job.GetString)
Veja Job.JobName = "HttpJob1" Então
CallSub2(Eu, "HttpJob1_ResponseSuccess", Trabalho)
Fim Se
Outro
Log("Erro na requisição: " & Job.ErrorMessage)
ToastMessageShow("Erro na requisição: " & Job.ErrorMessage, True)
Fim Se
Trabalho.Libertação
Fim do sub
Sub HttpJob1_ResponseError(Trabalho como HttpJob, ErrorMessage como String)
Log("Erro na requisição: " & ErrorMessage)
ToastMessageShow("Erro na requisição: " & ErrorMessage, True)
Fim do sub
'************************************************* *******************
'Exemplos de operações DELETE, INSERT e UPDATE
Sub DeleteUser(id como String)
Tentar
Consulta Dim Como String = "{""dbsenha"":""" & Starter.SenhaPW & """,""database"":""" & Starter.databaseName & """, ""query"":""DELETE FROM usuários WHERE codigo = ?""}"
HttpJob1.PostString(Starter.URLBase, consulta)
HttpJob1.GetRequest.SetContentType("aplicativo/json")
Pegar
Log("Erro ao preparar uma consulta DELETE: ")
ToastMessageShow("Erro ao preparar uma consulta DELETE: ", True)
Fim da tentativa
Fim do sub
Sub InsertUser(login como String, senha como String)
Tentar
Dim consulta As String = "{""dbsenha"":""" & Starter.SenhaPW & """,""database"":""" & Starter.databaseName & """, ""query"":" "INSERT INTO usuários (login, senha) VALORES (?, ?)""}"
HttpJob1.PostString(Starter.URLBase, consulta)
HttpJob1.GetRequest.SetContentType("aplicativo/json")
Pegar
Log("Erro ao preparar uma consulta INSERT: " )
ToastMessageShow("Erro ao preparar uma consulta INSERT: ", True)
Fim da tentativa
Fim do sub
Sub UpdateUser(id como string, login como string, senha como string)
Tentar
Dim consulta As String = "{""dbsenha"":""" & Starter.SenhaPW & """,""database"":""" & Starter.databaseName & """, ""query"":" "UPDATE usuários SET login = ?, senha = ? WHERE codigo = ?""}"
HttpJob1.PostString(Starter.URLBase, consulta)
HttpJob1.GetRequest.SetContentType("aplicativo/json")
Pegar
Log("Erro ao preparar uma consulta UPDATE: ")
ToastMessageShow("Erro ao preparar uma consulta UPDATE: ", True)
Fim da tentativa
Fim do sub
xampp é perfeito pois já trais 2 serviços o mysql e o php, a função do php vai ser apenas fazer uma ponte do B4A para MySQL , eu já tinha vista outras soluções mais todas como query(delere, insert,update e select ) encontradas no php dificultando a vida de quem não quer aprender PHP, e quer apenas fazer seu APP se conectar ao Mysql, esta solução não envolve segurança e funcionalidade sim.
Attachments
Last edited: