Ir para o conteúdo
rs_pt

Insert na BD ao mudar localizaçao GPS

Mensagens Recomendadas

rs_pt

É o seguinte, a ideia é ao mudar a localização, a app enviar as coordenadas para uma base de dados.

estou a passar corretamente a lat e longitude para uma variavel string (usei um toast para testar), o ficheiro php parece-me estar correto, o problema estará mesmo no código utilizado para enviar a coordenada para a base de dados. O codigo é:

APP

    @Override
    public void onLocationchanged(final Location location) {
	    String link = "survteste.atwebpages.com/insertDB.php";

	    String latitude = String.valueOf(location.getLatitude());

String longitude = String.valueOf(location.getLongitude());

	    //teste
	    //Toast.makeText(getApplicationContext(), (String)latitude,
	    //	    Toast.LENGTH_LONG).show();

	    //INSERT NA BD


	    try {
		    URL url = new URL(link);
		    HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection();
		    httpURLConnection.setRequestMethod("POST");
		    httpURLConnection.setDoOutput(true);

		    OutputStream OS = httpURLConnection.getOutputStream();
		    BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(OS, "UTF-8"));

		 String data = URLEncoder.encode(latitude, "UTF-8") + "&" +URLEncoder.encode(longitude, "UTF-8");

		    bufferedWriter.write(data);
		    bufferedWriter.flush();
		    bufferedWriter.close();
		    OS.close();
		    InputStream IS = httpURLConnection.getInputStream();
		    IS.close();
		    httpURLConnection.disconnect();

    } catch (MalformedURLException e) {
		    e.printStackTrace();
	    } catch (UnsupportedEncodingException e) {
		    e.printStackTrace();
	    } catch (ProtocolException e) {
		    e.printStackTrace();
	    } catch (IOException e) {
		    e.printStackTrace();
	    }
    }

eu imagino qe o problema esteja mesmo no String Data. Ja agora, aqui vai o ficheiro php:

<?php
$servername = " ";
$username = " ";
$password = " ";
$dbname = " ";
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
   die("Connection failed: " . $conn->connect_error);
}

//Recebendo a informação
$latitude = $_POST['latitude'];
$longitude = $_POST['longitude'];

$query = "INSERT INTO coordenadas VALUES ($latitude, $longitude)";
mysqli_query($conn, $query);

$conn->close();
?>

Ocultei o nome da BD e a pass, mas eles estao la e estao certos.

Se alguem puder ajudar , ficaria muito agradecido.

Obrigado desde ja

Cumprimentos

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
HappyHippyHippo

para que o formato da query SQL de inserção não necessite de especificar os campos dos dados é obrigatório dar os valores para todas as colunas do registo assim como os valores estarem pela ordem da estrutura da tabela.

caso contrário é obrigatório dar a lista dos campos refernetes aos valores que estás a fornecer na criação do registo


IRC : sim, é algo que ainda existe >> #p@p

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
rs_pt

para que o formato da query SQL de inserção não necessite de especificar os campos dos dados é obrigatório dar os valores para todas as colunas do registo assim como os valores estarem pela ordem da estrutura da tabela.

caso contrário é obrigatório dar a lista dos campos refernetes aos valores que estás a fornecer na criação do registo

Na BD, a tabela coordenadas só contem as tabelas latitude e longitude e estao na ordem correta, podes ser mais especifico? nao estou mesmo a conseguir resolver este problema.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
HappyHippyHippo

dá um exemplo real dos dados da latitude e longitude assim diz qual o tipo de dados dessas colunas na base de dados


IRC : sim, é algo que ainda existe >> #p@p

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
rs_pt

dá um exemplo real dos dados da latitude e longitude assim diz qual o tipo de dados dessas colunas na base de dados

os dados sao extraidos pela API em string. Portanto na base de dados tmb tenho em string, como ainda estou a testar por agora fica assim, se calhar mais tarde converto para float.Daí usar o UTF-8.

Editado por rs_pt

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
HappyHippyHippo

se os dados da tabela é string, o SQL está errado, não estás a "criar" uma string correcta.

pensa bem na string SQL final ...


IRC : sim, é algo que ainda existe >> #p@p

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
rs_pt

se os dados da tabela é string, o SQL está errado, não estás a "criar" uma string correcta.

pensa bem na string SQL final ...

podes-me dizer como é que se faz? estou empancado nisto. Nem encontro solução sequer...

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
HappyHippyHippo

vamos supor que os dados de longitude e latitude são 1 e 2 respectivamente.

qual a string SQL que estás a criar para ser executada ?


IRC : sim, é algo que ainda existe >> #p@p

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
rs_pt

Insert into coordenadas (latitude,longitude);

certo ? No ficheiro php isso ficou bem

Editado por rs_pt

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
HappyHippyHippo

eu quero que digas qual a string completa que estás a criar aqui :

$query = "INSERT INTO coordenadas VALUES ($latitude, $longitude)";


IRC : sim, é algo que ainda existe >> #p@p

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
rs_pt

Está igual...

Partindo do princípio que a lat=1 e long=2, para inserir valores na BD seria :

INSERT INTO coordenadas VALUES (1,2)

É isto que estás a perguntar ?

Sê direto na resposta sff porque estou enpancado nisto e este detalhe está a parar tudo .

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
HappyHippyHippo

INSERT INTO coordenadas VALUES (1,2)

certo, mas disseste que os campos na base de dados são strings, e na query não tens strings, mas sim valores numéricos


IRC : sim, é algo que ainda existe >> #p@p

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
HappyHippyHippo

faltam as "" nas variáveis ? Do género "$latitude"? Tenho impressão que já testei isso é não deu

não são aspas mas apostrofes

Editado por HappyHippyHippo

IRC : sim, é algo que ainda existe >> #p@p

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
rs_pt

Sim , isso , engano . vou tentar mas duvido que seja disso Pq Acho que já tinha feito dessa maneira . A String data do código android esta certa?

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
HappyHippyHippo

A String data do código android esta certa?

não

testa e vê que dados estás a "criar" ou por outras palavras, qual a string final


IRC : sim, é algo que ainda existe >> #p@p

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
rs_pt

não

testa e vê que dados estás a "criar" ou por outras palavras, qual a string final

Não esta a funcionar como é obvio, o String data está mal. Os dados que "estou" a criar, sao as coordenadas vindas da API que sao em String. O que eu nao sei mesmo é fazer a String data para depois o BufferedWriter.write() utilizar.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
HappyHippyHippo

deveria ser algo do género:

String data = URLEncoder.encode("latitude=" + latitude + "&longitude=" + longitude, "UTF-8");

IRC : sim, é algo que ainda existe >> #p@p

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.