簡體   English   中英

如何在EditText中將PHP變量的值傳遞給Android Studio?

[英]How to pass the value of a PHP variable within an EditText to Android Studio?

我想問你是否知道如何將PHP中變量的值傳遞給android studio中的EditText? 讓我更好地解釋一下,我有一個android應用程序,其中有兩種形式的信息可以輸入並保存在MySQL數據庫中。 數據庫有一個用於第一個表單的表和一個用於第二個表單的表,這兩個表被鏈接,然后第二個表具有一個外部密鑰,該外部密鑰與用第一個表單插入的第一個表的主密鑰相關聯。

我無法做的是,一旦我在第一個表中輸入了數據並通過mysqli Insert_id ()獲得了主鍵,我就不知道如何在第二個表中的edittext中傳遞$ People_id中變量的值。形式

在下面,我留下了我的android代碼,第二種形式的代碼中存在問題,因為輸入的數據未到達PHP腳本。

因此,通過總結問題,有誰知道如何傳遞通過mysql insert id獲得的主鍵在php文件中mysql insert id並將此值放在第二種形式的EditText中?

第一種形式將數據保存到表“ Persone”中,該表中的字段為:

  • id(PK)
  • 姓名(VARCHAR)

第二種形式將數據保存在表“ Persone2”中,該表中的字段為:

  • idP2(PK)
  • FK_persone(外鍵)
  • Squadra,Ruolo和Numero_maglia(VARCHAR)

PS。 在第二種形式中,數據保存在表“ People2”中,用戶輸入了“ Ruolo”,“ Squadra”和“ Numero_maglia”字段,但字段“ id_People2”必須已經插入(變量值必須為$ _SESSION ['People_id'] = $ People_id;我從第一種形式的PHP腳本獲得的值)。

第一種形式有效,idata保存在數據庫中,但是第二種形式不起作用,android studio .JAVA文件存在問題,但我不明白是什么問題:(

第一種形式的java文件是:

import android.app.Activity;

import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.Window;
import android.widget.Button;
import android.widget.EditText;


import android.app.ProgressDialog;

import android.os.AsyncTask;
import android.os.Build;
import android.support.annotation.RequiresApi;
import android.support.v7.app.AppCompatActivity;

import android.text.TextUtils;
import android.widget.Toast;
import java.net.FileNameMap;
import java.util.HashMap;


public class Activity1 extends AppCompatActivity {

    private EditText nome, cognome;

    private Button registrazione, login;

    //REGISTRAZIONE
    String F_Name_Holder, L_Name_Holder;
    String finalResult ;
    String HttpURLRegister = "http://provaord.altervista.org/NEW/RRR.php";
    Boolean CheckEditText ;
    ProgressDialog progressDialog;
    HashMap<String,String> hashMap = new HashMap<>();
    HttpParse httpParse = new HttpParse();





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




        nome = (EditText)findViewById(R.id.editText6);
        cognome = (EditText)findViewById(R.id.editText7);

        registrazione = (Button)findViewById(R.id.button5);
        login = (Button)findViewById(R.id.button3);



        registrazione.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

                // Checking whether EditText is Empty or Not
                CheckEditTextIsEmptyOrNot();

                if(CheckEditText){

                    // If EditText is not empty and CheckEditText = True then this block will execute.

                    UserRegisterFunction(F_Name_Holder,L_Name_Holder);

                }
                else {

                    // If EditText is empty then this block will execute .
                    Toast.makeText(Activity1.this, "Please fill all form fields.", Toast.LENGTH_LONG).show();

                }


            }
        });



    }



    //REGISTRAZIONE
    public void CheckEditTextIsEmptyOrNot(){

        F_Name_Holder = nome.getText().toString();
        L_Name_Holder = cognome.getText().toString();



        if(TextUtils.isEmpty(F_Name_Holder) || TextUtils.isEmpty(L_Name_Holder) )
        {

            CheckEditText = false;

        }
        else {

            CheckEditText = true ;
        }

    }


    //REGISTRATION
    @RequiresApi(api = Build.VERSION_CODES.CUPCAKE)
    public void UserRegisterFunction(final String Nome, final String Cognome){

        class UserRegisterFunctionClass extends AsyncTask<String,Void,String> {

            @Override
            protected void onPreExecute() {
                super.onPreExecute();




                progressDialog = ProgressDialog.show(Activity1.this,"Loading Data",null,true,true);
            }

            @Override
            protected void onPostExecute(String httpResponseMsg) {

                super.onPostExecute(httpResponseMsg);

                progressDialog.dismiss();

                Toast.makeText(Activity1.this,httpResponseMsg.toString(), Toast.LENGTH_LONG).show();



                if(httpResponseMsg.equalsIgnoreCase("Registration Successfully")){

                    finish();

                    Intent intent = new Intent(Activity1.this, Activity2.class);



                    startActivity(intent);

                }

            }

            //REGISTRATION
            @Override
            protected String doInBackground(String... params) {

                hashMap.put("Nome",params[0]);

                hashMap.put("Cognome",params[1]);



                finalResult = httpParse.postRequest(hashMap, HttpURLRegister);

                return finalResult;
            }
        }

        UserRegisterFunctionClass userRegisterFunctionClass = new UserRegisterFunctionClass();

        userRegisterFunctionClass.execute(Nome,Cognome);
    }



}

