2017-02-23 49 views
0

只要我想讓它存儲的用戶數據,我沒有交註冊頁面發佈數據到MySQL,但存儲在數據庫 phpfile如何使用Android的凌空

<?php 
    if($_SERVER['REQUEST_METHOD']=='GET'){ 
     $username = $_POST['username']; 
     $email = $_POST['email']; 
     $password = $_POST['password']; 
     $name = $_POST['name']; 
     $phonenum = $_POST['phonenum']; 
     $address = $_POST['addresstext']; 
     require_once('config.php'); 
     $sql = "INSERT INTO users (name,username,email,password,phonenum,address) VALUES ('$name','$username','$email','$password','$phonenum','$address')"; 
     $r = mysqli_query($dp,$sql); 
     if($r){ 
     echo "Successfully Registered"; 
     } 
     else{ 
      echo "Could not register"; 
     }  
     mysqli_close($dp); 
    } 
?> 

註冊page.java

public class DrSignup extends Activity implements View.OnClickListener{ 

    public static final String REGISTER_URL = "http://giclub.esy.es/Register.php"; 

    public static final String KEY_USERNAME = "username"; 
    public static final String KEY_PASSWORD = "password"; 
    public static final String KEY_EMAIL = "email"; 
    public static final String KEY_NAME = "name"; 
    public static final String KEY_PHONENUM = "phonenum"; 
    public static final String KEY_ADDRESS = "address"; 

    EditText usernametext,nametext,emailtext,phonenumtext,addresstext,passwordtext; 

    TextView link_login; 
    ImageView profileimg; 
    Button btn_signup; 
    private static int RESULT_LOAD_IMAGE = 1; 

    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.drsingup); 
     link_login = (TextView) findViewById(R.id.link_login); 
     profileimg = (ImageView) findViewById(R.id.profileimg); 
     btn_signup = (Button) findViewById(R.id.btn_signup); 
     usernametext = (EditText) findViewById(R.id.username); 
     nametext = (EditText) findViewById(R.id.name); 
     emailtext = (EditText) findViewById(R.id.email); 
     phonenumtext = (EditText) findViewById(R.id.phonenumber); 
     addresstext = (EditText) findViewById(R.id.addresstext); 
     passwordtext = (EditText) findViewById(R.id.password); 
     link_login.setOnClickListener(this); 
     profileimg.setOnClickListener(this); 
     btn_signup.setOnClickListener(this); 

    } 
    @Override 
    public void onClick(View view) { 
     Intent I = new Intent(this,WelcomeActivity.class); 
     if (view == link_login) 
     { 
      startActivity(I); 
      finish(); 
     } 
     else if (view == profileimg){ 
      Intent i = new Intent(
        Intent.ACTION_PICK, 
        android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI); 
      startActivityForResult(i, RESULT_LOAD_IMAGE); 
     } 
     else if (view == btn_signup){ 
      registerUser(); 

     } 

    } 

    private void registerUser() { 
     final String username = usernametext.getText().toString().trim(); 
     final String password = passwordtext.getText().toString().trim(); 
     final String email = emailtext.getText().toString().trim(); 
     final String name = nametext.getText().toString().trim(); 
     final String phonenum = phonenumtext.getText().toString().trim(); 
     final String address = addresstext.getText().toString().trim(); 


     StringRequest stringRequest = new StringRequest(Request.Method.POST, REGISTER_URL, 
       new Response.Listener<String>() { 
        @Override 
        public void onResponse(String response) { 
         Toast.makeText(DrSignup.this,response,Toast.LENGTH_LONG).show(); 
        } 
       }, 
       new Response.ErrorListener() { 
        @Override 
        public void onErrorResponse(VolleyError error) { 
         Toast.makeText(DrSignup.this,error.toString(),Toast.LENGTH_LONG).show(); 
        } 
       }){ 
      @Override 
      protected Map<String,String> getParams(){ 
       Map<String,String> params = new HashMap<String, String>(); 
       params.put(KEY_USERNAME,username); 
       params.put(KEY_PASSWORD,password); 
       params.put(KEY_EMAIL, email); 
       params.put(KEY_NAME,name); 
       params.put(KEY_ADDRESS,address); 
       params.put(KEY_PHONENUM, phonenum); 
       return params; 
      } 

     }; 

     RequestQueue requestQueue = Volley.newRequestQueue(this); 
     requestQueue.add(stringRequest); 
    } 

    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
     super.onActivityResult(requestCode, resultCode, data); 

     if (requestCode == RESULT_LOAD_IMAGE && resultCode == RESULT_OK && null != data) { 
      Uri selectedImage = data.getData(); 
      String[] filePathColumn = {MediaStore.Images.Media.DATA}; 

      Cursor cursor = getContentResolver().query(selectedImage, 
        filePathColumn, null, null, null); 
      cursor.moveToFirst(); 

      int columnIndex = cursor.getColumnIndex(filePathColumn[0]); 
      String picturePath = cursor.getString(columnIndex); 
      cursor.close(); 

      profileimg.setImageBitmap(BitmapFactory.decodeFile(picturePath)); 

     } 
    } 
    } 
