Insérer des données à partir d' android dans ma database mysql

Fermé
katiadja Messages postés 2 Date d'inscription mardi 25 août 2015 Statut Membre Dernière intervention 27 août 2015 - Modifié par jordane45 le 26/08/2015 à 00:37
katiadja Messages postés 2 Date d'inscription mardi 25 août 2015 Statut Membre Dernière intervention 27 août 2015 - 27 août 2015 à 14:53
Bonjour à tous, d'abord j'aimerais m'excuser si la question a déjà été posée mais depuis je cherche et je ne trouve pas de solution.
j'ai créé une interface utilisateur sur android studio pour que l'utilisateur puisse y insérer son Nom, Prénom, date de naissance etc...
une fois qu'il aura renseigné ces champs je voudrais récupérer ces données et les insérer dans ma base de donnée mysql grâce à PHP.

j'ai donc suivi un tutoriel et le code qui a été proposé est le suivant:
Code :
 
<?php
 
    $con=mysqli_connect("localhost","root","","mabase");
 
    $Nom = $_POST["Nom"];
    $Prenom = $_POST["Prenom"];
    $Datedenaissance = $_POST["Datedenaissance"];
    $Motdepasse = $_POST["Motdepasse"];
    $Nomdutilisateur = $_POST["Nomdutilisateur"];
    $Statut = $_POST["Statut"];
 
    $statement = mysqli_prepare($con, "INSERT INTO User (Nom, Prenom, Datedenaissance, Motdepasse, Nomdutilisateur, Statut) VALUES (?, ?, ?, ?, ?, ?)");
 
    mysql_stmt_bind_param($statement, "ssiss", $Nom, $Prenom, $Datedenaissance, $Motdepasse, $Nomdutilisateur, $Statut);
 
    mysqli_stmt_execute($statement);
 
    mysqli_stmt_close($statement);
 
    mysqli_close($con);
?>


et j'ai les erreurs suivant sur mon serveur web:

Notice: Undefined index: Nom in C:\wamp\www\test\Register.php on line 6
Notice: Undefined index: Prenom in C:\wamp\www\test\Register.php on line 8
Notice: Undefined index: Datedenaissance in C:\wamp\www\test\Register.php on line 10
Notice: Undefined index: Motdepasse in C:\wamp\www\test\Register.php on line 12
Notice: Undefined index: Nomdutilisateur in C:\wamp\www\test\Register.php on line 14
Notice: Undefined index: Statut in C:\wamp\www\test\Register.php on line 16
Warning: mysqli_stmt_bind_param() expects parameter 1 to be mysqli_stmt, boolean given in C:\wamp\www\test\Register.php on line 20
Warning: mysqli_stmt_execute() expects parameter 1 to be mysqli_stmt, boolean given in C:\wamp\www\test\Register.php on line 22
Warning: mysqli_close() expects parameter 1 to be mysqli, boolean given in C:\wamp\www\test\Register.php on line 24

voici le contenu de la classe JAVA qui permet de gérer le formulaire
import android.content.Intent;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
 
public class Register extends ActionBarActivity implements View.OnClickListener {
 
    Button bRegister;
    EditText etNom, etPrenom, etDatedenaissance, etNomdutilisateur, etMotdepasse, etStatut;
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_register);
 
        etNom = (EditText) findViewById(R.id.etNom);
        etPrenom = (EditText) findViewById(R.id.etPrenom);
        etDatedenaissance = (EditText)  findViewById(R.id.etDatedenaissance);
        etNomdutilisateur = (EditText) findViewById(R.id.etNomdutilisateur);
        etMotdepasse = (EditText) findViewById(R.id.etMotdepasse);
        etStatut = (EditText) findViewById(R.id.etStatut);
        bRegister = (Button) findViewById(R.id.bValider);
 
        bRegister.setOnClickListener(this);
    }
 
    @Override
    public  void onClick(View v) {
        switch(v.getId()){
            case R.id.bRegister:
                String nom = etNom.getText().toString();
                String  prenom = etPrenom.getText().toString();
                String Nomdutilisateur = etNomdutilisateur.getText().toString();
                String Motdepasse = etMotdepasse.getText().toString();
                String statut = etStatut.getText().toString();
                int Datedenaissance = Integer.parseInt(etDatedenaissance.getText().toString());
 
            break;
        }
    }
 
    private void registerUser(User user ) {
        ServerRequests serverRequests = new ServerRequests(this);
        serverRequests.storeUserDataInBackground(user, new GetUserCallback() {
            @Override
            public void done(User returnedUser) {
                Intent logInetent = new Intent(Register.this, enregistrer.class);
                startActivity(logInetent);
            }
        });
    }
 
 
    }