第二種形式的java文件是:

import android.app.Activity;

import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.Window;
import android.widget.Button;
import android.widget.EditText;


import android.app.ProgressDialog;

import android.os.AsyncTask;
import android.os.Build;
import android.support.annotation.RequiresApi;
import android.support.v7.app.AppCompatActivity;

import android.text.TextUtils;
import android.widget.Toast;
import java.net.FileNameMap;
import java.util.HashMap;

public class Activity2 extends AppCompatActivity {

    private EditText id, squadra, ruolo, numeromaglia;

    private Button registrazionee;

    //REGISTRAZIONE
    String Squadra_Holder, Ruolo_Holder, Numero_Maglia_Holder;
    String finalResult ;
    String HttpURLRegister = "http://provaord.altervista.org/NEW/R22.php";
    Boolean CheckEditText ;
    ProgressDialog progressDialog;
    HashMap<String,String> hashMap = new HashMap<>();
    HttpParse httpParse = new HttpParse();

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

       // id = (EditText)findViewById(R.id.editText6);
        squadra = (EditText)findViewById(R.id.editText7);
        ruolo = (EditText)findViewById(R.id.editText3);
        numeromaglia = (EditText)findViewById(R.id.editText4);

        registrazionee = (Button)findViewById(R.id.button55);

        registrazionee.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

                // Checking whether EditText is Empty or Not
                CheckEditTextIsEmptyOrNot();

