Partage
  • Partager sur Facebook
  • Partager sur Twitter

Formulaire d'incription ne renvoit pas les erreurs

android studio

    26 juillet 2018 à 17:44:01

    Bonjour,
    Je suis débutant en programmation sur android studio.
    Lorsque je fait une erreur je ne reçoit aucune erreur a part celle de "une erreur s'est produite.....réessayer". 
    Même en faisant exprès une erreur dans le prenom.....
    Et sans erreur l'inscription ne se valide pas non plus mais toujours la même erreur 'une erreur s'est produite... réessayer".
    Pouvez vous m'aider, s'il vous plait ? c'est urgent ....
    Voila mon register activity:
    package fr.xxxx.xxxx;
    
    import android.content.Intent;
    
    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    import android.view.View;
    import android.widget.Button;
    import android.widget.EditText;
    import android.widget.ProgressBar;
    import android.widget.Toast;
    
    import com.android.volley.RequestQueue;
    
    import java.util.Map;
    
    import fr.xxxx.xxxx.myrequest.MyRequest;
    
    public class RegisterActivity extends AppCompatActivity {
    
        private Button btn_send;
        private EditText et_prenom, et_nom, et_email;
    
        private ProgressBar pb_loader;
        private RequestQueue queue;
        private MyRequest request;
    
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_register);
    
            btn_send = (Button) findViewById(R.id.btn_send);
            pb_loader = (ProgressBar) findViewById(R.id.pb_loader);
            et_prenom = (EditText) findViewById(R.id.et_prenom);
            et_nom = (EditText) findViewById(R.id.et_nom);
            et_email = (EditText) findViewById(R.id.et_email);
    
            queue = VolleySingleton.getInstance(this).getRequestQueue();
            request = new MyRequest(this, queue);
    
            btn_send.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    pb_loader.setVisibility(View.VISIBLE);
                    String prenom = et_prenom.getText().toString().trim();
                    String nom = et_nom.getText().toString().trim();
                    String email = et_email.getText().toString().trim();
                    if(prenom.length() > 0 && nom.length() > 0 && email.length() > 0){
    
                    request.register(prenom, nom, email, new MyRequest.RegisterCallback() {
                        @Override
                        public void onSuccess(String message) {
                            pb_loader.setVisibility(View.GONE);
                            Intent intent = new Intent(getApplicationContext(),MainActivity.class);
                            intent.putExtra("REGISTER", message);
                            startActivity(intent);
                            finish();
    
    
                        }
    
                        @Override
                        public void inputErrors(Map<String, String> errors) {
    
                            pb_loader.setVisibility(View.GONE);
                            if(errors.get("prenom") != null){
                                et_prenom.setError(errors.get("prenom"));
    
                            }
                            if(errors.get("nom") != null){
                                et_prenom.setError(errors.get("prenom"));
    
                            }
                            if(errors.get("email") != null){
                                et_prenom.setError(errors.get("prenom"));
    
                            }
    
                        }
    
                        @Override
                        public void onError(String message) {
                            pb_loader.setVisibility(View.GONE);
                            Toast.makeText(getApplicationContext(), message, Toast.LENGTH_SHORT).show();
    
                        }
                    });
                }else{
                        Toast.makeText(getApplicationContext(), "Veuillez remplir tous les champs", Toast.LENGTH_SHORT).show();
                    }
                }
            });
        }
    }</code>
    
    
    
    Voila mon main activity:
    <code java>
    package fr.xxxx.xxxx;
    
    import android.content.Intent;
    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    import android.view.View;
    import android.widget.Button;
    import android.widget.Toast;
    
    public class MainActivity extends AppCompatActivity {
    
        private Button  btn_login, btn_register;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            Intent intent = getIntent();
            if(intent.hasExtra("REGISTER")){
                Toast.makeText(this,intent.getStringExtra("REGISTER"), Toast.LENGTH_SHORT).show();
            }
    
            btn_login = (Button) findViewById(R.id.btn_login);
            btn_register = (Button) findViewById(R.id.btn_register);
    
            btn_register.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    Intent intent = new Intent(getApplicationContext(), RegisterActivity.class);
                    startActivity(intent);
                }
            });
    
    
    
    
         }
    }
    
    VOILA mon layout:
    <?xml version="1.0" encoding="utf-8"?>
     <LinearLayout  xmlns:android="http://schemas.android.com/apk/res/android"
    
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        android:gravity="center_vertical"
    
        tools:context=".RegisterActivity">
    
        <TextView
            android:text="@string/register_title"
            android:textSize="20sp"
            android:layout_marginBottom="40dp"
            android:layout_width="wrap_content"
            android:layout_gravity="center_horizontal"
            android:layout_height="wrap_content"  />
    
    
    <LinearLayout
    
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" >
    
        <EditText
            android:id="@+id/et_prenom"
            android:inputType="text"
            android:singleLine="true"
            android:imeOptions="actionNext"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:hint="@string/prenom"  />
    
    </LinearLayout>
    
        <LinearLayout
    
            android:layout_width="fill_parent"
            android:layout_height="wrap_content" >
    
            <EditText
                android:id="@+id/et_nom"
                android:inputType="text"
                android:singleLine="true"
                android:imeOptions="actionNext"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:hint="@string/nom"  />
    
        </LinearLayout>
    
        <LinearLayout
    
            android:layout_width="fill_parent"
            android:layout_height="wrap_content" >
    
            <EditText
                android:id="@+id/et_email"
                android:inputType="textEmailAddress"
                android:singleLine="true"
                android:imeOptions="actionDone"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:hint="@string/email"  />
    
        </LinearLayout>
    
    
        <Button
            android:id="@+id/btn_send"
            android:layout_marginTop="20dp"
            android:layout_gravity="center_horizontal"
            android:text="@string/suivant"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"  />
    
        <ProgressBar
            android:id="@+id/pb_loader"
            android:layout_gravity="center_horizontal"
            android:layout_marginTop="10dp"
            android:visibility="invisible"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"  />
    
    </LinearLayout>
    
    VOILA  mon REQUEST.JAVA :
    package fr.xxxx.xxxx.myrequest;
    
    import android.content.Context;
    
    
    import com.android.volley.AuthFailureError;
    import com.android.volley.NetworkError;
    import com.android.volley.Request;
    import com.android.volley.RequestQueue;
    import com.android.volley.Response;
    import com.android.volley.VolleyError;
    import com.android.volley.toolbox.StringRequest;
    
    import org.json.JSONException;
    import org.json.JSONObject;
    
    import java.util.HashMap;
    import java.util.Map;
    
    public class MyRequest {
    
        private Context context;
        private RequestQueue queue;
    
        public MyRequest(Context context, RequestQueue queue) {
            this.context = context;
            this.queue = queue;
        }
    
        public void register(final String prenom, final String nom, final String email, final RegisterCallback callback){
    
    
            String url = "http://192.xxx.x.xxx/Users/xxxx/Appli ga/xxxx/phpf/register.php";
    
            StringRequest request = new StringRequest(Request.Method.POST, url, new Response.Listener<String>() {
                @Override
                public void onResponse(String response) {
    
                    Map<String, String> errors = new HashMap<>();
    
                    try {
                        JSONObject json = new JSONObject(response);
                        Boolean error = json.getBoolean("error");
    
                        if(!error){
                            callback.onSuccess("Vous etes bien inscrit");
                            //inscription bien déroulée
    
    
    
                        }else{
    
                            JSONObject messages = json.getJSONObject("message");
                            if(messages.has("prenom")){
                                errors.put("prenom", messages.getString("prenom"));
    
                            }
                            if(messages.has("nom")){
                                errors.put("nom", messages.getString("nom"));
    
                            }
                            if(messages.has("email")){
                                errors.put("email", messages.getString("email"));
    
                            }
    
                            callback.inputErrors(errors);
    
    
    
                        }
                    } catch (JSONException e) {
                        e.printStackTrace();
                    }
    
    
    
    
                }
            }, new Response.ErrorListener() {
                @Override
                public void onErrorResponse(VolleyError error) {
                    if(error instanceof NetworkError){
                        callback.onError("Impossible de se connecter");
                    }else if(error instanceof VolleyError){
                        callback.onError("Une erreur s'est produite... Réessayer");
                    }
    
                }
            }){
                @Override
                protected Map<String, String> getParams() throws AuthFailureError {
    
                    Map<String, String> map = new HashMap<>();
                    map.put("prenom", prenom);
                    map.put("nom", nom);
                    map.put("email", email);
    
                    return map;
                }
            };
    
            queue.add(request);
        }
    
        public interface RegisterCallback{
            void onSuccess(String message);
            void inputErrors(Map<String, String> errors);
            void onError(String message);
        }
    
    }
    
    et voila mon PHP:
    <?php
    //Connexion à la base de données
    
    
    try{
    
    $bdd = new PDO('mysql:host=localhost;dbname=xxx;charset=utf8', 'root', ' ');
    
    $bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    
    $bdd->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
    
    } catch(PDOException $e) {
    	die('Erreur : ' . $e->getMessage());
    }
    
    
    $results["error"] = false;
    $results["message"] = [];	
    
    
    if(isset($_POST)){
    
    	if (!empty($_POST['prenom']) && !empty($_POST['nom']) && !empty($_POST['email'])){
    
    
            $prenom = $_POST['prenom'];
            $nom = $_POST['nom'];
            $email = $_POST['email'];
    
    
        //verification prenom
        
        if(strlen($prenom) < 2 || !preg_match("/^[a-zA-Z -]+$/", $prenom) || strlen($prenom) > 100 ){
        	$results['error'] = true;
        	$results['message']["prenom"] = "Prenom invalide";
        }else{
    
        }    
    
    
    
    
        //verification nom de famille
    
         if(strlen($nom) < 2 || !preg_match("/^[a-zA-Z -]+$/", $nom) || strlen($nom) > 100 ){
        	$results['error'] = true;
        	$results['message']["nom"] = "NOM de famille invalide";
        }else{
    
        } 
    
    
        //verification email
        if(!filter_var($email, FILTER_VALIDATE_EMAIL)){
        	$results["error"] = true;
        	$results['message']['email'] = "Email Invalide";
        }else{
         //verifier que email n'existe pas
        	$requete = $bdd->prepare("SELECT id FROM inscription WHERE email = :email");
        	$requete->execute([':email' => $email]);
        	$row = $requete->fetch();
        	if($row){
        		$results['error'] = true;
        		$results['message']["email"] = "Email déjà existant";
        	}
    
    
        }
    
    
    
        if($results["error"] === false){
    
    
    
        //insertion
        	
        	$sql = $bdd->prepare("INSERT INTO inscription(prenom, nom, email) VALUES(:prenom, :nom, :email)");
    
        		$sql->execute([":prenom" => $prenom, ":nom" => $nom, ":email" =>$email]);
    
        		if(!$sql){
        			$results["error"] = true;
        			$results["message"] = "Erreur lors de l'inscription";
        		}
        }
    
    
    
    
    	}else{
    		$results["error"] = true;
    		$results["message"] = "Veuillez remplir tous les champs";
    	}
    
    	echo json_encode($results);
    
    
    
    }
    
    
    ?>
    Et voila, 
    J'ai tout mis. Aidez moi svp
    Cordialement
    • Partager sur Facebook
    • Partager sur Twitter
      30 juillet 2018 à 9:46:00

      Bonjour, pourrais tu nous donner l'erreur situé dans le Logcat ?
      • Partager sur Facebook
      • Partager sur Twitter

      Le SSD c'est comme une drogue dès que tu commences tu t’arrêtes plus

        30 juillet 2018 à 10:34:37

        Bonjour,

        Volley de renvoie une erreur, le soucis est que tu affiches un message non spécifique, VolleyError étant l'exception par défaut. Utilise plutôt cette syntaxe:

        @Override
        public void onErrorResponse(VolleyError error) {
        
            if (error instanceof TimeoutError || error instanceof NoConnectionError) {
                Toast.makeText(context,
                        context.getString(R.string.error_network_timeout),
                        Toast.LENGTH_LONG).show();
            } else if (error instanceof AuthFailureError) {
                //TODO
            } else if (error instanceof ServerError) {
               //TODO
            } else if (error instanceof NetworkError) {
              //TODO
            } else if (error instanceof ParseError) {
               //TODO
            }
        }

        Cdt,

        • Partager sur Facebook
        • Partager sur Twitter
        Toujours à la recherche du savoir
          1 août 2018 à 12:05:01

          Bonjour Merci pour vos réponse;

          Willydu68780 les erreur dans le logcat sont :

          - NameNotFoundException

          et

          - ERROR=com.android.volley.TimeoutError

          Merci donikan

          Mais j'ai essayer ça me renvoie erreur. ils m'ont demander d'attribuer des valeur a certain donnée; Mais je ne suis pas sûr de la valeur que j'ai donnée a R.string.error_network_timeout) : 

          le error_network_timeout : j'ai donnée la valeur d'une string appeler "erreur s'est produite"

          et quand je refait mon test ça m'envoi cette erreur 'erreur s'est produite"

          En plus j'ai remarquer que:

          - sur la pageREQUEST.JAVA  sur la ligne 22 private Context contex ( le context reste gris et souligné)

          et

          - sur la même page sur la ligne 92 après throws le AuthFailureError reste gris et souligné pareil

          peut être est-ce le problème ? comment reglé le problème, svp ?

          Cordialement



          -
          Edité par oliviermeene 1 août 2018 à 12:19:35

          • Partager sur Facebook
          • Partager sur Twitter

          Formulaire d'incription ne renvoit pas les erreurs

          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
          • Editeur
          • Markdown