Formulaire inscription ne renvoi pas erreur
Patrick
-
BunoCS Messages postés 15952 Date d'inscription Statut Modérateur Dernière intervention -
BunoCS Messages postés 15952 Date d'inscription Statut Modérateur Dernière intervention -
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:
Voila mon main activity:
VOILA mon layout:
VOILA mon REQUEST.JAVA :
et voila mon PHP:
Et voila,
J'ai tout mis. Aidez moi svp
Cordialement
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(); } } }); } }
Voila mon main 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.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
A voir également:
- Formulaire inscription ne renvoi pas erreur
- Whatsapp formulaire opposition - Guide
- Formulaire de réclamation facebook - Guide
- Twitter inscription - Guide
- Paypal inscription - Guide
- Instagram inscription - Guide
4 réponses
Bonjour,
Tu dis que tu n'as pas autre chose que "une erreur s'est produite.....réessayer" mais d'où vient ce message ? As-tu regarder la console d'Android Studio ?
J'ai tout mis. Aidez moi svpCertes....mais as-tu ciblé le problème ? Est-ce que cela vient de ton PHP par exemple ?
Tu dis que tu n'as pas autre chose que "une erreur s'est produite.....réessayer" mais d'où vient ce message ? As-tu regarder la console d'Android Studio ?
Justement il y a aucun problème qui est signaler sur la console.
Et l'erreur "une s'est produite...réessayer.", c'est mon erreur que j'ai programer lorsqu'il y a un soucis lors de la connexion. Si tu regarde bien j'ai mit une autre erreur aussi lorsque par exemple la wifi n'est pas connecté par exemple et ça aussi donctionne bien. Aussi lorsque les champs sont vide ou a moitier remplit ça dit "veuillez remplir tout les champs" .. tout cela comme prévu.
Mais les erreurs pour dire que le prenom, nom ou email n'est pas valide ça ne fonctionne pas. Et lorque je fait aucune erreur l'ins ription ne se realise pas.
Et l'erreur "une s'est produite...réessayer.", c'est mon erreur que j'ai programer lorsqu'il y a un soucis lors de la connexion. Si tu regarde bien j'ai mit une autre erreur aussi lorsque par exemple la wifi n'est pas connecté par exemple et ça aussi donctionne bien. Aussi lorsque les champs sont vide ou a moitier remplit ça dit "veuillez remplir tout les champs" .. tout cela comme prévu.
Mais les erreurs pour dire que le prenom, nom ou email n'est pas valide ça ne fonctionne pas. Et lorque je fait aucune erreur l'ins ription ne se realise pas.
As-tu regardé côté serveur ce que tu reçois ? Ce que tu renvoies ?
Avec Studio, tu peux mettre des points d'arrêt et tracer ton app en pas-à-pas.
Avec Studio, tu peux mettre des points d'arrêt et tracer ton app en pas-à-pas.
Au lieu d'utiliser la commande "Run", tu peux utiliser la commande "Debug".
De plus, dans l'éditeur de code, tu peux cliquer dans la marge de gauche (celle avec les numéros de ligne) pour placer tes point d'arrêts. Lors de l'exécution en Debug, ton app s'arrêtera à chaque points d'arrêt rencontré, te permettant de vérifier les différentes variables à ce moment là
De plus, dans l'éditeur de code, tu peux cliquer dans la marge de gauche (celle avec les numéros de ligne) pour placer tes point d'arrêts. Lors de l'exécution en Debug, ton app s'arrêtera à chaque points d'arrêt rencontré, te permettant de vérifier les différentes variables à ce moment là
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"); } }
Le message d'erreur que tu obtiens est bien celui de la ligne 5 ? Si oui, il faut mettre un point d'arrêt et/ou afficher plus de détail sur les paramètres de
error. Je ne peux rien faire de plus, désolé.