                if(CheckEditText){

                    // If EditText is not empty and CheckEditText = True then this block will execute.

                    UserRegisterFunction(Squadra_Holder, Ruolo_Holder, Numero_Maglia_Holder);

                }
                else {

                    // If EditText is empty then this block will execute .
                    Toast.makeText(Activity2.this, "Please fill all form fields.", Toast.LENGTH_LONG).show();

                }


            }
        });



    }





    //REGISTRAZIONE
    public void CheckEditTextIsEmptyOrNot(){

        Squadra_Holder = squadra.getText().toString();
        Ruolo_Holder = ruolo.getText().toString();
        Numero_Maglia_Holder = numeromaglia.getText().toString();



        if(TextUtils.isEmpty(Squadra_Holder) || TextUtils.isEmpty(Ruolo_Holder) || TextUtils.isEmpty(Numero_Maglia_Holder) )
        {

            CheckEditText = false;

        }
        else {

            CheckEditText = true ;
        }

    }





    //REGISTRATION
    @RequiresApi(api = Build.VERSION_CODES.CUPCAKE)
    public void UserRegisterFunction(final String Squadra, final String Ruolo, final String Numero_maglia){

        class UserRegisterFunctionClass extends AsyncTask<String,Void,String> {

            @Override
            protected void onPreExecute() {
                super.onPreExecute();




                progressDialog = ProgressDialog.show(Activity2.this,"Loading Data",null,true,true);
            }

            @Override
            protected void onPostExecute(String httpResponseMsg) {

                super.onPostExecute(httpResponseMsg);

                progressDialog.dismiss();

                Toast.makeText(Activity2.this,httpResponseMsg.toString(), Toast.LENGTH_LONG).show();



                if(httpResponseMsg.equalsIgnoreCase("Registration Successfully")){

                    finish();

                    Intent intent = new Intent(Activity2.this, Activity3.class);



                    startActivity(intent);

                }

            }

            //REGISTRATION
            @Override
            protected String doInBackground(String... params) {

                hashMap.put("Squadra",params[0]);

                hashMap.put("Ruolo",params[1]);

                hashMap.put("Numero_maglia",params[2]);





                finalResult = httpParse.postRequest(hashMap, HttpURLRegister);

                return finalResult;
            }
        }

        UserRegisterFunctionClass userRegisterFunctionClass = new UserRegisterFunctionClass();

        userRegisterFunctionClass.execute(Squadra, Ruolo, Numero_maglia);
    }


}

HttpParse.java文件的Java代碼是這樣的:

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.UnsupportedEncodingException;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;
import java.util.HashMap;
import java.util.Map;

/**
 * Created by Juned on 3/3/2017.
 */

public class HttpParse {

    String FinalHttpData = "";
    String Result ;
    BufferedWriter bufferedWriter ;
    OutputStream outputStream ;
    BufferedReader bufferedReader ;
    StringBuilder stringBuilder = new StringBuilder();
    URL url;

    public String postRequest(HashMap<String, String> Data, String HttpUrlHolder) {

        try {
            url = new URL(HttpUrlHolder);

            HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection();

            httpURLConnection.setReadTimeout(14000);

            httpURLConnection.setConnectTimeout(14000);

            httpURLConnection.setRequestMethod("POST");

            httpURLConnection.setDoInput(true);

            httpURLConnection.setDoOutput(true);

            outputStream = httpURLConnection.getOutputStream();

            bufferedWriter = new BufferedWriter(

                    new OutputStreamWriter(outputStream, "UTF-8"));

            bufferedWriter.write(FinalDataParse(Data));

            bufferedWriter.flush();

            bufferedWriter.close();

            outputStream.close();

            if (httpURLConnection.getResponseCode() == HttpURLConnection.HTTP_OK) {

                bufferedReader = new BufferedReader(
                        new InputStreamReader(
                                httpURLConnection.getInputStream()
                        )
                );
                FinalHttpData = bufferedReader.readLine();
            }
            else {
                FinalHttpData = "Something Went Wrong";
            }
        } catch (Exception e) {
            e.printStackTrace();
        }

        return FinalHttpData;
    }

    public String FinalDataParse(HashMap<String,String> hashMap2) throws UnsupportedEncodingException {

        for(Map.Entry<String,String> map_entry : hashMap2.entrySet()){

            stringBuilder.append("&");

            stringBuilder.append(URLEncoder.encode(map_entry.getKey(), "UTF-8"));

            stringBuilder.append("=");

            stringBuilder.append(URLEncoder.encode(map_entry.getValue(), "UTF-8"));

        }

        Result = stringBuilder.toString();

        return Result ;
    }
}

第一種形式的PHP文件:

