I m trying to do a registration page from an android activity connectiong the datas to my sqldatabase, I m getting this error ” org.json.JSONException: Value
First of all, could anyone advise me on how to debug my program when using an mysql database with php script for an android application ? Cause I usually use the log cat but here the errors aren’t as clear :S …
Here is the activity code :
public class Subscribe extends Activity { Button bSubscribe; EditText etPwdSub, etPwdConf, etLoginSub, etNameSub, etFnSub; String result = null; InputStream is = null; String donnees = ""; protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.subscribe); etLoginSub = (EditText) findViewById(R.id.etLoginSub); etPwdSub = (EditText) findViewById(R.id.etPwdSub); etPwdConf = (EditText) findViewById(R.id.etPwdConf); etNameSub = (EditText) findViewById(R.id.etNameSub); etFnSub = (EditText) findViewById(R.id.etFnSub); bSubscribe = (Button) findViewById(R.id.bSubscribe); bSubscribe.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { Pattern p = Pattern.compile(".+@.+\.[a-z]+"); Matcher m = p.matcher(etLoginSub.getEditableText()); if (m.matches() == false) { Toast.makeText( getBaseContext(), "Le champs email ne correspond pas au format d'une adresse mail", Toast.LENGTH_SHORT).show(); } else { // autre méthode : etPwdSub.equals("") if (etPwdSub.getEditableText() != null && etPwdConf.getEditableText() != null && etNameSub.getEditableText() != null && etFnSub.getEditableText() != null) { if (etPwdSub.getEditableText().toString().equals(etPwdConf.getEditableText().toString())) { ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(); nameValuePairs.add(new BasicNameValuePair("login", etLoginSub.getText().toString())); nameValuePairs.add(new BasicNameValuePair("pwd", etPwdConf.getText().toString())); nameValuePairs.add(new BasicNameValuePair("name", etNameSub.getText().toString())); nameValuePairs.add(new BasicNameValuePair("firstname", etFnSub.getText().toString())); try { // commandes httpClient HttpClient httpclient = new DefaultHttpClient(); HttpPost httppost = new HttpPost( "http://192.168.1.101/spotnshare/subscribe.php"); httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); HttpResponse response = httpclient.execute(httppost); HttpEntity entity = response.getEntity(); is = entity.getContent(); } catch (Exception e) { Log.i("taghttppost", "" + e.toString()); Toast.makeText(getBaseContext(), e.toString(), Toast.LENGTH_LONG) .show(); } try { BufferedReader reader = new BufferedReader(new InputStreamReader( is, "UTF-8")); StringBuilder sb = new StringBuilder(); String line = null; while ((line = reader.readLine()) != null) { sb.append(line + "n"); } is.close(); result = sb.toString(); } catch (Exception e) { Log.i("tagconvertstr", "" + e.toString()); } try { JSONObject jObj = new JSONObject(result); donnees = jObj.getString("message"); Intent ourIntent = new Intent(Subscribe.this, SubscribeMess.class); // objet qui vas nous permettre de passe des variables ici la // variable passInfo Bundle objetbunble = new Bundle(); objetbunble.putString("message", donnees); ourIntent.putExtras(objetbunble); // on passe notre objet dans l'intent // on appelle notre activité startActivity(ourIntent); } catch (JSONException e) { Log.i("tagjsonexp", "" + e.toString()); } catch (ParseException e) { Log.i("tagjsonpars", "" + e.toString()); } } else { Dialog d = new Dialog(Subscribe.this); d.setTitle(etPwdSub.getEditableText() +" "+etPwdConf.getEditableText()); d.show(); } } else { Dialog d = new Dialog(Subscribe.this); d.setTitle("Fill in all the fields !"); d.show(); } } } }); } protected void onPause() { super.onPause(); finish(); } }
and here is the php script :
<?php if( isset($_POST['login']) && isset($_POST['pwd']) && isset($_POST['name']) && isset($_POST['firstname'])) { include("connexion_bdd.php"); if(connexionBDD() == 1){ $login = $_POST['login']; $pwd = $_POST['pwd']; $name = $_POST['name']; $firstname = $_POST['firstname']; $sql = "SELECT colUserID FROM userTable WHERE colUserLogin = '".$login."' "; $req = mysql_query($sql); $resultat=mysql_num_rows($req); if($resultat==0){ $temps = time(); $clef = md5($login . $temps); $req = mysql_query("INSERT INTO userTable(colUserLogin, colUserPwd, colUserName, colUserFirstname, colUserKey, colUserDate) VALUES( '$login', '$pwd', '$name', '$firstname', '$clef', '$temps')"); if($req){ $destinataire = $login; $sujet ="Welcome on SnSR"; $from = "From: SpotnShareReminder@live.com rn"; $from .= "Content-Type: text/html; charset=us-asciirn"; $message = ' Clic on the link below :<br/> <a href="http://localhost/spotnshare/validation_mail.php?usrk='.$clef.' "> Registration confirmation. </a> '; ini_set('SMTP','relay.skynet.be'); if(mail($destinataire,$sujet,$message,$from)){ $msg = 'Check your mailbox to activate your account !'; } else{ $msg = 'Problem sending you the activation mail !'; $req = mysql_query("DELETE FROM userTable WHERE colUserLogin = '".$pseudo."' "); } } else{ $msg = 'Problem inserting you in our database !'; } }else{ $msg = 'This email has already been used !'; } mysql_free_result ($req); }else{ $msg = "Connexion problem with de DB" print(json_encode(array("message" => $msg))); } }else{ $msg = "Couldn't treat your datas" } print(json_encode(array("message" => $msg))); ?>
Advertisement
Answer
Thanks I manage to correct some of the errors 2 ‘;’ were missing and I could see the error with Log.i(“tagconvertstr”, “[“+result+”]”);
The msg that it is showing is something like that :
[<br/ > font size = 1 table class=''xdebug-erroe' dir='ltr' ... loads of html code that wasn't in my initial code then....{"message":"Problem sending you the activation mail !"}]
So there’s a problem with the json format on that message “Problem sending you the activation mail” but the user was registered OK!
So the second time i would try that code it would show me in a correct json format : “This email has already been used” ! (without any errors) but i still can’t find the error in my php code : S