2016-11-14 1 views
1

Ich arbeite daran, wie Parkplatz Anwendung zu buchen. jetzt, ich werde hinzufügen Informationsseite. Aber Android-Code legte leere Zeile in MySQL-Datenbank. Netzwerkverbindung funktioniert, aber in mysql wird eine leere Datenzeile eingefügt. Wie kann ich Daten in MySQL einfügen? bitte helfen Sie mirandroid einfügen leere zeile in mysql

public class DateAndTime extends Activity { 


EditText Name, Mobile, Addrs, Fee; 
TextView Otime, Ctime; 
String pic,name, mobile, addrs, otime, ctime, fee;// 바꾸고 이미지도 추가. 
ImageView Pic; 
ViewFlipper flipper; 

/** 
* ATTENTION: This was auto-generated to implement the App Indexing API. 
* See https://g.co/AppIndexing/AndroidStudio for more information. 
*/ 
private GoogleApiClient client; 

//View 
private TextView mText1; 
private TextView mText2; 
private Button mPickDate1; 
private Button mPickTime1; 
private Button mPickDate2; 
private Button mPickTime2; 

private int mYear1; 
private int mYear2; 
private int mMonth1; 
private int mMonth2; 
private int mDay1; 
private int mDay2; 
private int mHour1; 
private int mHour2; 
private int mMinute1; 
private int mMinute2; 

static final int DATE_DIALOG_ID_1 = 0; 
static final int TIME_DIALOG_ID_1 = 1; 
static final int DATE_DIALOG_ID_2 = 2; 
static final int TIME_DIALOG_ID_2 = 3; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.avtivity_date_time); 

    mText1 = (TextView) findViewById(R.id.text1); 
    mPickDate1 = (Button) findViewById(R.id.pickDate1); 
    mPickTime1 = (Button) findViewById(R.id.pickTime1); 

    mText2 = (TextView) findViewById(R.id.text2); 
    mPickDate2 = (Button) findViewById(R.id.pickDate2); 
    mPickTime2 = (Button) findViewById(R.id.pickTime2); 

    mPickDate1.setOnClickListener(new OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      showDialog(DATE_DIALOG_ID_1); 
     } 
    }); 

    mPickDate2.setOnClickListener(new OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      showDialog(DATE_DIALOG_ID_2); 
     } 
    }); 

    mPickTime1.setOnClickListener(new OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      showDialog(TIME_DIALOG_ID_1); 
     } 
    }); 

    mPickTime2.setOnClickListener(new OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      showDialog(TIME_DIALOG_ID_2); 
     } 
    }); 

    final Calendar c = Calendar.getInstance(); 
    mYear1 = c.get(Calendar.YEAR); 
    mMonth1 = c.get(Calendar.MONTH); 
    mDay1 = c.get(Calendar.DAY_OF_MONTH); 
    mHour1 = c.get(Calendar.HOUR_OF_DAY); 
    mMinute1 = c.get(Calendar.MINUTE); 

    mYear2 = c.get(Calendar.YEAR); 
    mMonth2 = c.get(Calendar.MONTH); 
    mDay2 = c.get(Calendar.DAY_OF_MONTH); 
    mHour2 = c.get(Calendar.HOUR_OF_DAY); 
    mMinute2 = c.get(Calendar.MINUTE); 

    updateDisplay(); 

    Pic = (ImageView)findViewById(R.id.pic); 
    //flipper = (ViewFlipper)findViewById(R.id.flipper); 
    Name = (EditText) findViewById(R.id.et_owner); 
    Mobile = (EditText) findViewById(R.id.et_mob); 
    Addrs = (EditText) findViewById(R.id.et_addrs); 
    Otime = (TextView) findViewById(R.id.text1); 
    Ctime = (TextView) findViewById(R.id.text2); 
    Fee = (EditText) findViewById(R.id.et_fee); 

    // ATTENTION: This was auto-generated to implement the App Indexing API. 
    // See https://g.co/AppIndexing/AndroidStudio for more information. 
    client = new GoogleApiClient.Builder(this).addApi(AppIndex.API).build(); 
} 

public void updateDisplay() { 
    mText1.setText(String.format("시작 : %d년 %d월 %d일 %d시 %d분", mYear1, mMonth1 + 1, mDay1, mHour1, mMinute1)); 
    mText2.setText(String.format("종료 : %d년 %d월 %d일 %d시 %d분", mYear2, mMonth2 + 1, mDay2, mHour2, mMinute2)); 
} 

public DatePickerDialog.OnDateSetListener mDateSetListener1 = 
     new DatePickerDialog.OnDateSetListener() { 
      @Override 
      public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) { 
       mYear1 = year; 
       mMonth1 = monthOfYear; 
       mDay1 = dayOfMonth; 
       updateDisplay(); 
      } 
     }; 
public DatePickerDialog.OnDateSetListener mDateSetListener2 = 
     new DatePickerDialog.OnDateSetListener() { 
      @Override 
      public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) { 
       mYear2 = year; 
       mMonth2 = monthOfYear; 
       mDay2 = dayOfMonth; 
       updateDisplay(); 
      } 
     }; 

public TimePickerDialog.OnTimeSetListener mTimeSetListener1 = 
     new TimePickerDialog.OnTimeSetListener() { 
      @Override 
      public void onTimeSet(TimePicker view, int hourOfDay, int minute) { 
       mHour1 = hourOfDay; 
       mMinute1 = minute; 
       updateDisplay(); 
      } 
     }; 

public TimePickerDialog.OnTimeSetListener mTimeSetListener2 = 
     new TimePickerDialog.OnTimeSetListener() { 
      @Override 
      public void onTimeSet(TimePicker view, int hourOfDay, int minute) { 
       mHour2 = hourOfDay; 
       mMinute2 = minute; 
       updateDisplay(); 
      } 
     }; 