<?php
session_start();
if($_SERVER['REQUEST_METHOD']=='POST'){

include 'C.php'; 

 $con = mysqli_connect($HostName,$HostUser,$HostPass,$DatabaseName);

 $Nome = $_POST['Nome'];
 $Cognome = $_POST['Cognome'];


 $CheckSQL = "SELECT * FROM Persone WHERE Nome = '$Nome'";

 $check = mysqli_fetch_array(mysqli_query($con,$CheckSQL));

 if(isset($check)){

 echo 'Utente già registrato';

 }
else{ 
$Sql_Query = "INSERT INTO Persone (Nome, Cognome) values ('$Nome','$Cognome')";



 if(mysqli_query($con,$Sql_Query))
{
    echo 'Registration Successfully';
    $People_id = mysqli_insert_id($con);
    $_SESSION ['People_id'] = $People_id;

}
else
{
 echo 'Something went wrong';
 }
 }

 mysqli_close($con);
}

?>

第二種形式的PHP文件:

<?php
error_reporting(E_ALL); 
ini_set('display_errors', 1);
session_start();
print_r($_POST);
if($_SERVER['REQUEST_METHOD']=='POST'){

include 'C.php'; 

 $con = mysqli_connect($HostName,$HostUser,$HostPass,$DatabaseName);

 $Squadra = $_POST['Squadra'];
 $Ruolo = $_POST['Ruolo'];
 $Numero_maglia = $_POST['Numero_maglia'];


 $CheckSQL = "SELECT * FROM Persone, Persone2 WHERE Persone2.FK_persone = '" . ($_SESSION ['People_id']). "'";;

 $check = mysqli_fetch_array(mysqli_query($con,$CheckSQL));

 if(isset($check)){

 echo 'Utente già registrato';

 }
else{ 
$Sql_Query = "INSERT INTO Persone2 (FK_persone, Squadra, Ruolo, Numero_maglia) values ('" . ($_SESSION ['People_id']). "','$Squadra', '$Ruolo', '$Numero_maglia')";



 if(mysqli_query($con,$Sql_Query))
{
 echo 'Registration Successfully';
}
else
{
 echo 'Something went wrong';
 }
 }
 mysqli_close($con);
}

?>

將文件XML轉換為第二種形式:

<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.example.bruzi.myord.Activity2">

     <EditText
        android:id="@+id/editText6"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginEnd="32dp"
        android:layout_marginStart="32dp"
        android:layout_marginTop="32dp"
        android:ems="10"
        android:hint="ID_People2"
        android:inputType="textPersonName"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />  

    <EditText
        android:id="@+id/editText7"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginEnd="32dp"
        android:layout_marginStart="32dp"
        android:layout_marginTop="32dp"
        android:ems="10"
        android:hint="Squadra"
        android:inputType="textPersonName"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/editText6" />

    <EditText
        android:id="@+id/editText3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginEnd="32dp"
        android:layout_marginStart="32dp"
        android:layout_marginTop="32dp"
        android:ems="10"
        android:hint="Ruolo"
        android:inputType="textPersonName"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/editText7" />

    <EditText
        android:id="@+id/editText4"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginEnd="32dp"
        android:layout_marginStart="32dp"
        android:layout_marginTop="32dp"
        android:ems="10"
        android:hint="Numero maglia"
        android:inputType="textPersonName"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/editText3" />

    <Button
        android:id="@+id/button55"
        android:layout_width="0dp"
        android:layout_height="0dp"
        android:layout_marginBottom="32dp"
        android:layout_marginEnd="32dp"
        android:layout_marginStart="32dp"
        android:layout_marginTop="32dp"
        android:background="@android:color/holo_blue_light"
        android:text="Registrazione"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/editText4" />
</android.support.constraint.ConstraintLayout>

這是一個漫長的旅程,步驟如下:

首先:您需要確保php服務器以xml或json格式返回所需的值,可以根據需要通過創建Web服務來實現。

第二:從android應用程序中,您需要使用http post或get與Web服務進行通信。

第三:來自網絡服務的響應應由您的Android應用解析。 解析器將讀取響應並為您提供所需的字段值(有許多可用的解析包)

第四:獲得值之后,您可以選擇將它們存儲在首選項或sqlite表中(以備將來使用),或使用intent直接將其發送到下一個活動。

掌握這項技術后,您將可以制作需要后端服務器的任何類型的移動應用程序。

祝好運

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM