2017-02-23 116 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') 

它会解决你的问题