IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Android Discussion :

[Tutoriel] Communication base de données via script PHP


Sujet :

Android

  1. #21
    Expert éminent

    Avatar de Feanorin
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    4 589
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 4 589
    Points : 9 149
    Points
    9 149
    Par défaut
    Hmm,

    It's good to notice that in some cases use of "==" operator can lead to the expected result, because the way how JVM handling strings - string literals are interned (see String.intern()) - so when you write for example "hello world" in two classes and compare those strings with "==" you could get result: true, which is expected, but it's only side effect of jvm optimizations; when you compare same strings (linguistically) when the first is string literal (ie. defined through "string") and second is constructed through "new" keyword like new String("string") using of == (equality operator) returns false, because both of them are different instances of String class.
    De plus nous ne sommes pas en JVM mais sur Dalvik.

    Cela est toujours plus propre d'utiliser les fonction equals ou equalsIgnoreCase, pour ce cas présent l'opérateur == suffisait.

    Personnellement rien ne me choque la dessus!

    Nous comparons 2 chaines de caractère!

    L'opérateur == peut être utilisé si nous voulons vérifier l'égalité strict.
    Attention avec l'opérateur == sur les chaînes , tu risques d'avoir des surprises si l'instance n'est pas la même . Il faut bien se méfier.
    Responsable Android de Developpez.com (Twitter et Facebook)
    Besoin d"un article/tutoriel/cours sur Android, consulter la page cours
    N'hésitez pas à consulter la FAQ Android et à poser vos questions sur les forums d'entraide mobile d'Android.

  2. #22
    Rédacteur
    Avatar de David55
    Homme Profil pro
    Ingénieur informatique
    Inscrit en
    Août 2010
    Messages
    1 542
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2010
    Messages : 1 542
    Points : 2 808
    Points
    2 808
    Par défaut
    Très bien du coup pour résumer:

    L'opérateur == est à éviter (sur notre exemple, il n'est pas dérangeant).
    tu risques d'avoir des surprises si l'instance n'est pas la même
    Mieux vaut utiliser les fonctions equals ou equalsIgnoreCase.


    Merci pour la remarque! C'est toujours bon à savoir

  3. #23
    Nouveau membre du Club
    Inscrit en
    Juillet 2009
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 17
    Points : 26
    Points
    26
    Par défaut
    Citation Envoyé par David55 Voir le message
    Personnellement rien ne me choque la dessus!

    Nous comparons 2 chaines de caractère!

    L'opérateur == peut être utilisé si nous voulons vérifier l'égalité strict.
    Qu'est-ce que tu appelles égalité stricte ?

    Essaye cet exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    String abcdString = "abcd";
    char[] abcdArray = {'a','b','c','d'};
    String abcdArrayToString = new String(abcdArray);
    System.out.println("abcdString: "+abcdString);
    System.out.println("abcdArrayToString: "+abcdArrayToString);
    System.out.println("abcdString == abcdArrayToString = "+(abcdString == abcdArrayToString));
    System.out.println("abcdString.equals(abcdArrayToString) = "+abcdString.equals(abcdArrayToString));
    Cela retourne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    abcdString: abcd
    abcdArrayToString: abcd
    abcdString == abcdArrayToString = false
    abcdString.equals(abcdArrayToString) = true
    ==vérifie si les 2 références correspondent à la même instance.
    equals peut être true avec 2 instances différentes.
    Jusque là rien de nouveau, mais dans le cas des String il semble y avoir une subtilité avec la méthode String.intern() :

    public String intern()

    Returns a canonical representation for the string object.

    A pool of strings, initially empty, is maintained privately by the class String.

    When the intern method is invoked, if the pool already contains a string equal to this String object as determined by the equals(Object) method, then the string from the pool is returned. Otherwise, this String object is added to the pool and a reference to this String object is returned.

    It follows that for any two strings s and t, s.intern() == t.intern() is true if and only if s.equals(t) is true.

    All literal strings and string-valued constant expressions are interned. String literals are defined in §3.10.5 of the Java Language Specification

    Returns:
    a string that has the same contents as this string, but is guaranteed to be from a pool of unique strings.
    Voilà pour ceux qui veulent en savoir plus :
    http://www.codeinstructions.com/2009...ern-myths.html
    It basically says that the method returns a representation of the String that is guaranteed to be unique through the JVM. If two String objects are internalized, they can be safely compared with == instead of equals.
    J'aurais appris un truc aujourd'hui.

    EDIT : le dernier mot http://stackoverflow.com/questions/3...ew-stringsilly

  4. #24
    Rédacteur
    Avatar de David55
    Homme Profil pro
    Ingénieur informatique
    Inscrit en
    Août 2010
    Messages
    1 542
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2010
    Messages : 1 542
    Points : 2 808
    Points
    2 808
    Par défaut
    Merci JejeWIll pour la remarque, l'exemple et la précision

  5. #25
    Membre du Club
    Homme Profil pro
    Développeur Web et Mobile
    Inscrit en
    Juin 2010
    Messages
    76
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur Web et Mobile

    Informations forums :
    Inscription : Juin 2010
    Messages : 76
    Points : 65
    Points
    65
    Par défaut
    Bonjour,

    J'ai une question à propos de ce tutoriel.
    J'ai la même erreur que pascalp59
    Dans la classe "LoginContentHandler", les fonctions startDocument, EndElement, EndDocument et caracters fonctionnent bien.

    Cependant ma fonction startElement ne se lance pas Elle est pourtant (je pense) correctement écrite.

    Eclipse me met un warning pour indiquer que la fonction n'est jamais utilisée localement et propose de la supprimer.
    sauf que je n'ai pas dérangé autant le code.
    J'ai vérifié les import et j'ai bien un problème avec : org.xml.sax.Attributes puisqu'il me le souligne en rouge.
    Es-ce parce que j'utilise le SDK 2.1 ?

    PS : je n'ai pas non plus javolution.xml.sax.Attributes

    Mon code au cas où :

    Main.java :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
     
    /* Entreprise : Emergence IT
     * Développé par : Maxime Nicole
     * Application : Quiz
     * Version : 1.0
     * Date de création : 02/11/2011
     * Date de modification : 15/11/2011
     */
     
    package fr.emergenceit.quiz;
     
    import android.app.Activity;
    import android.content.Intent;
    import android.os.Bundle;
    import android.view.View;
    import android.widget.Button;
    import android.widget.EditText;
    import android.widget.Toast;
     
    public class Main extends Activity {
     
    	Button btnConnect;
    	Button btnInscrip;
     
        @Override
        public void onCreate(Bundle savedInstanceState) {
     
        	super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
     
        	// On récupère tous les éléments de notre interface grâce aux ID
        	btnConnect = ((Button)this.findViewById(R.acountcreation.connect));
        	btnInscrip = ((Button)this.findViewById(R.acountcreation.createAcount));
     
    		// On attribut un écouteur d'évènement à tous les boutons
        	btnInscrip.setOnClickListener(new View.OnClickListener() {
     
    			public void onClick(View v) {
    				goToInscrip();
    			}
     
    		});
     
        	btnConnect.setOnClickListener(new View.OnClickListener() {
     
    			public void onClick(View v) {
    				goToMenuPrincipal();
     
    			}
    		});
     
        }//Fin onCreate()
     
    	protected void goToMenuPrincipal() {
     
    		//On récupère les deux champs, puis le texte saisi
    		EditText login = (EditText)findViewById(R.id.email1);
    		String loginStr = login.getText().toString();
    		EditText pass = (EditText)findViewById(R.id.password1);
    		String passStr = pass.getText().toString();
     
    		Intent intent = new Intent(this, Login.class);
     
    		//On rajoute les valeurs à l’Intent
    		//en tant qu’extra a ce dernier.
    		//Les extras sont différenciés par un “id” (string)
    		intent.putExtra("login", loginStr);
    		intent.putExtra("password", passStr);
     
    		//On déclare le pattern que l’on doit suivre pour l'e-mail
    		//Pattern p = Pattern.compile(".+@.+\\.[a-z]+");
     
    		//On déclare un matcher, qui comparera le pattern avec la string passée en argument
    		//Matcher m = p.matcher(loginStr);
     
    		// Si l’adresse mail saisie ne correspond au format d’une adresse mail
    		/*if (m.matches() == false) {
    			//Toast est une classe fournie par le SDK Android
    		    //pour afficher les messages dans des minis pop up
    		    //Le premier argument est le Context, puis
    		    //le message et à la fin la durée de ce dernier
    		    Toast.makeText(getBaseContext(),
    		    "Le champs email ne correspond pas au format d'une adresse mail",
    		    Toast.LENGTH_SHORT).show();
    		    return;
    		}*/
     
    		//Si un des deux champs est vide, alors on affiche les erreurs
    		if (passStr.equals("") || loginStr.equals("")) {
    			Toast.makeText(getBaseContext(),
    			"L'adresse email et mot de passe sont obligatoires",
    			Toast.LENGTH_SHORT).show();
    			return;
    		}
     
    		//Si on respecte les conditions plus haut
    		//On accède à l'écran du menu principal
    		this.startActivity(intent);
     
    	}
     
    	protected void goToInscrip() {
    		Intent intent = new Intent(this, Inscription.class);				
    		//On démarre l'activité
    		this.startActivity(intent);
     
    	}
     
    	@Override
    	protected void onDestroy() {
    		//On arrête le service : "ServicePacks". (qui a été démarré dans MenuPrincipal.java
    		Intent bindIntent = new Intent(this, ServicePacks.class);
    		stopService(bindIntent);
    		super.onDestroy();
    	}
    }
    Login.java :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    252
    253
    254
    255
    256
    257
    258
    259
    260
    261
    262
    263
    264
    265
    266
    267
    268
    269
    270
    271
    272
    273
    274
    275
    276
    277
    278
    279
    280
    281
    282
    283
    284
    285
    286
    287
    288
    289
    290
    291
    292
    293
    294
    295
     
    package fr.emergenceit.quiz;
     
    import java.io.IOException;
    import java.io.InputStream;
    import java.security.MessageDigest;
    import java.security.NoSuchAlgorithmException;
    import java.util.ArrayList;
    import java.util.List;
    import java.util.jar.Attributes;
     
    import javax.xml.parsers.ParserConfigurationException;
    import javax.xml.parsers.SAXParser;
    import javax.xml.parsers.SAXParserFactory;
     
    import org.apache.http.HttpEntity;
    import org.apache.http.HttpResponse;
    import org.apache.http.NameValuePair;
    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.HttpConnectionParams;
    import org.apache.http.protocol.HTTP;
    import org.xml.sax.InputSource;
    import org.xml.sax.SAXException;
    import org.xml.sax.XMLReader;
    import org.xml.sax.helpers.DefaultHandler;
     
    import android.app.Activity;
    import android.app.AlertDialog;
    import android.app.ProgressDialog;
    import android.content.Intent;
    import android.os.Bundle;
    import android.os.Looper;
    import android.util.Log;
     
     
    public class Login extends Activity {
     
    	// Lien vers votre page php sur votre serveur
    		private static final String	UPDATE_URL	= "http://quiz.emergence-wm.com/10569845896512/login.php";
    		public ProgressDialog progressDialog;
     
    		public void onCreate(Bundle savedInstanceState) {
     
    			super.onCreate(savedInstanceState);
    			setContentView(R.layout.wait);
     
    			// initialisation d'une progress bar
    			progressDialog = new ProgressDialog(this);
    			progressDialog.setMessage("Please wait...");
    			progressDialog.setIndeterminate(true);
    			progressDialog.setCancelable(false);
    			//On récupère l’Intent que l’on a reçu
    			Intent thisIntent = getIntent();
    			//On récupère les deux extra grâce à leurs id
    			String login = thisIntent.getExtras().getString("login");
    			String pass = thisIntent.getExtras().getString("password");
    			doLogin(login, pass);
     
     
    		}
     
    		private void createDialog(String title, String text)
    		{
    			// Création d'une popup affichant un message
    			AlertDialog ad = new AlertDialog.Builder(this)
    					.setPositiveButton("Ok", null).setTitle(title).setMessage(text)
    					.create();
    			ad.show();
     
    		}
     
    		private void doLogin(final String login, final String pass)
    		{
     
    			final String pw = md5(pass);
    			// Création d'un thread
    			Thread t = new Thread()
    			{
     
    				public void run()
    				{
     
    					Looper.prepare();
    					// On se connecte au serveur afin de communiquer avec le PHP
    					DefaultHttpClient client = new DefaultHttpClient();
    					HttpConnectionParams.setConnectionTimeout(client.getParams(), 15000);
     
    					HttpResponse response;
    					HttpEntity entity;
     
    					try
    					{
    						// On établit un lien avec le script PHP
    						HttpPost post = new httpPost(UPDATE_URL);
     
    						List<NameValuePair> nvps = new ArrayList<NameValuePair>();
     
    						nvps.add(new BasicNameValuePair("username", login));
     
    						nvps.add(new BasicNameValuePair("password", pw));
     
    						post.setHeader("Content-Type", "application/x-www-form-urlencoded");
    						// On passe les paramètres login et password qui vont être récupérés
    						// par le script PHP en post
    						post.setEntity(new UrlEncodedFormEntity(nvps, HTTP.UTF_8));
    						// On récupère le résultat du script
    						response = client.execute(post);
     
    						entity = response.getEntity();
     
    						InputStream is = entity.getContent();
    						// On appelle une fonction définie plus bas pour traduire la réponse
    						read(is);
    						is.close();
     
    						if (entity != null)
    							entity.consumeContent();
     
    					}
    					catch (Exception e)
    					{
     
    						progressDialog.dismiss();
    						createDialog("Error", "Couldn't establish a connection");
     
    					}
     
    					Looper.loop();
     
    				}
     
    			};
     
    			t.start();
     
    		}
     
    		private void read(InputStream in)
    		{
    			// On traduit le résultat d'un flux
    			SAXParserFactory spf = SAXParserFactory.newInstance();
     
    			SAXParser sp;
     
    			try
    			{
     
    				sp = spf.newSAXParser();
     
    				XMLReader xr = sp.getXMLReader();
    				// Cette classe est définie plus bas
    				LoginContentHandler uch = new LoginContentHandler();
     
    				xr.setContentHandler(uch);
     
    				xr.parse(new InputSource(in));
     
    			}
    			catch (ParserConfigurationException e)
    			{
     
    			}
    			catch (SAXException e)
    			{
     
    			}
    			catch (IOException e)
    			{
    			}
     
    		}
     
    		private String md5(String in)
    		{
     
    			MessageDigest digest;
     
    			try
    			{
     
    				digest = MessageDigest.getInstance("MD5");
     
    				digest.reset();
     
    				digest.update(in.getBytes());
     
    				byte[] a = digest.digest();
     
    				int len = a.length;
     
    				StringBuilder sb = new StringBuilder(len << 1);
     
    				for (int i = 0; i < len; i++)
    				{
     
    					sb.append(Character.forDigit((a[i] & 0xf0) >> 4, 16));
     
    					sb.append(Character.forDigit(a[i] & 0x0f, 16));
     
    				}
     
    				return sb.toString();
     
    			}
    			catch (NoSuchAlgorithmException e)
    			{
    				e.printStackTrace();
    			}
     
    			return null;
     
    		}
     
    		private class LoginContentHandler extends DefaultHandler
    		{
    			// Classe traitant le message de retour du script PHP
    			private boolean	in_loginTag		= false;
    			private int			userID;
    			private boolean	error_occured	= false;
     
    			public void startElement(String n, String l, String q, Attributes a) throws SAXException {
    				Log.i("error", "0");
    				if (l == "login")
    					in_loginTag = true;
    				if (l == "error")
    				{
     
    					progressDialog.dismiss();
     
    					switch (Integer.parseInt(a.getValue("value")))
    					{
    						case 1:
    							createDialog("Error", "Couldn't connect to Database");Log.i("Error", "database");
    							break;
    						case 2:
    							createDialog("Error", "Error in Database: Table missing");Log.i("Error", "table");
    							break;
    						case 3:
    							createDialog("Error", "Invalid username and/or password");Log.i("Error", "identifiant et password");
    							break;
    					}
    					error_occured = true;
     
    				}
     
    				if (l == "user" && in_loginTag && a.getValue("id") != "")
    					// Dans le cas où tout se passe bien on récupère l'ID de l'utilisateur
    					userID = Integer.parseInt(a.getValue("id"));
    					Log.i("Error", "1");
    					Intent intent = new Intent(Login.this, MenuPrincipal.class);				
    					//On démarre l'activité
    					startActivity(intent);
     
    			}
     
     
    			private void startActivity(Intent intent) {
    				this.startActivity(intent);
     
    			}
     
     
    			public void endElement(String n, String l, String q) throws SAXException
    			{
    				// on renvoie l'id si tout est ok
    				if (l == "login")
    				{
    					in_loginTag = false;
     
    					if (!error_occured)
    					{
    						progressDialog.dismiss();
    						Log.i("Error", "2");
    						finish();
    					}
    				}
    			}
     
    			public void characters(char ch[], int start, int length)
    			{
    			}
     
    			public void startDocument() throws SAXException
    			{
    			}
     
    			public void endDocument() throws SAXException
    			{
    			}
     
    		}
    }

  6. #26
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2011
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 3
    Points : 3
    Points
    3
    Par défaut
    Bonjour,

    J'ai voulu tester le code, mais en vain.

    Faut-il créer les classes Main et Login dans le même package, ou faire deux packages différents?

    Dans le premier cas, lorsque l'application plante au lancement.
    Dans le second cas, j'ai un Stack Overflow.


    Pouvez-vous m'aider s'il vous plaît?


    Merci d'avance pour vos réponses.

  7. #27
    Expert éminent

    Avatar de Feanorin
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    4 589
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 4 589
    Points : 9 149
    Points
    9 149
    Par défaut
    Bonjour

    Dans le second cas, j'ai un Stack Overflow.
    Pourrais tu nous poster ton erreur ?

    Faut-il créer les classes Main et Login dans le même package, ou faire deux packages différents?
    Euh , il n'y a pas d'obligation ... tu fais ce que tu veux...
    Responsable Android de Developpez.com (Twitter et Facebook)
    Besoin d"un article/tutoriel/cours sur Android, consulter la page cours
    N'hésitez pas à consulter la FAQ Android et à poser vos questions sur les forums d'entraide mobile d'Android.

  8. #28
    Futur Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2011
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Novembre 2011
    Messages : 7
    Points : 5
    Points
    5
    Par défaut Cryptage
    Bonjour,

    je voulais premièrement vous remerciez pour ce tuto qui m'a permis d'avancer
    dans mon projet.

    je me pause une question:

    je voudrais crypté les données pour qu'elles ne transite pas en clair sur le réseaux je me demandais donc qu'elles solutions s'offrait à moi ?

    Cordialement

  9. #29
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2011
    Messages
    77
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2011
    Messages : 77
    Points : 40
    Points
    40
    Par défaut authentification android mysql
    Bonjour David,

    Merci pour le tuto, je l'ai suit mais lorsque je saisit le login et le mot de passe l'émulateur m'indique que ces derniers sont incorrects. Sachant que le LogCat ne me renvoie aucune erreur, par contre la console m'affiche cette erreur:
    [2012-02-24 12:53:12 - Main] ActivityManager: Warning: Activity not started, its current task has been brought to the front

    Je vous communique ci-dessous mon code:

    Classe MainActivity:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
     package de.demo.main;
    import android.app.Activity; 
    import android.content.Intent;
    import android.os.Bundle;
    import android.widget.TextView;
    import de.demo.login.LoginActivity;
     
    public class MainActivity extends Activity 
    {
    	private TextView tv;
    	public static final int RESULT_Main = 1;
     
    	public void onCreate(Bundle icicle) 
    	{
            super.onCreate(icicle);
     
     		//Appel de la page de Login 
            startActivityForResult(new Intent(MainActivity.this, LoginActivity.class), RESULT_Main);
     
            tv = new TextView(this);
            setContentView(tv);
        }
     
        private void startup(Intent i) 
    	{
    		// Récupère l'identifiant        
    		int user = i.getIntExtra("userid",-1);
     
    		//Affiche les identifiants de l'utilisateur
            tv.setText("UserID: "+String.valueOf(user)+" logged in");
        }
     
     
        protected void onActivityResult(int requestCode, int resultCode, Intent data) 
    	{ 
            if(requestCode == RESULT_Main && resultCode == RESULT_CANCELED)  
                finish(); 
            else 
                startup(data);
        }
    }
    Classe LoginActivity:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    252
    253
    254
    255
    256
    257
    258
    259
    260
    261
    262
    263
    264
    265
    266
    267
    268
    269
    270
    271
    272
    273
    274
    275
    276
    277
    278
    279
    280
    281
    282
    283
    284
    285
    286
    287
    288
    289
    290
    291
    292
    293
    294
    295
    296
    297
    298
    299
    300
    301
    302
    303
    304
    305
    306
    307
    308
    309
    310
    311
    312
    313
    314
    315
    316
    317
    318
    319
    320
    321
    322
    323
    324
    325
    326
    327
    328
    329
    330
    331
    332
    333
    334
    335
    336
    337
    338
    339
    340
    341
     package de.demo.login;
     
    import java.io.IOException;
    import java.io.InputStream;
    import java.security.MessageDigest;
    import java.security.NoSuchAlgorithmException;
    import java.util.ArrayList;
    import java.util.List;
    import javax.xml.parsers.ParserConfigurationException;
    import javax.xml.parsers.SAXParser;
    import javax.xml.parsers.SAXParserFactory;
    import org.apache.http.HttpEntity;
    import org.apache.http.HttpResponse;
    import org.apache.http.NameValuePair;
    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.HttpConnectionParams;
    import org.apache.http.protocol.HTTP;
    import org.xml.sax.Attributes;
    import org.xml.sax.InputSource;
    import org.xml.sax.SAXException;
    import org.xml.sax.XMLReader;
    import org.xml.sax.helpers.DefaultHandler;
    import android.app.Activity;
    import android.app.AlertDialog;
    import android.app.ProgressDialog;
    import android.content.Intent;
    import android.os.Bundle;
    import android.os.Looper;
    import android.view.View;
    import android.widget.Button;
    import android.widget.EditText;
    import de.demo.main.R;
     
    public class LoginActivity extends Activity
    {
    	// Lien vers votre page php sur votre serveur
    		private static final String	UPDATE_URL	= "http://paddesite.pa.ohost.de/login.php";
     
    		public ProgressDialog				progressDialog;
     
    		private EditText						UserEditText;
     
    		private EditText						PassEditText;
     
    		public void onCreate(Bundle savedInstanceState)
    		{
     
    			super.onCreate(savedInstanceState);
    			setContentView(R.layout.main);
     
    			// initialisation d'une progress bar
    			progressDialog = new ProgressDialog(this);
    			progressDialog.setMessage("Please wait...");
    			progressDialog.setIndeterminate(true);
    			progressDialog.setCancelable(false);
    			// Récupération des éléments de la vue définis dans le xml
    			UserEditText = (EditText) findViewById(R.id.username);
     
    			PassEditText = (EditText) findViewById(R.id.password);
    			Button button = (Button) findViewById(R.id.okbutton);
     
    			// Définition du listener du bouton
    			button.setOnClickListener(new View.OnClickListener()
    			{
     
    				public void onClick(View v)
    				{
     
    					int usersize = UserEditText.getText().length();
     
    					int passsize = PassEditText.getText().length();
    					// si les deux champs sont remplis
    					if (usersize > 0 && passsize > 0)
    					{
     
    						progressDialog.show();
     
    						String user = UserEditText.getText().toString();
     
    						String pass = PassEditText.getText().toString();
    						// On appelle la fonction doLogin qui va communiquer avec le PHP
    						doLogin(user, pass);
     
    					}
    					else
    						createDialog("Error", "Please enter Username and Password");
     
    				}
     
    			});
     
    			button = (Button) findViewById(R.id.cancelbutton);
    			// Création du listener du bouton cancel (on sort de l'appli)
    			button.setOnClickListener(new View.OnClickListener()
    			{
     
    				public void onClick(View v)
    				{
    					quit(false, null);
    				}
     
    			});
     
    		}
     
    		private void quit(boolean success, Intent i)
    		{
    			// On envoie un résultat qui va permettre de quitter l'appli
    			setResult((success) ? Activity.RESULT_OK : Activity.RESULT_CANCELED, i);
    			finish();
     
    		}
     
    		private void createDialog(String title, String text)
    		{
    			// Création d'une popup affichant un message
    			AlertDialog ad = new AlertDialog.Builder(this)
    					.setPositiveButton("Ok", null).setTitle(title).setMessage(text)
    					.create();
    			ad.show();
     
    		}
     
    		private void doLogin(final String login, final String pass)
    		{
     
    			final String pw = md5(pass);
    			// Création d'un thread
    			Thread t = new Thread()
    			{
     
    				public void run()
    				{
     
    					Looper.prepare();
    					// On se connecte au serveur afin de communiquer avec le PHP
    					DefaultHttpClient client = new DefaultHttpClient();
    					HttpConnectionParams.setConnectionTimeout(client.getParams(), 15000);
     
    					HttpResponse response;
    					HttpEntity entity;
     
    					try
    					{
    						// On établit un lien avec le script PHP
    						HttpPost post = new HttpPost(UPDATE_URL);
     
    						List<NameValuePair> nvps = new ArrayList<NameValuePair>();
     
    						nvps.add(new BasicNameValuePair("username", login));
     
    						nvps.add(new BasicNameValuePair("password", pw));
     
    						post.setHeader("Content-Type", "application/x-www-form-urlencoded");
    						// On passe les paramètres login et password qui vont être récupérés
    						// par le script PHP en post
    						post.setEntity(new UrlEncodedFormEntity(nvps, HTTP.UTF_8));
    						// On récupère le résultat du script
    						response = client.execute(post);
     
    						entity = response.getEntity();
     
    						InputStream is = entity.getContent();
    						// On appelle une fonction définie plus bas pour traduire la réponse
    						read(is);
    						is.close();
     
    						if (entity != null)
    							entity.consumeContent();
     
    					}
    					catch (Exception e)
    					{
     
    						progressDialog.dismiss();
    						createDialog("Error", "Couldn't establish a connection");
     
    					}
     
    					Looper.loop();
     
    				}
     
    			};
     
    			t.start();
     
    		}
     
    		private void read(InputStream in)
    		{
    			// On traduit le résultat d'un flux
    			SAXParserFactory spf = SAXParserFactory.newInstance();
     
    			SAXParser sp;
     
    			try
    			{
     
    				sp = spf.newSAXParser();
     
    				XMLReader xr = sp.getXMLReader();
    				// Cette classe est définie plus bas
    				LoginContentHandler uch = new LoginContentHandler();
     
    				xr.setContentHandler(uch);
     
    				xr.parse(new InputSource(in));
     
    			}
    			catch (ParserConfigurationException e)
    			{
     
    			}
    			catch (SAXException e)
    			{
     
    			}
    			catch (IOException e)
    			{
    			}
     
    		}
     
    		private String md5(String in)
    		{
     
    			MessageDigest digest;
     
    			try
    			{
     
    				digest = MessageDigest.getInstance("MD5");
     
    				digest.reset();
     
    				digest.update(in.getBytes());
     
    				byte[] a = digest.digest();
     
    				int len = a.length;
     
    				StringBuilder sb = new StringBuilder(len << 1);
     
    				for (int i = 0; i < len; i++)
    				{
     
    					sb.append(Character.forDigit((a[i] & 0xf0) >> 4, 16));
     
    					sb.append(Character.forDigit(a[i] & 0x0f, 16));
     
    				}
     
    				return sb.toString();
     
    			}
    			catch (NoSuchAlgorithmException e)
    			{
    				e.printStackTrace();
    			}
     
    			return null;
     
    		}
     
    		private class LoginContentHandler extends DefaultHandler
    		{
    			// Classe traitant le message de retour du script PHP
    			private boolean	in_loginTag		= false;
    			private int			userID;
    			private boolean	error_occured	= false;
     
    			public void startElement(String n, String l, String q, Attributes a)
     
    			throws SAXException
     
    			{
     
    				if (l == "login")
    					in_loginTag = true;
    				if (l == "error")
    				{
     
    					progressDialog.dismiss();
     
    					switch (Integer.parseInt(a.getValue("value")))
    					{
    						case 1:
    							createDialog("Error", "Couldn't connect to Database");
    							break;
    						case 2:
    							createDialog("Error", "Error in Database: Table missing");
    							break;
    						case 3:
    							createDialog("Error", "Invalid username and/or password");
    							break;
    					}
    					error_occured = true;
     
    				}
     
    				if (l == "user" && in_loginTag && a.getValue("id") != "")
    					// Dans le cas où tout se passe bien on récupère l'ID de l'utilisateur
    					userID = Integer.parseInt(a.getValue("id"));
     
    			}
     
    			public void endElement(String n, String l, String q) throws SAXException
    			{
    				// on renvoie l'id si tout est ok
    				if (l == "login")
    				{
    					in_loginTag = false;
     
    					if (!error_occured)
    					{
    						progressDialog.dismiss();
    						Intent i = new Intent();
    						i.putExtra("userid", userID);
    						quit(true, i);
    					}
    				}
    			}
     
    			public void characters(char ch[], int start, int length)
    			{
    			}
     
    			public void startDocument() throws SAXException
    			{
    			}
     
    			public void endDocument() throws SAXException
    			{
    			}
     
    		}
    }
    Manifest:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
     <?xml version="1.0" encoding="utf-8"?>
     
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
     
          package="de.demo.main"
     
          android:versionCode="1"
     
          android:versionName="1.0.0">
        <uses-sdk android:minSdkVersion="15"/>
     
        <application android:icon="@drawable/ic_launcher" android:label="@string/app_name">
     
            <activity android:name="de.demo.main.MainActivity" android:label="Main">
     
                <intent-filter>
     
                    <action android:name="android.intent.action.MAIN" />
     
                    <category android:name="android.intent.category.LAUNCHER" />
     
                </intent-filter>
     
            </activity>
     
            <activity android:name="de.demo.login.LoginActivity" android:label="Main">
     
                <intent-filter>
     
                    <action android:name="android.intent.action.VIEW" />
     
                    <category android:name="android.intent.category.DEFAULT" />
     
                </intent-filter>
     
            </activity>        
     
        </application>
     
    <uses-permission android:name="android.permission.INTERNET"></uses-permission>    
     
    </manifest>
    main.xml:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
     <?xml version="1.0" encoding="utf-8"?>
     
    	<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
     
    	   android:orientation="vertical"
     
    	   android:layout_width="fill_parent"
     
    	   android:layout_height="fill_parent"
     
    	   android:gravity="center">
     
     
     
    	        <TextView  
     
    	            android:layout_width="fill_parent" 
     
    	            android:layout_height="wrap_content"
     
    	            android:text="Username" 
     
    	        />
     
    	        <EditText
     
    	            android:id="@+id/username"
     
    	            android:layout_width="fill_parent"
     
    	            android:layout_height="wrap_content"
     
    	       android:singleLine="true"
     
    	       android:fadingEdge="horizontal"
     
    	       android:layout_marginBottom="20dip"/>
     
    	        <TextView
     
    	       android:layout_width="fill_parent" 
     
    	       android:layout_height="wrap_content"
     
    	       android:text="Password" 
     
    	        />
     
    	        <EditText
     
    	       android:id="@+id/password"
     
    	       android:layout_width="fill_parent"
     
    	       android:layout_height="wrap_content"
     
    	       android:password="true"
     
    	       android:singleLine="true"
     
    	        android:fadingEdge="horizontal" 
     
    	        />
     
    	        <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
     
    	       android:orientation="vertical"
     
    	       android:layout_width="fill_parent"
     
    	       android:layout_height="fill_parent"
     
    	       android:gravity="bottom">
     
     
     
    	        <Button
     
    	           android:id="@+id/okbutton"
     
    	           android:layout_width="fill_parent"
     
    	           android:layout_height="wrap_content"
     
    	           android:text="Login"
     
    	       />    
     
    	        <Button
     
    	           android:id="@+id/cancelbutton"
     
    	           android:layout_width="fill_parent"
     
    	           android:layout_height="wrap_content"
     
    	           android:text="Cancel"
     
    	       />
     
    	    </LinearLayout>      
     
    	</LinearLayout>
    Merci de m'aider

    Cordialement

  10. #30
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2012
    Messages : 1
    Points : 1
    Points
    1
    Par défaut
    Je suis débutant et ce tuto m'intéresse beaucoup .
    Par contre j'ai du mal des la premier partie , qui est la création de la base de donnée avec votre script comment faire ? Merci d'avance.

  11. #31
    Rédacteur
    Avatar de David55
    Homme Profil pro
    Ingénieur informatique
    Inscrit en
    Août 2010
    Messages
    1 542
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2010
    Messages : 1 542
    Points : 2 808
    Points
    2 808
    Par défaut
    Bonjour,


    Ceci est le script qu'il suffit de copier et d’exécuter dans votre gestionnaire de base de donnée (MySQL...). Qu'utilises tu comme base de données? Sinon que ne comprend tu pas exactement?

  12. #32
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2010
    Messages
    13
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 13
    Points : 6
    Points
    6
    Par défaut
    Bonjour,

    J'ai un problème avec le tuto que vous avez fait. En effet j'ai une erreur quand je lance mon app.

    l'erreur dit:

    install_parse_failed_manifest_malformed.

    et je n'ai rien d'écrit dans le log cat.

    Voici mon manifest

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    <application android:icon="@drawable/icon" android:label="Login">
     
            <activity android:name=".XMain"">
     
                <intent-filter>
     
                    <action android:name="android.intent.action.MAIN" />
     
                    <category android:name="android.intent.category.LAUNCHER" />
     
                </intent-filter>
     
            </activity>
     
            <activity android:name="x.x.Login">
     
                <intent-filter>
     
                    <action android:name="android.intent.action.VIEW" />
     
                    <category android:name="android.intent.category.DEFAULT" />
     
                </intent-filter>
     
            </activity>        
     
        </application>

    D'avance merci pour votre aide.

  13. #33
    Modérateur
    Avatar de Hizin
    Homme Profil pro
    Développeur mobile
    Inscrit en
    Février 2010
    Messages
    2 180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur mobile

    Informations forums :
    Inscription : Février 2010
    Messages : 2 180
    Points : 5 072
    Points
    5 072
    Par défaut
    Tu as un " en trop pour l'attribut name de la première balise "activity". La coloration syntaxique devrait te le signaler automatiquement normalement :/
    C'est Android, PAS Androïd, ou Androïde didiou !
    Le premier est un OS, le second est la mauvaise orthographe du troisième, un mot français désignant un robot à forme humaine.

    Membre du comité contre la phrase "ça marche PAS" en titre et/ou explication de problème.

    N'oubliez pas de consulter les FAQ Android et les cours et tutoriels Android

  14. #34
    Futur Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2012
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2012
    Messages : 4
    Points : 5
    Points
    5
    Par défaut
    Bonjour,
    Tout d'abord merci pour ce tutoriel !

    Je suis en étude de développement informatique nous devons réaliser un projet dans lequel j'ai besoin d'une connexion entre mon application Android et une base sous Sql Server.

    J'ai fait le tutoriel et je bloque sur un point. Quand je rentre mes identifiants, l'application reste bloquer visuellement sur le progressDialog.

    J'ai essayer de passer en mode débug avec quelques points d’arrêt. La classe Login est bien exécuté jusqu'au bout... Pouvez vous m'aider.

    Je ne savais pas quelles infos vous fournir, dite moi si je peux poster des bouts de code pour aider

    Merci !

  15. #35
    Rédacteur
    Avatar de David55
    Homme Profil pro
    Ingénieur informatique
    Inscrit en
    Août 2010
    Messages
    1 542
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2010
    Messages : 1 542
    Points : 2 808
    Points
    2 808
    Par défaut
    Citation Envoyé par Blud42 Voir le message
    Bonjour,
    Tout d'abord merci pour ce tutoriel !

    Je suis en étude de développement informatique nous devons réaliser un projet dans lequel j'ai besoin d'une connexion entre mon application Android et une base sous Sql Server.

    J'ai fait le tutoriel et je bloque sur un point. Quand je rentre mes identifiants, l'application reste bloquer visuellement sur le progressDialog.

    J'ai essayer de passer en mode débug avec quelques points d’arrêt. La classe Login est bien exécuté jusqu'au bout... Pouvez vous m'aider.

    Je ne savais pas quelles infos vous fournir, dite moi si je peux poster des bouts de code pour aider

    Merci !
    Bonjour,


    Effectivement un bout de code ne serrait pas de trop
    Essaye de faire un debogage pas à pas pour voir où ca bloque.
    De plus, essaye de vérifier tes identifiants de connexion à ta base de données et l'accès à ton fichier php.

  16. #36
    Futur Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2012
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2012
    Messages : 4
    Points : 5
    Points
    5
    Par défaut
    Bonsoir,
    Merci pour ta réponse, surtout pour un topic qui commence à dater.
    Je pourrais continuer mes test lundi car j'aurais accès à la base de données.
    Je te tiendrais au courant,
    Merci de ton aide

  17. #37
    Futur Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2012
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2012
    Messages : 4
    Points : 5
    Points
    5
    Par défaut
    Bonjour,
    Après quelques tests, c'est bien ma connexion PHP à mon serveur Ms SQL qui plante...
    Une fois ce problème résolu, je vous tiendrai au courant.
    Merci

Discussions similaires

  1. exporter une base de données via script php
    Par DimitriLille dans le forum Langage
    Réponses: 3
    Dernier message: 04/06/2014, 09h31
  2. Backup base de données via script
    Par ptr83 dans le forum DB2
    Réponses: 1
    Dernier message: 26/04/2013, 10h36
  3. communication base de données via Perl
    Par debutantperl dans le forum SGBD
    Réponses: 3
    Dernier message: 27/07/2012, 09h15

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo