2013-08-16 59 views
-1

我和我的應用程序的問題。我試圖在Android中創建註冊表,但我遇到了一些問題。什麼在Android的錯誤與此代碼(PHP + MySQL的)?

當我運行這個應用程序時,一切都很好,但是當我嘗試保存數據時,它會顯示一條錯誤消息Unknown Status!,我不知道什麼是錯的!

你能,請幫助我。

下面是我的代碼:

PS:我想Stealz's answer,現在我收到錯誤username exist,但我的表只有一個插入。


nota_spinner.xml

<TableLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@+id/tableLayout1" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent"> 

<TableRow 
    android:id="@+id/tableRow1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" > 

<TextView 
    android:id="@+id/textView1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:gravity="center" 
    android:text="Register Form " 
    android:layout_span="1" 
    android:textAppearance="?android:attr/textAppearanceLarge" /> 
</TableRow> 

<View 
android:layout_height="1dip" 
android:background="#CCCCCC" /> 

    <TableLayout 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:layout_weight="0.1" 
    android:orientation="horizontal"> 

    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="Input Username :" 
     android:textAppearance="?android:attr/textAppearanceMedium" /> 

    <EditText 
     android:id="@+id/txtUsername" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:ems="10" > 
    </EditText> 

    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="Input Password/Confirm Password :" 
     android:textAppearance="?android:attr/textAppearanceMedium" /> 
    <TableRow> 
    <EditText 
     android:id="@+id/txtPassword" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:ems="6" 
     android:inputType="textPassword" > 
    </EditText> 
    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text=" Again " /> 

    <EditText 
     android:id="@+id/txtConPassword" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:ems="7" 
     android:inputType="textPassword" > 
    </EditText> 
    </TableRow> 

    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="Input Name :" 
     android:textAppearance="?android:attr/textAppearanceMedium" /> 

    <EditText 
     android:id="@+id/txtName" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:ems="10" > 
    </EditText> 

    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="Input Email :" 
     android:textAppearance="?android:attr/textAppearanceMedium" /> 

    <EditText 
     android:id="@+id/txtEmail" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:inputType="textEmailAddress" 
     android:ems="10" > 
    </EditText> 

    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="Input Tel :" 
     android:textAppearance="?android:attr/textAppearanceMedium" /> 

    <EditText 
     android:id="@+id/txtTel" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:inputType="phone" 
     android:ems="10" > 
    </EditText> 
<Button 
android:id="@+id/btnSave" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:text="Save" /> 


</TableLayout > 
<View 
    android:layout_height="1dip" 
    android:background="#CCCCCC" /> 

<LinearLayout 
    android:id="@+id/LinearLayout1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:padding="5dip" > 

    <TextView 
     android:id="@+id/textView2" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="By.. ThaiCreate.Com" /> 

</LinearLayout> 

</TableLayout> 

Class.java

public class Class extends Activity { 


@SuppressLint("NewApi") 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.nota_spinner); 

    // Permission StrictMode 
    if (android.os.Build.VERSION.SDK_INT > 9) { 
     StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build(); 
     StrictMode.setThreadPolicy(policy); 
    } 

    // btnSave 
    final Button btnSave = (Button) findViewById(R.id.btnSave); 
    // Perform action on click 
    btnSave.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View v) { 
      if(SaveData()) 
      { 
       // When Save Complete 
      } 
     } 
    }); 

} 

public boolean SaveData() 
{ 

    // txtUsername,txtPassword,txtName,txtEmail,txtTel 
    final EditText txtUsername = (EditText)findViewById(R.id.txtUsername); 
    final EditText txtPassword = (EditText)findViewById(R.id.txtPassword); 
    final EditText txtConPassword = (EditText)findViewById(R.id.txtConPassword); 
    final EditText txtName = (EditText)findViewById(R.id.txtName); 
    final EditText txtEmail = (EditText)findViewById(R.id.txtEmail); 
    final EditText txtTel = (EditText)findViewById(R.id.txtTel); 


     // Dialog 
     final AlertDialog.Builder ad = new AlertDialog.Builder(this); 

     ad.setTitle("Error! "); 
     ad.setIcon(android.R.drawable.btn_star_big_on); 
     ad.setPositiveButton("Close", null); 

     // Check Username 
     if(txtUsername.getText().length() == 0) 
     { 
      ad.setMessage("Please input [Username] "); 
      ad.show(); 
      txtUsername.requestFocus(); 
      return false; 
     } 
     // Check Password 
     if(txtPassword.getText().length() == 0 || txtConPassword.getText().length() == 0) 
     { 
      ad.setMessage("Please input [Password/Confirm Password] "); 
      ad.show(); 
      txtPassword.requestFocus(); 
      return false; 
     } 
     // Check Password and Confirm Password (Match) 
      if(!txtPassword.getText().toString().equals(txtConPassword.getText().toString())) 
     { 
      ad.setMessage("Password and Confirm Password Not Match! "); 
      ad.show(); 
      txtConPassword.requestFocus(); 
      return false; 
     } 
     // Check Name 
     if(txtName.getText().length() == 0) 
     { 
      ad.setMessage("Please input [Name] "); 
      ad.show(); 
      txtName.requestFocus(); 
      return false; 
     } 
     // Check Email 
     if(txtEmail.getText().length() == 0) 
     { 
      ad.setMessage("Please input [Email] "); 
      ad.show(); 
      txtEmail.requestFocus(); 
      return false; 
     } 
     // Check Tel 
     if(txtTel.getText().length() == 0) 
     { 
      ad.setMessage("Please input [Tel] "); 
      ad.show(); 
      txtTel.requestFocus(); 
      return false; 
     } 


     String url = "blahblah/saveADDData.php"; 

     List<NameValuePair> params = new ArrayList<NameValuePair>(); 
     params.add(new BasicNameValuePair("sUsername", txtUsername.getText().toString())); 
     params.add(new BasicNameValuePair("sPassword", txtPassword.getText().toString())); 
     params.add(new BasicNameValuePair("sName", txtName.getText().toString())); 
     params.add(new BasicNameValuePair("sEmail", txtEmail.getText().toString())); 
     params.add(new BasicNameValuePair("sTel", txtTel.getText().toString())); 

     /** Get result from Server (Return the JSON Code) 
     * StatusID = ? [0=Failed,1=Complete] 
     * Error = ? [On case error return custom error message] 
     * 
     * Eg Save Failed = {"StatusID":"0","Error":"Email Exists!"} 
     * Eg Save Complete = {"StatusID":"1","Error":""} 
     */ 

     String resultServer = getHttpPost(url,params); 

     /*** Default Value ***/ 
     String strStatusID = "0"; 
     String strError = "Unknow Status!"; 

     JSONObject c; 
     try { 
      c = new JSONObject(resultServer); 
      strStatusID = c.getString("StatusID"); 
      strError = c.getString("Error"); 
     } catch (JSONException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 

     // Prepare Save Data 
     if(strStatusID.equals("0")) 
     { 
      ad.setMessage(strError); 
      ad.show(); 
     } 
     else 
     { 
      Toast.makeText(Nota.this, "Save Data Successfully", Toast.LENGTH_SHORT).show(); 
      txtUsername.setText(""); 
      txtPassword.setText(""); 
      txtConPassword.setText(""); 
      txtName.setText(""); 
      txtEmail.setText(""); 
      txtTel.setText(""); 
     } 


    return true; 
} 


public String getHttpPost(String url,List<NameValuePair> params) { 
    StringBuilder str = new StringBuilder(); 
    HttpClient client = new DefaultHttpClient(); 
    HttpPost httpPost = new HttpPost(url); 

    try { 
     httpPost.setEntity(new UrlEncodedFormEntity(params)); 
     HttpResponse response = client.execute(httpPost); 
     StatusLine statusLine = response.getStatusLine(); 
     int statusCode = statusLine.getStatusCode(); 
     if (statusCode == 200) { // Status OK 
      HttpEntity entity = response.getEntity(); 
      InputStream content = entity.getContent(); 
      BufferedReader reader = new BufferedReader(new InputStreamReader(content)); 
      String line; 
      while ((line = reader.readLine()) != null) { 
       str.append(line); 
      } 
     } else { 
      Log.e("Log", "Failed to download result.."); 
     } 
    } catch (ClientProtocolException e) { 
     e.printStackTrace(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
    return str.toString(); 
} 


} 

這是我的PHP文件saveADDData.php

<? 
$objConnect = mysql_connect("localhost","root",""); 
$objDB = mysql_select_db("retailer"); 

/*** for Sample 
    $_POST["sUsername"] = "a"; 
    $_POST["sPassword"] = "b"; 
    $_POST["sName"] = "c"; 
    $_POST["sEmail"] = "d"; 
    $_POST["sTel"] = "e"; 
*/ 

$strUsername = $_POST["sUsername"]; 
$strPassword = $_POST["sPassword"]; 
$strName = $_POST["sName"]; 
$strEmail = $_POST["sEmail"]; 
$strTel = $_POST["sTel"]; 

/*** Check Username Exists ***/ 
$strSQL = "SELECT * FROM member WHERE Username = '".$strUsername."' "; 
$objQuery = mysql_query($strSQL); 
$objResult = mysql_fetch_array($objQuery); 
if($objResult) 
{ 
    $arr['StatusID'] = "0"; 
    $arr['Error'] = "Username Exists!"; 
    echo json_encode($arr); 
    exit(); 
} 

/*** Check Email Exists ***/ 
$strSQL = "SELECT * FROM member WHERE Email = '".$strEmail."' "; 
$objQuery = mysql_query($strSQL); 
$objResult = mysql_fetch_array($objQuery); 
if($objResult) 
{ 
    $arr['StatusID'] = "0"; 
    $arr['Error'] = "Email Exists!";  
    echo json_encode($arr); 
    exit(); 
} 

/*** Insert ***/ 
$strSQL = "INSERT INTO member (Username,Password,Name,Email,Tel) 
    VALUES (
     '".$strUsername."', 
     '".$strPassword."', 
     '".$strName."', 
     '".$strEmail."', 
     '".$strTel."' 
     ) 
    "; 

$objQuery = mysql_query($strSQL); 
if(!$objQuery) 
{ 
    $arr['StatusID`enter code here`'] = "0"; 
    $arr['Error'] = "Cannot save data!";  
} 
else 
{ 
    $arr['StatusID'] = "1"; 
    $arr['Error'] = ""; 
} 

/** 
    $arr['StatusID'] // (0=Failed , 1=Complete) 
    $arr['Error'] // Error Message 
*/ 

mysql_close($objConnect); 

echo json_encode($arr); 
?> 
+2

一個可怕的措辭問題,只是轉儲的代碼塊以最小的努力來描述任何期望的輸入和預期的輸出,或列出任何試圖努力尋找病因。 – invert

回答

0

從我所看到的,你得到錯誤「未知狀態」,因爲你得到響應,StatusId = 0。而且你可以根據你的PHP在多個地方可以買到(用戶名存在,電子郵件存在)。

我建議你給不同的錯誤,如用戶名給ID = 11爲存在,電子郵件存在給22,並檢查在Android端作爲錯誤,所以你可以給錯誤的具體信息,比說未知的錯誤,因爲你知道你正在得到什麼錯誤。

+0

感謝您的建議。現在我收到錯誤「用戶名存在」,但我的表只有一個插入。我無法弄清楚什麼是錯的!有什麼建議麼 ? – Dani