2016-11-07 3 views
2

Ich habe eine Datenbank mit 000webhost erstellt und meine PHP-Dateien auf den Server hochgeladen. Mit Android Studio versuche ich eine Benutzerregisterseite zu erstellen. Ich klicke, um zur Registrierungsseite zu gehen, gebe alle Informationen ein, drücke den Absenden-Knopf und es bringt mich zurück zur Anmeldeseite, wie es sollte, aber die Information wurde nicht an meine Datenbank gesendet. Ich erhalte keine Fehlermeldung, daher weiß ich nicht, wo ich anfangen soll. Hier ist ein Blick auf den Code meiner Java-Klassen und die PHP-Datei sowie ein Snippet der Manifest-Datei.Wie bekomme ich Daten in eine Datenbank mit PHP und Android Studio (Server 00webhost)?

Das Register Anfrage Java-Klasse

package amp.riot; 

import com.android.volley.Response; 
import com.android.volley.toolbox.StringRequest; 

import java.util.HashMap; 
import java.util.Map; 


public class RegisterRequest extends StringRequest { 
    private static final String REGISTER_REQUEST_URL ="https://upbeat.000webhostapp.com/register.php"; 
    private Map<String, String> params; 

    public RegisterRequest(String name, String username, int age, String password,Response.Listener<String> listener){ 
     super (Method.POST, REGISTER_REQUEST_URL, listener, null); 
     params = new HashMap<>(); 
     params.put("name", name); 
     params.put("username", username); 
     params.put("password", password); 
     params.put("age", age + ""); 
    } 

    public Map<String, String> getParams(){ 
     return params; 
    } 

} 

Die Registerseite Java-Klasse

public class Register extends AppCompatActivity { 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_register); 

    final EditText etAge= (EditText) findViewById(R.id.etAge); 
    final EditText etName= (EditText) findViewById(R.id.etName); 
    final EditText etUsername= (EditText) findViewById(R.id.etUsername); 
    final EditText etPassword= (EditText) findViewById(R.id.etPassword); 
    final Button bRegister= (Button) findViewById(R.id.bRegister); 

    bRegister.setOnClickListener(new View.OnClickListener(){ 
     @Override 
     public void onClick(View v){ 
      final String name=etName.getText().toString(); 
      final String username=etUsername.getText().toString(); 
      final String password=etPassword.getText().toString(); 
      final int age= Integer.parseInt(etAge.getText().toString()); 

      final Response.Listener<String> responseListener = new Response.Listener<String>(){ 
       @Override 
       public void onResponse(String response) { 
        try { 
         JSONObject jsonResponse = new JSONObject(response); 
         boolean success = jsonResponse.getBoolean("success"); 

         if (success) { 
          Intent intent = new Intent(Register.this, Login.class); 
          Register.this.startActivity(intent); 
         } else { 
          AlertDialog.Builder builder = new AlertDialog.Builder(Register.this); 
          builder.setMessage("Register Failed") 
            .setNegativeButton("Retry", null) 
            .create() 
            .show(); 
         } 
        } catch (JSONException e) { 
         e.printStackTrace(); 
        } 
       } 
      }; 
      RegisterRequest registerRequest = new RegisterRequest(name, username, age, password, responseListener); 
      RequestQueue queue = Volley.newRequestQueue(Register.this); 
      queue.add(registerRequest); 
     } 
    }); 

} 

}

Die Manifestdatei

<?xml version="1.0" encoding="utf-8"?> 
    <manifest xmlns:android="http://schemas.android.com/apk/res/android" 
package="amp.riot"> 
<uses-permission android:name="android.permission.INTERNET"></uses-permission> 

Register PHP Datei

<?php 
$con = mysqli_connect("localhost", "id202020_sierra", "05alop59", "id202020_plank"); 

$name = $_POST["name"]; 
$age = $_POST["age"]; 
$username = $_POST["username"]; 
$password = $_POST["password"]; 
$statement = mysqli_prepare($con, "INSERT INTO user(name, username, age, password) VALUES (?, ?, ?, ?)"); 
mysqli_stmt_bind_param($statement, "siss", $name, $username, $age, $password); 
mysqli_stmt_execute($statement); 

$response = array(); 
$response["success"] = true; 
echo json_encode($response); 

?>

+0

Sie sagten, Sie erhalten eine Fehlermeldung, wir brauchen sie. – zack6849

+0

Entschuldigung, ich wollte sagen, dass es keine Fehlermeldung gab, weshalb ich nicht weiß, was ich tun soll. – Bry

Antwort

0

Versuchen StringRequest statt Response.Listener<String>

StringRequest strreq = new StringRequest(Request.Method.POST, url, new Response.Listener<String>() { 
    @Override 
    public void onResponse(String response) { 
     Toast.makeText(getApplicationContext(),response,Toast.LENGTH_SHORT).show(); 
    } 
}, new Response.ErrorListener() { 
    @Override 
    public void onErrorResponse(VolleyError error) { 

    } 
}){ 
    @Override 
    protected Map<String, String> getParams() throws AuthFailureError { 
     Map<String,String> params = new HashMap<String, String>(); 

     params.put("id",id); 
     params.put("name",editText_name.getText().toString()); 
     params.put("pass",editText_pass.getText().toString()); 
     return params; 
    } 
}; 
AppController.getInstance().addToRequestQueue(strreq); 
0

mit Sie haben einen kleinen Fehler in der PHP-Datei gemacht. ändern,

mysqli_stmt_bind_param($statement, "siss", $name, $username, $age, $password); 

To,

mysqli_stmt_bind_param($statement, "ssis", $name, $username, $age, $password); 

Hier s bedeutet String, bedeutet i Integer. Ich glaube, Benutzername ist String und Alter ist int. Danke.

Verwandte Themen