Link to home
Start Free TrialLog in
Avatar of John Collier
John Collier

asked on

How do i fix error inside message when pressing button on app coded with Android Studio ?

Currently working on an app in A with 3 pages (activities if you will).

A login, register & reservation page. All work fine except for the latter. Whenever i try sending data to my local database, on the reservation page I get an error. The error's inside my succes/fail message after i've pressed the send button

How do i fix this ?



Reservation.JAVA (called Reserveer.JAVA)

 
package com.example.baudelo.zeilreservering;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;

public class Reserveer extends AppCompatActivity {
    EditText Eindereservering;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_boten);
        Eindereservering = (EditText)findViewById(R.id.dteDatum);
    }

public void OnRes(View view) {
    String dte_datum = Eindereservering.getText().toString();
    String type = "reserveer";
    BackgroundWorker backgroundWorker = new BackgroundWorker(this);
    backgroundWorker.execute(type, dte_datum);
}

}

Open in new window

BackgroundWorker.JAVA

package com.example.baudelo.zeilreservering;

import android.app.AlertDialog;
import android.content.Context;
import android.os.AsyncTask;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLEncoder;

public class BackgroundWorker extends AsyncTask<String,Void,String> {
    Context context;
    AlertDialog alertDialog;
    BackgroundWorker (Context ctx) {
        context = ctx;
    }
    @Override
    protected String doInBackground(String... params) {
        String type = params[0];
        String login_url = "http://10.0.2.2/login.php";
        String register_url = "http://10.0.2.2/register.php";
        String reserveer_url = "http://10.0.2.2/reserveer.php";
        if(type.equals("login")) {
            try {
                String user_name = params[1];
                String password = params[2];
                URL url = new URL(login_url);
                HttpURLConnection httpURLConnection = (HttpURLConnection)url.openConnection();
                httpURLConnection.setRequestMethod("POST");
                httpURLConnection.setDoOutput(true);
                httpURLConnection.setDoInput(true);
                OutputStream outputStream = httpURLConnection.getOutputStream();
                BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(outputStream, "UTF-8"));
                String post_data = URLEncoder.encode("user_name", "UTF-8")+"="+URLEncoder.encode(user_name, "UTF-8")+"&"
                        +URLEncoder.encode("password", "UTF-8")+"="+URLEncoder.encode(password, "UTF-8");
                bufferedWriter.write(post_data);
                bufferedWriter.flush();
                bufferedWriter.close();
                outputStream.close();
                InputStream inputStream = httpURLConnection.getInputStream();
                BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream,"iso-8859-1"));
                String result="";
                String line="";
                while((line = bufferedReader.readLine())!= null) {
                    result += line;
                }
                bufferedReader.close();
                inputStream.close();
                httpURLConnection.disconnect();
                return result;
            } catch (MalformedURLException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
        } else if(type.equals("register")) {
            try {
                String name = params[1];
                String surname = params[2];
                String username = params[3];
                String password = params[4];
                URL url = new URL(register_url);
                HttpURLConnection httpURLConnection = (HttpURLConnection)url.openConnection();
                httpURLConnection.setRequestMethod("POST");
                httpURLConnection.setDoOutput(true);
                httpURLConnection.setDoInput(true);
                OutputStream outputStream = httpURLConnection.getOutputStream();
                BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(outputStream, "UTF-8"));
                String post_data = URLEncoder.encode("name", "UTF-8")+"="+URLEncoder.encode(name, "UTF-8")+"&"
                + URLEncoder.encode("surname", "UTF-8")+"="+URLEncoder.encode(surname, "UTF-8")+"&"
                + URLEncoder.encode("username", "UTF-8")+"="+URLEncoder.encode(username, "UTF-8")+"&"
                +URLEncoder.encode("password", "UTF-8")+"="+URLEncoder.encode(password, "UTF-8");
                bufferedWriter.write(post_data);
                bufferedWriter.flush();
                bufferedWriter.close();
                outputStream.close();
                InputStream inputStream = httpURLConnection.getInputStream();
                BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream,"iso-8859-1"));
                String result="";
                String line="";
                while((line = bufferedReader.readLine())!= null) {
                    result += line;
                }
                bufferedReader.close();
                inputStream.close();
                httpURLConnection.disconnect();
                return result;
            } catch (MalformedURLException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
        } else if(type.equals("reserveer")) {
            try {
                String Eindereservering = params[1];
                URL url = new URL(reserveer_url);
                HttpURLConnection httpURLConnection = (HttpURLConnection)url.openConnection();
                httpURLConnection.setRequestMethod("POST");
                httpURLConnection.setDoOutput(true);
                httpURLConnection.setDoInput(true);
                OutputStream outputStream = httpURLConnection.getOutputStream();
                BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(outputStream, "UTF-8"));
                String post_data = URLEncoder.encode("Eindereservering", "UTF-8")+"="+URLEncoder.encode(Eindereservering, "UTF-8");
                bufferedWriter.write(post_data);
                bufferedWriter.flush();
                bufferedWriter.close();
                outputStream.close();
                InputStream inputStream = httpURLConnection.getInputStream();
                BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream,"iso-8859-1"));
                String result="";
                String line="";
                while((line = bufferedReader.readLine())!= null) {
                    result += line;
                }
                bufferedReader.close();
                inputStream.close();
                httpURLConnection.disconnect();
                return result;
            } catch (MalformedURLException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        return null;
    }

    @Override
    protected void onPreExecute() {
        alertDialog = new AlertDialog.Builder(context).create();
        alertDialog.setTitle("Login Status");
    }

    @Override
    protected void onPostExecute(String result) {
        alertDialog.setMessage(result);
        alertDialog.show();
    }

    @Override
    protected void onProgressUpdate(Void... values) {
        super.onProgressUpdate(values);
    }
}

Open in new window

second_activity.JAVA (called Boten.Java)

       
package com.example.baudelo.zeilreservering;

    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    import android.view.View;
    import android.widget.EditText;

    public class Boten extends AppCompatActivity {
        EditText Eindereservering;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_boten);
            Eindereservering = (EditText)findViewById(R.id.dteDatum);


 }

    public void OnRes(View view) {
        String dte_datum = Eindereservering.getText().toString();
        String type = "reserveer";
        BackgroundWorker backgroundWorker = new BackgroundWorker(this);
        backgroundWorker.execute(type, dte_datum);
    }
}

Open in new window

Reservation.php (called Reserveer.php)

<?php
require "conn.php";
if(!empty($_POST['eindereservering'])) {
    $eindereservering = $_POST["eindereservering"];
}
$mysql_qry = "insert into boten_data (eindereservering) values ('$eindereservering')";

if($conn->query($mysql_qry) === TRUE) {
echo "ZeilReservering: Succesvol gereserveerd!";
}
else {
echo "Oeps, deze boot is al gereserveerd!";
}
$conn->close();
?>

Open in new window


Thanks to anyone for replying / helping me out!!

___________

Other code files in the project

MainActivity.JAVA

package com.example.baudelo.zeilreservering;

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;

public class MainActivity extends AppCompatActivity {
    EditText UsernameEt, PasswordEt;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        UsernameEt = (EditText)findViewById(R.id.etUserName);
        PasswordEt = (EditText)findViewById(R.id.etPassword);
    }

public void OnLogin(View view) {
    String username = UsernameEt.getText().toString();
    String password = PasswordEt.getText().toString();
    String type = "login";
    BackgroundWorker backgroundWorker = new BackgroundWorker(this);
    backgroundWorker.execute(type, username, password);
    startActivity(new Intent(this,Boten.class));
}
public void OpenReg(View view) {
        startActivity(new Intent(this,Register.class));
}
}

Open in new window



Register.JAVA

package com.example.baudelo.zeilreservering;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;

public class Register extends AppCompatActivity {
    EditText name, surname, username, password;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_register);
        name = (EditText)findViewById(R.id.et_name);
        surname = (EditText)findViewById(R.id.et_surname);
        username = (EditText)findViewById(R.id.et_username);
        password = (EditText)findViewById(R.id.et_password);
    }

    public void OnReg(View view) {
        String str_name = name.getText().toString();
        String str_surname = surname.getText().toString();
        String str_username = username.getText().toString();
        String str_password = password.getText().toString();
        String type = "register";
        BackgroundWorker backgroundWorker = new BackgroundWorker(this);
        backgroundWorker.execute(type, str_name, str_surname, str_username, str_password);
    }

}

Open in new window

ASKER CERTIFIED SOLUTION
Avatar of Mlungisi Ndlela
Mlungisi Ndlela
Flag of South Africa image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
Avatar of John Collier
John Collier

ASKER

<?php
require "conn.php";
if(!empty($_POST['eindereservering'])) {
    $eindereservering = $_POST["eindereservering"];
}
$mysql_qry = "insert into boten_data (eindereservering) values ('$eindereservering')";

if($conn->query($mysql_qry) === TRUE) {
echo "ZeilReservering: Succesvol gereserveerd!";
}
else {
echo "Oeps, deze boot is al gereserveerd!";
}
$conn->close();
?>
SOLUTION
Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
I've replaced the php code with your new code, yet i still get the exact same error. I do think your php code is correct though! maybe there's an error somewhere in the Java code?
SOLUTION
Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
conn.php

<?php
$db_name = "zeilreservering";
$mysql_username = "root";
$mysql_password = "";
$server_name = "localhost";
$conn = mysqli_connect($server_name, $mysql_username, $mysql_password, $db_name);

?>

Open in new window


NEW error message:
User generated image
SOLUTION
Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
My apologies, you were right, the new error message was indeed helpful! i didn't notice the difference...

It works now!!!  thank you!!

Unfortunately i discovered a new problem...

It says it's empty though i've clearly inserted text:

User generated image
SOLUTION
Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
SOLUTION
Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
SOLUTION
Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
SOLUTION
Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
<?php
require "conn.php";
if(!empty($_POST['Eindereservering'])){
$eindereservering = $_POST['Eindereservering'];

$sql = "INSERT INTO `zeilreservering`.`boten_data` (`eindereservering`) VALUES ('".$eindereservering."')";
if(mysqli_query($conn, $sql)){
echo "ZeilReservering: Succesvol gereserveerd!";
}
else {
echo "Oeps, deze boot is al gereserveerd!";
}
}else{
echo "Post was empty";
}

$conn->close();
?> 

Open in new window


this error now:
User generated image
SOLUTION
Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
like this:

echo (mysqli_error($con).);


?
SOLUTION
Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
i don't know the correct datetime value,

but it doesn't have to be datetime, simple text is also good, how do i change it so it accepts text input
SOLUTION
Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
SOLUTION
Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
Sorry, i already knew that i simply had to change it inside my database from 'datetime' to 'text' field. But i was confused lol, anyways, sorry you wrote that last code, i don't need to convert it. Saving it as text is good enough.

It works now!!!! I'm so happy, thanks for helping me, you've been EXTREMELY helpful and patient! there wasn't so much code wrong, only the php, i was just confused i think & maybe i'm better at Java than php lol.
SOLUTION
Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
SOLUTION
Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
I'm doing one last test (re-building my whole project etc.) just to be sure everything's aright, you know?

Please message me so i can express my gratitude towards you.
No problem.
Personalised help