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

PHP & Base de données Discussion :

Problème de connexion MySQL avec script PHP [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre du Club
    Inscrit en
    Mars 2011
    Messages
    232
    Détails du profil
    Informations forums :
    Inscription : Mars 2011
    Messages : 232
    Points : 47
    Points
    47
    Par défaut Problème de connexion MySQL avec script PHP
    Bonjour,

    Je suis en train de faire un exemple qui permet de récupérer des données depuis MySQL, à travers un script PHP.

    Je travaille avec Android 2.3.3, Wamp Server et j'ai créé une base bdVille et une table tblVille et j’ai inséré des valeurs.

    J'ai créé un fichier ville.php et je l'ai placé dans C:\wamp\www

    Le contenu de ce script est le suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <?php
      mysql_connect("localhost","root","");
      mysql_select_db("bdVille");
      $sql=mysql_query("select * from tblVille where Nom_ville like '".$_REQUEST['ville']."%'");
      while($row=mysql_fetch_assoc($sql))
      $output[]=$row;
     
      mysql_close();
    ?>
    J'ai testé ce script pour être sûr que la connexion fonctionne en appelant l'adresse : http://192.168.1.3/ville.php
    Et lors du test, rien n'est affiché donc aucun problème de syntaxe au niveau du script.
    Cette IP est attribuée depuis ma connexion WIFI.

    Code de l'application Android :
    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
    package com.exemple.ville;
     
    import java.io.BufferedReader;
    import java.io.InputStream;
    import java.io.InputStreamReader;
    import java.util.ArrayList;
     
    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.json.JSONArray;
    import org.json.JSONException;
    import org.json.JSONObject;
     
    import android.app.Activity;
    import android.os.Bundle;
    import android.util.Log;
    import android.widget.LinearLayout;
    import android.widget.TextView;
     
    public class ville extends Activity {
        TextView txt;
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
     
            LinearLayout rootLayout = new LinearLayout(getApplicationContext());  
            txt = new TextView(getApplicationContext());  
            rootLayout.addView(txt);  
            setContentView(rootLayout);  
     
            // Définir le texte et appeler la fonction de connexion.  
            txt.setText("Connexion..."); 
            // Appeler la méthode pour récupérer les données JSON
            txt.setText(getServerData(strURL)); 
        }
     
        // Mettre l'adresse du script PHP
        // Attention localhost ou 127.0.0.1 ne fonctionnent pas. Mettre l'adresse IP local.
        public static final String strURL = "http://192.168.1.3/ville.php";
     
        private String getServerData(String returnString) {
            InputStream is = null;
            String result = "";
            // Envoyer la requête au script PHP.
            // Script PHP : $sql=mysql_query("select * from tblVille where Nom_ville like '".$_REQUEST['ville']."%'");
            // $_REQUEST['ville'] sera remplacé par L dans notre exemple.
            // Ce qui veut dire que la requête enverra les villes commençant par la lettre L
            ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
            nameValuePairs.add(new BasicNameValuePair("ville","L"));
     
            // Envoie de la commande http
            try{
                HttpClient httpclient = new DefaultHttpClient();
                HttpPost httppost = new HttpPost(strURL);
                httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
                HttpResponse response = httpclient.execute(httppost);
                HttpEntity entity = response.getEntity();
                is = entity.getContent();
     
            }catch(Exception e){
                Log.e("log_tag", "Error in http connection " + e.toString());
            }
     
            // Convertion de la requête en string
            try{
                BufferedReader reader = new BufferedReader(new InputStreamReader(is,"iso-8859-1"),8);
                StringBuilder sb = new StringBuilder();
                String line = null;
                while ((line = reader.readLine()) != null) {
                    sb.append(line + "\n");
                }
                is.close();
                result=sb.toString();
            }catch(Exception e){
                Log.e("log_tag", "Error converting result " + e.toString());
            }
            // Parse les données JSON
            try{
                JSONArray jArray = new JSONArray(result);
                for(int i=0;i<jArray.length();i++){
                    JSONObject json_data = jArray.getJSONObject(i);
                    // Affichage ID_ville et Nom_ville dans le LogCat
                    Log.i("log_tag","ID_ville: "+json_data.getInt("ID_ville")+
                            ", Nom_ville: "+json_data.getString("Nom_ville")
                    );
                    // Résultats de la requête
                    returnString += "kkk"; 
                }
            }catch(JSONException e){
                Log.e("log_tag", "Error parsing data " + e.toString());
            }
            return returnString; 
        }
    }
    Le fichier main.xml
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <?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"
        >
    <TextView  
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content" 
        android:text="@string/hello"
        />
    </LinearLayout>
    Mais lorsque je teste cet exemple, dans l'émulateur, il y a juste cette ligne affichéé
    http://192.168.1.3/ville.php
    Alors que normalement, en plus de cette ligne, il devrait s'afficher également les villes qui répondent aux requêtes SQL.

    Dans le console d'Eclipse ces lignes sont affichées :
    [2012-08-03 01:10:19 - ville] Starting activity com.exemple.ville.ville on device emulator-5554
    [2012-08-03 01:10:22 - ville] ActivityManager: Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=com.exemple.ville/.ville }
    [2012-08-03 01:11:42 - ville] ------------------------------
    [2012-08-03 01:11:42 - ville] Android Launch!
    [2012-08-03 01:11:42 - ville] adb is running normally.
    [2012-08-03 01:11:42 - ville] Performing com.exemple.ville.ville activity launch
    [2012-08-03 01:11:42 - ville] Automatic Target Mode: using existing emulator 'emulator-5554' running compatible AVD 'TEST'
    [2012-08-03 01:11:42 - ville] WARNING: Application does not specify an API level requirement!
    [2012-08-03 01:11:42 - ville] Device API version is 10 (Android 2.3.3)
    [2012-08-03 01:11:42 - ville] Uploading ville.apk onto device 'emulator-5554'
    [2012-08-03 01:11:43 - ville] Installing ville.apk...
    [2012-08-03 01:11:55 - ville] Success!
    [2012-08-03 01:11:55 - ville] Starting activity com.exemple.ville.ville on device emulator-5554
    Quelqu'un saurait-il m'indiquer ce qui ne va pas ?

    Merci d'avance pour votre aide.

  2. #2
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Mai 2011
    Messages : 24
    Points : 25
    Points
    25
    Par défaut
    ton script php ne renvoi rien ?

  3. #3
    Membre du Club
    Inscrit en
    Mars 2011
    Messages
    232
    Détails du profil
    Informations forums :
    Inscription : Mars 2011
    Messages : 232
    Points : 47
    Points
    47
    Par défaut
    merci pour votre réponse

    j'essaye de corriger le script php

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <?php
      mysql_connect("localhost","root","");
      mysql_select_db("bdVille");
      $sql=mysql_query("select * from tblVille where Nom_ville like '".$_REQUEST['ville']."%'");
      while($row=mysql_fetch_assoc($sql))
      $output[]=$row;
     
    print(json_encode($output));
     
     
      mysql_close();
    ?>
    mais même chose

    et lors de test de script avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    http://192.168.1.3/ville.php
    cette erreur est affiché
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Fatal error: Call to undefined function json_encode() in C:\wamp\www\ville.php on line 7
    je travail avec wamp5 version 1.6.4

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 4
    Points : 5
    Points
    5
    Par défaut
    Coucou,
    ta version de php ne connais pas json_encode.

    ta version de wamp est trop vieille... et donc ta version de php aussi,
    il faut que tu mette à jours ton wamp pour utiliser php 5.2 minium

  5. #5
    Membre du Club
    Inscrit en
    Mars 2011
    Messages
    232
    Détails du profil
    Informations forums :
    Inscription : Mars 2011
    Messages : 232
    Points : 47
    Points
    47
    Par défaut
    merci pour votre réponse j'ai résolu le problème de json_encode()

    et j'ai tester le script à travers l'URL suivante
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    http://localhost/ville.php
    et j'ai récupéré liste des villes
    mais lors de test de script à travers :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    http://192.168.1.3/ville.php
    cette @ip est attribué automatique puisque j'ai une connexion internet avec wifi ( c'est l'@ip de ma carte wifi)

    le même script j'ai la testé avec wampserver 1.6.4 par l'url suivant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    http://192.168.1.3/ville.php
    et il arrive à accéder au fichier ville.php et il m'affiche l'erreur de json_encode()qui est résolue par l’installation de la version wampserver 2.2


    comme vous saviez je dois accéder au fichier ville.php à travers @ip autre que 127.0.0.1 puisque j'ai besoin de l'utiliser dans l'application android dans cette ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public static final String strURL = "http://192.168.1.3/ville.php";

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 4
    Points : 5
    Points
    5
    Par défaut
    j'ai pas bien compris le soucis, mais par Default wamp n'accepte de connections que sur localhost/127.0.0.1

    Il faut clicker sur l'icone de wamp, puis le passer 'en ligne'.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Lazarus] Problème de connexion Mysql avec Zeos
    Par Jon Shannow dans le forum Lazarus
    Réponses: 2
    Dernier message: 22/10/2012, 12h29
  2. Réponses: 7
    Dernier message: 06/10/2011, 22h36
  3. [dreamweaver] problème de connexion Mysql avec dreamweaver
    Par goma771 dans le forum Dreamweaver
    Réponses: 4
    Dernier message: 30/01/2006, 14h14
  4. Problème de connexion à PhpMyAdmin avec mySQL 5.0.18
    Par RVI dans le forum Installation
    Réponses: 5
    Dernier message: 27/01/2006, 12h03
  5. Problème de base MySQL avec installation de script
    Par JoN28fr dans le forum Installation
    Réponses: 3
    Dernier message: 27/10/2005, 18h34

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