2016-12-23 33 views
1

我正嘗試使用應用程序在在線數據庫中輸入用戶的數據,但數據未插入到數據庫中。 PHP文件是正確的插入數據,但我的應用程序不在這裏是我的register.java文件代碼。 package net.netai.hackt_swg.microbok;註冊應用程序代碼不起作用

import android.content.Context; 
import android.os.AsyncTask; 
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.Toast; 

import java.io.BufferedWriter; 
import java.io.IOException; 
import java.io.InputStream; 
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 register extends AppCompatActivity { 

    EditText e_name,e_ml,e_ps; 
    String name,email,pas; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     Button reg; 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_register); 
     reg=(Button)findViewById(R.id.rgs); 
     e_name=(EditText)findViewById(R.id.name); 
     e_ml=(EditText)findViewById(R.id.mls); 
     e_ps=(EditText)findViewById(R.id.pss); 
     reg.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       rg(); 
      } 
     }); 
    } 
    public void rg(){ 
     name=e_name.getText().toString(); 
     email=e_ml.getText().toString(); 
     pas=e_ps.getText().toString(); 

     BackgroundTask backgroundTask=new BackgroundTask(); 
     backgroundTask.execute(name,email,pas); 
     finish(); 
    } 


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

     String reg_URL; 
     @Override 
     protected void onPreExecute() { 
      reg_URL="http://hackt_swg.netai.net/app/register.php"; 

     } 

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


      String nm=params[0]; 
      String em=params[1]; 
      String ps=params[2]; 
      try { 
       URL url=new URL(reg_URL); 
       HttpURLConnection httpURLConnection=(HttpURLConnection) url.openConnection(); 
       httpURLConnection.setRequestMethod("POST"); 
       httpURLConnection.setDoOutput(true); 
       OutputStream outputStream=httpURLConnection.getOutputStream(); 
       BufferedWriter bufferedWriter=new BufferedWriter(new OutputStreamWriter(outputStream,"UTF-8")); 
       String data= URLEncoder.encode("name","UTF-8")+"="+URLEncoder.encode(nm,"UTF-8")+"&"+ 
         URLEncoder.encode("email","UTF-8")+"="+URLEncoder.encode(em,"UTF-8")+"&"+ 
         URLEncoder.encode("password","UTF-8")+"="+URLEncoder.encode(ps,"UTF-8"); 
       bufferedWriter.write(data); 
       bufferedWriter.flush(); 
       bufferedWriter.close(); 
       outputStream.close(); 
       InputStream in=httpURLConnection.getInputStream(); 
       in.close(); 
       httpURLConnection.disconnect(); 
       return "registration successful"; 
      } catch (MalformedURLException e) { 
       e.printStackTrace(); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 



      return "null"; 
     } 

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

     @Override 
     protected void onPostExecute(String result) { 
      Toast.makeText(getApplicationContext(),result,Toast.LENGTH_LONG).show(); 
     } 
    } 

} 


和我MainActivity.java是

package net.netai.hackt_swg.microbok; 

import android.content.Context; 
import android.content.Intent; 
import android.net.ConnectivityManager; 
import android.net.NetworkInfo; 
import android.os.Bundle; 
import android.support.v7.app.AppCompatActivity; 
import android.view.View; 
import android.widget.Button; 
import android.widget.EditText; 

public class MainActivity extends AppCompatActivity { 
    Button lgn,sgnup; 
    EditText e_password,e_email; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     lgn=(Button)findViewById(R.id.loginbtn); 
     sgnup=(Button)findViewById(R.id.signupbtn); 

     e_email=(EditText)findViewById(R.id.mail); 
     e_password=(EditText)findViewById(R.id.pass); 
     ConnectivityManager connectivityManager= (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE); 
     NetworkInfo networkInfo=connectivityManager.getActiveNetworkInfo(); 
     if(networkInfo!=null && networkInfo.isConnected()) 
     { 

     } 
     else{ 
      lgn.setEnabled(false); 
      sgnup.setEnabled(false); 
      e_password.setEnabled(false); 
      e_email.setEnabled(false); 
     } 
     lgn.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 

      } 
     }); 
     sgnup.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       p(); 
      } 
     }); 
    } 
    public void p(){ 
     Intent i=new Intent(this ,register.class); 
     startActivity(i); 
    } 
} 

register.php

<?php 
$hostname="mysql13.000webhost.com"; 
$mysqlusername="a1544527_danzen"; 
$mysqlpassword="********"; 
$databasename = "a1544527_appData"; 
$db=mysqli_connect($hostname,$mysqlusername,$mysqlpassword,$databasename) or die("noooooo"); 

$fname=$_POST['name']; 

$email=$_POST['email']; 
$password=$_POST['password']; 




mysqli_query($db,"INSERT INTO user (name,password,email) VALUES(
'". mysqli_escape_string($db,$fname) ."', 
'". mysqli_escape_string($db,md5($password)) ."', 
'". mysqli_escape_string($db,$email) ."') ") or die(mysql_error()); 

    echo 'successfully registered';      


?> 
+0

請檢查我的更新答案。 – Shailesh

回答

0

你的用戶的代碼在你的項目感興趣,請準備好Okhttp LIB將數據發送到服務器。當你使用這個代碼時,調用這個方法,然後調用這個方法,但要小心。

public void Register(String nm, String em, String pm) 
{ 
    OkHttpClient client = new OkHttpClient(); 

    RequestBody formBody = new FormBody.Builder() 
        .add("name", nm) 
        .add("email", em) 
        .add("password", pm) 
        .build(); 

    Request request = new Request.Builder() 
       .url("http://hackt_swg.netai.net/app/register.php") 
       .post(formBody) 
       .build(); 

    client.newCall(request).enqueue(new Callback() { 
       @Override 
       public void onFailure(Call call, IOException e) 
       { 
        Log.e(TAG, "Get Api Credentials Request Failed " + call.toString()); 
        e.printStackTrace(); 
       } 

       @Override 
       public void onResponse(Call call, Response response) throws IOException 
       { 
        String responseUser = response.body().string().toString(); 
        Lor.i("[Registration]", ""+responseUser); 
       } 
     }); 
} 
+0

仍然無法正常工作並返回null。我不這樣想。 –

+0

謝謝你的code.But現在我以前的代碼工作。再次感謝。 –

+0

我很高興能夠幫到你,讓其他人可以得到幫助。 – Shailesh

0

我想你錯過了網址。檢查你的網址:http://hackt_swg.netai.net/app/register.php另外我建議使用改造。這是網絡服務的最佳方式

+0

但仍然不起作用 –

+0

請問您可以編寫php代碼嗎? –

+0

我編輯我的帖子,你可以看到它 –