@Override 
protected Dialog onCreateDialog(int id) { 
    switch (id) { 
     case DATE_DIALOG_ID_1: 
      return new DatePickerDialog(this, mDateSetListener1, mYear1, mMonth1, mDay1); 

     case TIME_DIALOG_ID_1: 
      return new TimePickerDialog(this, mTimeSetListener1, mHour1, mMinute1, false); 

     case DATE_DIALOG_ID_2: 
      return new DatePickerDialog(this, mDateSetListener2, mYear2, mMonth2, mDay2); 

     case TIME_DIALOG_ID_2: 
      return new TimePickerDialog(this, mTimeSetListener2, mHour2, mMinute2, false); 
    } 
    return null; 
} 
public void saveInfo(View view) { 
    pic = null; 
    name = Name.getText().toString(); 
    mobile = Mobile.getText().toString(); 
    addrs = Addrs.getText().toString(); 
    otime = Otime.getText().toString(); 
    ctime = Ctime.getText().toString(); 
    fee = Fee.getText().toString(); 
    DateAndTime.BackgroundTask backgroundTask = new DateAndTime.BackgroundTask(); 
    backgroundTask.execute(pic, name, mobile, addrs, otime, ctime, fee); 
    //finish(); 
} 

/** 
* ATTENTION: This was auto-generated to implement the App Indexing API. 
* See https://g.co/AppIndexing/AndroidStudio for more information. 
*/ 
public Action getIndexApiAction() { 
    Thing object = new Thing.Builder() 
      .setName("ParkAddInfo Page") // TODO: Define a title for the content shown. 
      // TODO: Make sure this auto-generated URL is correct. 
      .setUrl(Uri.parse("http://35.160.135.119/add_park_info.php")) 
      .build(); 
    return new Action.Builder(Action.TYPE_VIEW) 
      .setObject(object) 
      .setActionStatus(Action.STATUS_TYPE_COMPLETED) 
      .build(); 
} 

@Override 
public void onStart() { 
    super.onStart(); 

    // ATTENTION: This was auto-generated to implement the App Indexing API. 
    // See https://g.co/AppIndexing/AndroidStudio for more information. 
    client.connect(); 
    AppIndex.AppIndexApi.start(client, getIndexApiAction()); 
} 

@Override 
public void onStop() { 
    super.onStop(); 

    // ATTENTION: This was auto-generated to implement the App Indexing API. 
    // See https://g.co/AppIndexing/AndroidStudio for more information. 
    AppIndex.AppIndexApi.end(client, getIndexApiAction()); 
    client.disconnect(); 
} 

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

    @Override 
    protected void onPreExecute() { 

     park_add_info_url = "http://35.160.135.119/add_park_info.php"; // insert the Domain name http://androidtut.comli.com//add_info.php 
    } 

    @Override 
    protected String doInBackground(String... args) { 
     String pic, name, mobile, addrs, otime, ctime, fee; 
     pic = args[0]; 
     name = args[1]; 
     mobile = args[2]; 
     addrs = args[3]; 
     otime = args[4]; 
     ctime = args[5]; 
     fee = args[6]; 

     try { 
      URL url = new URL(park_add_info_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")); 
      StringBuilder stringBuilder = new StringBuilder("pic="); 
      stringBuilder.append(pic); stringBuilder.append("&owner="); stringBuilder.append(name); stringBuilder.append("&mobile="); 
      stringBuilder.append(mobile); stringBuilder.append("&addrs="); 
      stringBuilder.append(addrs); stringBuilder.append("&otime="); stringBuilder.append(otime); stringBuilder.append("&ctime="); 
      stringBuilder.append(ctime); stringBuilder.append("&fee="); stringBuilder.append(fee); stringBuilder.append("'"); 
      String data_string = URLEncoder.encode(stringBuilder.toString(),"utf-8"); 
      bufferedWriter.write(data_string); 
      bufferedWriter.flush(); 
      bufferedWriter.close(); 
      outputStream.close(); 
      InputStream inputStream = httpURLConnection.getInputStream(); 
      inputStream.close(); 
      httpURLConnection.disconnect(); 
      return "One row of data inserted.."; 


     } catch (IOException e) {//TODO:check network dialog window 
      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(); 
    } 

} 

und dies ist der PHP-Code.

<?php 
require "time_init.php"; //connecting mysql 

$pic = $_POST["pic"]; 
$owner = $_POST["owner"]; 
$mobile = $_POST["mobile"]; 
$addrs = $_POST["addrs"]; 
$otime = $_POST["otime"]; 
$ctime = $_POST["ctime"]; 
$fee = $_POST["fee"]; 

$sql = "INSERT INTO park_info VALUES ('$pic', '$owner', '$mobile', '$addrs', '$otime', '$ctime', '$fee');"; 
mysqli_query($con, $sql) 

?> 
+0

Ihr Android-Code kann keine Daten posten. Überprüfen Sie diesen Link http://stackoverflow.com/questions/31552242/sending-http-post-request-with-android –

+0

Bitte bestätigen Sie Ihre Android sendet Daten json ohne Fehler? –

+0

Ihr Code ist anfällig für SQL-Injektion. Stellen Sie sich vor, jemand schreibt eine Gebühr als "";) DROP TABLE park_info; - '- Bitte parametrisierte Anweisungen verwenden. –

Antwort

1

denke ich, besser als aproach Anfrage Gebäude selbst Volley für den Umgang mit der Arbeit mit Anforderungen verwendet.

Volley ist eine HTTP-Bibliothek, die Netzwerke für Android-Apps einfacher und vor allem schneller macht.

Verwandte Themen