2016-11-20 2 views
-1

Ich habe derzeit ein funktionierendes Login/Register-System. Ich habe versucht, es zu machen, wenn sich ein Benutzer anmeldet und auf einen Button klickt, dessen Benutzername in eine Points.php-Datei übernommen wird. Dann nimmt der PHP den Benutzernamen und fügt +5 Punkte zu dieser spezifischen Benutzerpunktespalte hinzu. Wenn Sie helfen, wissen Sie, dass es sehr geschätzt wird, danke! Diese ist, was ich zur Zeit bin versucht zu verwenden:Aktualisieren von Punkten in einer MySQL-Datenbank mit Android Studio und PHP

activity_user_area.xml:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:padding="@dimen/activity_horizontal_margin"> 

    <TextView 
     android:id="@+id/textView" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentStart="true" 
     android:layout_below="@+id/tvWelcomeMsg" 
     android:text="Username" 
     android:textAppearance="?android:attr/textAppearanceMedium" /> 

    <EditText 
     android:id="@+id/etUsername" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentEnd="true" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentRight="true" 
     android:layout_alignParentStart="true" 
     android:layout_below="@+id/textView" 
     android:editable="false" /> 

    <TextView 
     android:id="@+id/tvWelcomeMsg" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="Welcome" 
     android:textAppearance="?android:attr/textAppearanceLarge" 
     android:layout_alignParentTop="true" 
     android:layout_centerHorizontal="true" /> 

    <Button 
     android:text="Earn Points" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_centerVertical="true" 
     android:layout_alignRight="@+id/tvWelcomeMsg" 
     android:layout_alignEnd="@+id/tvWelcomeMsg" 
     android:id="@+id/bEarn"/> 

</RelativeLayout> 

UserAreaActivity.java:

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

import com.android.volley.RequestQueue; 
import com.android.volley.Response; 
import com.android.volley.toolbox.Volley; 

import org.json.JSONException; 
import org.json.JSONObject; 

public class UserAreaActivity extends AppCompatActivity { 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_user_area); 

     Intent intent = getIntent(); 
     final String username = intent.getStringExtra("username"); 

     final Button bEarn = (Button) findViewById(R.id.bEarn); 

     TextView tvWelcomeMsg = (TextView) findViewById(R.id.tvWelcomeMsg); 
     final EditText etUsername = (EditText) findViewById(R.id.etUsername); 

     // Display user details 
     String message = "Welcome, " + username + "!"; 
     tvWelcomeMsg.setText(message); 
     etUsername.setText(username); 

     bEarn.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       final String username = etUsername.toString(); 

       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) { 
           AlertDialog.Builder builder = new AlertDialog.Builder(UserAreaActivity.this); 
           builder.setMessage("Points Added") 
             .create() 
             .show(); 
          } else { 
           AlertDialog.Builder builder = new AlertDialog.Builder(UserAreaActivity.this); 
           builder.setMessage("Points Not Added") 
             .setNegativeButton("Retry", null) 
             .create() 
             .show(); 
          } 
         } catch (JSONException e) { 
          e.printStackTrace(); 
         } 
        } 
       }; 

       EarnRequest earnRequest = new EarnRequest(username, responseListener); 
       RequestQueue queue = Volley.newRequestQueue(UserAreaActivity.this); 
       queue.add(earnRequest); 
      } 
     }); 
    } 
} 

EarnRequest.java:

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

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

public class EarnRequest extends StringRequest { 
    private static final String EARN_REQUEST_URL = "https://mysite567356ht7ieyjr6u7je.000webhostapp.com/Points.php"; 
    private Map<String, String> params; 

    public EarnRequest(String username, Response.Listener<String> listener) { 
     super(Method.POST, EARN_REQUEST_URL, listener, null); 
     params = new HashMap<>(); 
     params.put("username", username); 
    } 

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

Punkte .php:

<?php 
$con = mysqli_connect("localhost", "id177667_root", "***", "id177667_loginb"); 
$username = $_POST["username"]; 
$statement = mysqli_prepare($con, "UPDATE user SET points = points + 5 WHERE username_column =".$username); 
mysqli_stmt_bind_param($statement, "s", $username); 
mysqli_stmt_execute($statement); 
$response = array(); 
$response["success"] = true; 

echo json_encode($response); 
?> 
+0

'sein sollten .. WHERE username_column =' in Ihrer prepare-Anweisung (ein Platzhalter '?' anstelle von '$ username'). Und du machst keine Fehlerbehebungen, du gehst nur davon aus, dass alles gut läuft. – Qirel

+0

Also, mein Sprichwort sollte so aussehen?

+0

'mysqli_prepare ($ con," UPDATE Benutzer SET Punkte = Punkte + 5 WHERE username_column =? ");' So sehen Sie sich die Anführungszeichen an. – Qirel

Antwort

0

Zuerst in Ihrer PHP-Datei holt die Punkte mit

Select points from user where username_column =$username 

und dann die Anweisung Update-Abfrage verwendet

$result=$result + 5; 

UPDATE user SET points = $result WHERE username_column =$username 
Verwandte Themen