Je suis débutant en programmation. J'ai élaborer DatePickerDialog pour une demande de date de naissance dans un formulaire simple avec la connexion a la base de données et analyse des erreurs sur php et les autres fichier pour renvoyer les erreur en JAVA SUR ANDROID STUDIO.
Mais la seul érreur que je reçoi, peux importe l'erreur que je fait, est celui que j'ai mit dans le inputErrors de la page RegisterActivitydeux qui est " La date d'anniversaire n'est pas valide".
<?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["date_n"])){
$date_n = $_POST["date_n"];
//verification de la date de naissance
if(!preg_match('`^([0-9]{2})/([0-9]{2})/([0-9]{4})$`', $date_n)){
$results["error"] = true;
$results["message"] ["date_n"]= "Date d'anniversaire invalide";
}else{
//verification age
// age aujourd'hui
$Dateoj = new DateTime();
// date - ans
$Datemoins = $Dateoj->sub(new DateInterval('P10Y'));
//convertion date en format date time
$date_n = DateTime::createFromFormat('j-m-Y', $_POST["date_n"]);
if($date_n >= $Datemoins)
{
//a moins 10 ans
$results['error'] = true;
$results['message'] = "Votre age nécessite une autorisation parental";
}
if($results["error"] === false){
//insertion
$sql = $bdd->prepare("INSERT INTO inscriptiondeux(date_n) VALUES(:date_n)");
$ql->execute([":date_n" => $date_n]);
if(!sql){
$results["error"] = true;
$results["message"] = "Erreur lors de l'inscription";
}
}
}
}else{
$results["error"] = true;
$results["message"] = "Veuillez indiquer votre date d'anniversaire";
}
echo json_encode($results);
}
?>
maintenant mon fichier registeractivitydeux
package fr.xxx.xxx;
import android.app.DatePickerDialog;
import android.content.Intent;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.DatePicker;
import android.widget.ProgressBar;
import android.widget.TextView;
import android.widget.Toast;
import com.android.volley.RequestQueue;
import java.util.Calendar;
import java.util.Map;
import fr.sssipe.sssipe.myrequest.MyRequestdeux;
public class RegisterActivitydeux extends AppCompatActivity {
private static final String TAG = "RegisterActivitydeux";
private Button btn_send;
private Button tvDate;
private ProgressBar pb_loader;
private TextView mDisplayDate;
private DatePickerDialog.OnDateSetListener mDateSetListener;
private RequestQueue queue;
private MyRequestdeux request;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_register_activitydeux);
Intent intent = getIntent();
if(intent.hasExtra("REGISTER")){
Toast.makeText(this,intent.getStringExtra("REGISTER"), Toast.LENGTH_SHORT).show();
}
mDisplayDate = (Button) findViewById(R.id.tvDate);
mDisplayDate.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick (View view) {
Calendar cal = Calendar.getInstance();
int year = cal.get(Calendar.YEAR);
int month = cal.get(Calendar.MONTH);
int day = cal.get(Calendar.DAY_OF_MONTH);
DatePickerDialog dialog = new DatePickerDialog(
RegisterActivitydeux.this,
android.R.style.Theme_Holo_Light_Dialog_MinWidth,
mDateSetListener,
year,month,day
);
dialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
dialog.show();
}
});
mDateSetListener = new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker datePicker, int year, int month, int day) {
month = month + 1;
Log.d(TAG, "onDateSet: mm/dd/yyyy: " + day + "/" + month + "/" + year);
String date = day + "/" + month + "/" + year;
mDisplayDate.setText(date);
}
};
btn_send = (Button) findViewById(R.id.btn_send);
tvDate = (Button) findViewById(R.id.tvDate);
pb_loader = (ProgressBar) findViewById(R.id.pb_loader);
queue = VolleySingleton.getInstance(this).getRequestQueue();
request = new MyRequestdeux(this, queue);
btn_send.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
pb_loader.setVisibility(View.VISIBLE);
String mDisplayDate = tvDate.getText().toString().trim();
request.registerdate(mDisplayDate, new MyRequestdeux.RegisterCallback() {
@Override
public void onSuccess(String message) {
pb_loader.setVisibility(View.GONE);
Intent intent = new Intent(getApplicationContext(), MainActivity.class);
intent.putExtra("REGISTERDATE", message);
startActivity(intent);
}
@Override
public void inputErrors(Map<String, String> errors) {
pb_loader.setVisibility(View.GONE);
Toast.makeText(getApplicationContext(), "La date d'anniversaire n'est pas valide", Toast.LENGTH_SHORT).show();
}
@Override
public void onError(String message) {
pb_loader.setVisibility(View.GONE);
Toast.makeText(getApplicationContext(), message, Toast.LENGTH_SHORT).show();
}
});
}
});
}
}
et enfin mon fichier myrequestdeux
package fr.xxx.xxx.myrequest;
import android.content.Context;
import android.util.Log;
import android.widget.Button;
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 MyRequestdeux {
private Context context;
private RequestQueue queue;
public MyRequestdeux(Context context, RequestQueue queue) {
this.context = context;
this.queue = queue;
}
public void registerdate(final String mDisplayDate, final RegisterCallback callback){
String url = "http://192.xxx.x.xx/phps/registerdate.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){
//inscription date bien deroulé
callback.onSuccess("Continuer");
}else{
JSONObject messages = json.getJSONObject("message");
if(messages.has("date_n")){
errors.put("date_n", messages.getString("date_n"));
}
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("date_n", mDisplayDate);
return map;
}
};
queue.add(request);
}
public interface RegisterCallback{
void onSuccess(String message);
void inputErrors(Map<String, String> errors);
void onError(String message);
}
}
Comment afficher les erreur date de naissance
× 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.