沒有數據

沒有東西被烤,並且logcat中顯示非錯誤 問題是什麼?

+0

在你的代碼爲什麼會出現GET方法檢查,當你需要POST數據?'如果($ _ SERVER ['REQUEST_METHOD'] =='GET')'將其更改爲發佈,它可能會有所幫助 –

+0

厄運對我來說:D我不知道我是怎麼忘記的:D謝謝你^^ – Amr93

+0

但是如何我可以在同一個數據庫中添加圖像嗎? – Amr93

回答

2

其實你沒有得到任何迴應,因爲在你的服務器端你是比較請求的方法有GET,但實際上你是將數據發送到服務器無法從中獲取所以更改它像這樣

<?php 
if($_SERVER['REQUEST_METHOD']=='POST'){ 
    $username = $_POST['username']; 
    $email = $_POST['email']; 
    $password = $_POST['password']; 
    $name = $_POST['name']; 
    $phonenum = $_POST['phonenum']; 
    $address = $_POST['addresstext']; 
    require_once('config.php'); 
    $sql = "INSERT INTO users (name,username,email,password,phonenum,address) VALUES ('$name','$username','$email','$password','$phonenum','$address')"; 
    $r = mysqli_query($dp,$sql); 
    if($r){ 
    echo "Successfully Registered"; 
    } 
    else{ 
     echo "Could not register"; 
    }  
    mysqli_close($dp); 
} 
?> 
+0

是的,你是真正的thx ^^ – Amr93

+0

,但我如何添加圖像在同一個數據庫? – Amr93

+0

如果這解決了你的問題,請接受它作爲一個正確的答案 –

0

變化

if($_SERVER['REQUEST_METHOD']=='GET') 

if($_SERVER['REQUEST_METHOD']=='POST') 

上傳圖片:您的活動

  1. 上傳的位圖和編碼成字符串
  2. 在服務器端聲明變量的唯一名稱分配給每個圖像,也宣告路徑,其中要像

    存儲例如:$path = "uploads/$id.png";

    $actualpath = "http://url_path/xyz/$path;

  3. 後插入$actualpath到數據庫

    注:不要忘了在服務器端進行解碼

+0

正確的答案,但我怎樣才能上傳圖像在相同數據庫? – Amr93

+0

你想從手機上傳圖像到數據庫? –

+0

是的..我想要這個 – Amr93

1

@ Amr93我覺得你要發送的方法後的數據和在API中您檢查

「請求方法== GET」

看看這個

替換此

($ _SERVER [ 'REQUEST_METHOD'] == 'GET'){

隨着

($ _SERVER [ 'REQUEST_METHOD'] == 'POST'){

0

在您的android代碼中使用請求類型「POST」

StringRequest stringRequest = new StringRequest(Request.Method.POST, REGISTER_URL, 

並在php代碼中使用「GET」請求來處理它。因此,如果條件代碼不執行

if($_SERVER['REQUEST_METHOD']=='GET') 

將其更改爲

if($_SERVER['REQUEST_METHOD']=='POST') 

它會解決你的問題