le contenu de la classe ServerRequests associée:

 
 
 
import android.app.ProgressDialog;
import android.content.Context;
import android.os.AsyncTask;
import android.util.Log;
 
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.params.BasicHttpParams;
import org.apache.http.params.HttpConnectionParams;
import org.apache.http.params.HttpParams;
import org.apache.http.util.EntityUtils;
import org.json.JSONObject;
 
import java.util.ArrayList;
 
 
public class ServerRequests {
    ProgressDialog progressDialog;
    public static final int CONNECTION_TIMEOUT = 1000 * 15;
    public static final String SERVER_ADDRESS = "[http://localhost:8000/]";
 
    public ServerRequests(Context context) {
        progressDialog = new ProgressDialog(context);
        progressDialog.setCancelable(false);
        progressDialog.setTitle("Processing...");
        progressDialog.setMessage("Please wait...");
    }
 
    public void storeUserDataInBackground(User user, GetUserCallback userCallBack) {
        progressDialog.show();
        new StoreUserDataAsyncTask(user, userCallBack).execute();
    }
 
    public void fetchUserDataAsyncTask(User user, GetUserCallback userCallBack) {
        progressDialog.show();
        new fetchUserDataAsyncTask(user, userCallBack).execute();
    }
 
    public class StoreUserDataAsyncTask extends AsyncTask<Void, Void, Void> {
        User user;
        GetUserCallback userCallBack;
 
        public StoreUserDataAsyncTask(User user, GetUserCallback userCallBack) {
            this.user = user;
            this.userCallBack = userCallBack;
        }
 
        @Override
        protected Void doInBackground(Void... params) {
            ArrayList<NameValuePair> dataToSend = new ArrayList<>();
            dataToSend.add(new BasicNameValuePair("Nom", user.Nom));
            dataToSend.add(new BasicNameValuePair("Prenom", user.Prenom));
            dataToSend.add(new BasicNameValuePair("Nomdutilisateur", user.Nomdutilisateur));
            dataToSend.add(new BasicNameValuePair("Motdepasse", user.Motdepasse));
            dataToSend.add(new BasicNameValuePair("Datedenaissance", user.Datedenaissance + ""));
            dataToSend.add(new BasicNameValuePair("Statut", user.Statut));
            HttpParams httpRequestParams = getHttpRequestParams();
 
            HttpClient client = new DefaultHttpClient(httpRequestParams);
            HttpPost post = new HttpPost(SERVER_ADDRESS
                    + "Register.php");
 
            try {
                post.setEntity(new UrlEncodedFormEntity(dataToSend));
                client.execute(post);
            } catch (Exception e) {
                e.printStackTrace();
            }
 
            return null;
        }
 
        private HttpParams getHttpRequestParams() {
            HttpParams httpRequestParams = new BasicHttpParams();
            HttpConnectionParams.setConnectionTimeout(httpRequestParams,
                    CONNECTION_TIMEOUT);
            HttpConnectionParams.setSoTimeout(httpRequestParams,
                    CONNECTION_TIMEOUT);
            return httpRequestParams;
        }
 
        @Override
        protected void onPostExecute(Void result) {
            super.onPostExecute(result);
            progressDialog.dismiss();
            userCallBack.done(null);
        }
 
    }
 
    public class fetchUserDataAsyncTask extends AsyncTask<Void, Void, User> {
        User user;
        GetUserCallback userCallBack;
 
        public fetchUserDataAsyncTask(User user, GetUserCallback userCallBack) {
            this.user = user;
            this.userCallBack = userCallBack;
        }
 
        @Override
        protected User doInBackground(Void... params) {
            ArrayList<NameValuePair> dataToSend = new ArrayList<>();
            dataToSend.add(new BasicNameValuePair("Nomdutilisateur", user.Nomdutilisateur));
            dataToSend.add(new BasicNameValuePair("Motdepasse", user.Motdepasse));
 
            HttpParams httpRequestParams = new BasicHttpParams();
            HttpConnectionParams.setConnectionTimeout(httpRequestParams,
                    CONNECTION_TIMEOUT);
            HttpConnectionParams.setSoTimeout(httpRequestParams,
                    CONNECTION_TIMEOUT);
 
            HttpClient client = new DefaultHttpClient(httpRequestParams);
            HttpPost post = new HttpPost(SERVER_ADDRESS
                    + "verification.php");
 
            User returnedUser = null;
 
            try {
                post.setEntity(new UrlEncodedFormEntity(dataToSend));
                HttpResponse httpResponse = client.execute(post);
 
                HttpEntity entity = httpResponse.getEntity();
                String result = EntityUtils.toString(entity);
                JSONObject jObject = new JSONObject(result);
 
                if (jObject.length() != 0){
                    Log.v("happened", "2");
                    String Nom = jObject.getString("Nom");
                    String Prenom = jObject.getString("Prenom");
                    String Statut = jObject.getString("Statut");
                    int Datedenaissance = jObject.getInt("Datedenaissance");
 
                    returnedUser = new User(Nom, Prenom, Datedenaissance, user.Nomdutilisateur, user.Motdepasse, Statut);
                }
 
            } catch (Exception e) {
                e.printStackTrace();
            }
 
            return returnedUser;
        }
 
        @Override
        protected void onPostExecute(User returnedUser) {
            super.onPostExecute(returnedUser);
            progressDialog.dismiss();
            userCallBack.done(returnedUser);
        }
    }
}


EDIT : Ajout du LANGAGE dans les balises de code.
Explications disponibles ICI

Merci d'y penser dans tes prochains messages.
A voir également:

1 réponse

BunoCS Messages postés 15475 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 23 avril 2024 3 895
26 août 2015 à 10:12
Bonjour,

Je ne vois pas d'appel à la méthode
registerUser()
. Les paramètres sont ils bien passés?

Dans ton PHP, je te conseille d'utiliser
isset()
afin de pouvoir retourner une erreur propre en cas de paramètre manquant
0
Dans le php j'ai essayé
de faire comme ceci avec isset:


<?php

if ( isset($_POST['Nom']) && isset($_POST['Prenom']) && isset($_POST['Datedenaissance']) && isset($_POST['Motdepasse']) && isset($_POST['Nomdutilisateur']) && isset($_POST['Statut']) ) {


$Nom = $_POST["Nom"];

$Prenom = $_POST["Prenom"];

$Datedenaissance = $_POST["Datedenaissance"];

$Motdepasse = $_POST["Motdepasse"];

$Nomdutilisateur = $_POST["Nomdutilisateur"];

$Statut = $_POST["Statut"];

$con=mysqli_connect("localhost","root","","telebola");

$statement = mysqli_prepare($con, "INSERT INTO User (Nom, Prenom, Datedenaissance, Motdepasse, Nomdutilisateur, Statut) VALUES (?, ?, ?, ?, ?, ?)");

mysql_stmt_bind_param($statement, "ssiss", $Nom, $Prenom, $Datedenaissance, $Motdepasse, $Nomdutilisateur, $Statut);

mysqli_stmt_execute($statement);


mysqli_stmt_close($statement);

mysqli_close($con);
}
?>


mais ça ne marche toujours pas. Ensuite pour la méthode RegisterUser() c'est la partie là:

private void registerUser(User user ) {
ServerRequests serverRequests = new ServerRequests(this);
serverRequests.storeUserDataInBackground(user, new GetUserCallback() {
@Override
public void done(User returnedUser) {
Intent logInetent = new Intent(Register.this, enregistrer.class);
startActivity(logInetent);
}
});
}

et il appelle la classe ServerRequests
En fait j'aimerai d'abords résoudre ce problème avant d'insérer les vérification.
0
BunoCS Messages postés 15475 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 23 avril 2024 3 895
26 août 2015 à 14:37
J'ai vu ta méthode
registerUser()
...mais tu l'appelle où? Et avec quels paramètres?

Quitte à utiliser
isset()
, autant faire un echo d'un message d'erreur pour ne pas oublier...
0
katiadja Messages postés 2 Date d'inscription mardi 25 août 2015 Statut Membre Dernière intervention 27 août 2015 > BunoCS Messages postés 15475 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 23 avril 2024
27 août 2015 à 14:53
aaah oui c'est vrai j'avais supprimé cette ligne sans m'en rendre compte

public void onClick(View v) {
switch(v.getId()){
case R.id.bRegister:
String nom = etNom.getText().toString();
String prenom = etPrenom.getText().toString();
String Nomdutilisateur = etNomdutilisateur.getText().toString();
String Motdepasse = etMotdepasse.getText().toString();
String statut = etStatut.getText().toString();
int Datedenaissance = Integer.parseInt(etDatedenaissance.getText().toString());

User user = new User (Nom, Prenom, Datedenaissance, Nomdutilisateur, Motdepasse, Statut);
registerUser (User);

break;
}
}
0