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 :

SERVER["REQUEST_METHOD"] == "POST"


Sujet :

PHP & Base de données

  1. #1
    Membre averti
    Homme Profil pro
    Lycéen
    Inscrit en
    Octobre 2023
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 19
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Octobre 2023
    Messages : 37
    Par défaut SERVER["REQUEST_METHOD"] == "POST"
    Bonjour,
    Je me suis lancé dans un projet de station météo à partir notamment de ce site :

    https://www.tingene.com/blog/index.p...-esp32-esp8266

    Côté arduino j'ai bien avancé mais je bute sur la partie php

    PS : La multitude d'echo me servent à vérifier le bon fonctionnement lorsque je lance le php
    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
    <?php
    // Conservez cette valeur de cl� API pour �tre compatible avec le code ESP fourni dans la page du projet. Si vous modifiez cette valeur, l'esquisse ESP doit correspondre
    $api_key_value = "123";
    // A supprimer
    echo nl2br("1php post data lance \n ");
    echo "1Post api de ref $api_key_value";
    echo "/1post****sensor is $sensor";
    echo "/1post****value1 is $value1";
    echo "/1post****API recue is $api_key\n";
    echo nl2br("   \n ");
     
    //****
     
     
      include_once('esp-database.php');
     
     
    // A supprimer
    echo nl2br("php post data lance \n ");
    echo "2Post api de ref $api_key_value";
    echo "/2post****sensor is $sensor";
    echo "/2post****value1 is $value1";
    echo "/2post****API recue is $api_key\n";
    echo nl2br("   \n ");
     
    //****
     
     
     
      $api_key= $sensor = $location = $value1 = $value2 = $value3 = "";
     
    // A supprimer
    echo nl2br("php post data lance \n ");
    echo "3Post api de ref $api_key_value";
    echo "/3post****sensor is $sensor";
    echo "/3post****value1 is $value1";
    echo "/3post****API recue is $api_key\n";
    echo nl2br("   \n ");
     
    //****
     
      if ($_SERVER["REQUEST_METHOD"] == "POST") {
        echo "entrée dans le if1.";
        $api_key = test_input($_POST["api_key"]);
     
        if($api_key == $api_key_value) {
          $sensor = test_input($_POST["sensor"]);
          $location = test_input($_POST["location"]);
          $value1 = test_input($_POST["value1"]);
          $value2 = test_input($_POST["value2"]);
          $value3 = test_input($_POST["value3"]);
          echo "entrée dans le if2.";
          $result = insertReading($sensor, $location, $value1, $value2, $value3);
          echo $result;
        }
        else {
          echo "Wrong API Key provided.";
        }
      }
      else {
        echo "No data posted with HTTP POSTXXX.";
        $date = date('d-m-y h:i:s');
        echo $date;
        echo "\n";
      }
     
      function test_input($data) {
        $data = trim($data);
        $data = stripslashes($data);
        $data = htmlspecialchars($data);
        return $data;
      }

    Par contre je bute sur la ligne 42 suivante systhématiquement le if est nok avec le message echo "No data posted with HTTP POSTXXX.";
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if ($_SERVER["REQUEST_METHOD"] == "POST") {
    J'ai lu des articles sur le $_SERVER maius je ne m'en sors pas

    Auriez vous des pistes?

  2. #2
    Expert confirmé
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 569
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 569
    Par défaut
    Citation Envoyé par Delba146 Voir le message
    avec le message echo "No data posted with HTTP POSTXXX.";
    où voyez vous ce message ? dans le moniteur arduino ou dans votre navigateur ?
    si c'est dans le navigateur, c'est normal, ce fichier est seulement là pour la communication avec arduino et c'est le fichier esp-weather-station.php qui va afficher les résultats dans le navigateur.

  3. #3
    Membre averti
    Homme Profil pro
    Lycéen
    Inscrit en
    Octobre 2023
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 19
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Octobre 2023
    Messages : 37
    Par défaut
    Bonjour
    Effectivement ce message est visible dans le navigateur
    Mais comme au final je n’ai aucun enregistrement dans la bd je me sers du navigateur avec des écho pour tracer l’avancement dans le php

  4. #4
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Suisse

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

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 496
    Par défaut
    Bonjour,

    Si PHP ne rentre pas dans la condition if ($_SERVER["REQUEST_METHOD"] == "POST"), dans ce cas la première chose à vérifier c'est le contenu de la variable $_SERVER["REQUEST_METHOD"].

    Que donne un echo "Request méthode :".$_SERVER["REQUEST_METHOD"]; ?

  5. #5
    Membre averti
    Homme Profil pro
    Lycéen
    Inscrit en
    Octobre 2023
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 19
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Octobre 2023
    Messages : 37
    Par défaut
    Citation Envoyé par Toufik83 Voir le message
    Bonjour,

    Si PHP ne rentre pas dans la condition if ($_SERVER["REQUEST_METHOD"] == "POST"), dans ce cas la première chose à vérifier c'est le contenu de la variable $_SERVER["REQUEST_METHOD"].

    Que donne un echo "Request méthode :".$_SERVER["REQUEST_METHOD"]; ?
    Bonjour,

    En réponse j'ai : Request methode :GET
    J'espére que cela peut aider

    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
    <!--
     
    -->
    <?php
     
    $api_key_value = "xxx";
     
     
      include_once('esp-database.php');
     
      $api_key= $sensor = $location = $value1 = $value2 = $value3 = "";
     
      if ($_SERVER["REQUEST_METHOD"] === "POST") {
     
      $api_key = test_input($_POST["api_key"]);
     
     
      if($api_key == $api_key_value) {
          $sensor = test_input($_POST["sensor"]);
          $location = test_input($_POST["location"]);
          $value1 = test_input($_POST["value1"]);
          $value2 = test_input($_POST["value2"]);
          $value3 = test_input($_POST["value3"]);
          $result = insertReading($sensor, $location, $value1, $value2, $value3);
          echo $result;
        }
        else {
          echo "Wrong API Key provided.";
        }
      }
      else {
        echo "No data posted with HTTP POSTXXX.----";
        echo "Request methode :".$_SERVER["REQUEST_METHOD"];
         }
     
      function test_input($data) {
        $data = trim($data);
        $data = stripslashes($data);
        $data = htmlspecialchars($data);
        return $data;
      }
    Et je teste de la façon suivante :
    http://frevale.free.fr/esp-post-data...value3=1005.14
    Normalement le php est lancé à partir de mon prog arduino mais pour les tests je simule de cette façon à partir de mon navigateur.

  6. #6
    Expert confirmé
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 569
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 569
    Par défaut
    Citation Envoyé par Delba146 Voir le message
    Normalement le php est lancé à partir de mon prog arduino mais pour les tests je simule de cette façon à partir de mon navigateur.
    je vous avais déjà répondu à ça dans le 2e message de cette discussion. ce script n'est pas fait pour être appelé dans le navigateur.

    c'est aussi expliqué dans ce schéma de l'article :
    https://www.tingene.com/blog/data/me...trip=all&ssl=1
    arduino envoie une requête post. vous pouvez essayer de simuler la requête avec le navigateur mais le plus simple serait de débuguer avec le moniteur arduino comme indiqué dans la partie "6. Préparation de votre ESP32 ou ESP8266".

  7. #7
    Membre averti
    Homme Profil pro
    Lycéen
    Inscrit en
    Octobre 2023
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 19
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Octobre 2023
    Messages : 37
    Par défaut
    Citation Envoyé par mathieu Voir le message
    je vous avais déjà répondu à ça dans le 2e message de cette discussion. ce script n'est pas fait pour être appelé dans le navigateur.

    c'est aussi expliqué dans ce schéma de l'article :
    https://www.tingene.com/blog/data/me...trip=all&ssl=1
    arduino envoie une requête post. vous pouvez essayer de simuler la requête avec le navigateur mais le plus simple serait de débuguer avec le moniteur arduino comme indiqué dans la partie "6. Préparation de votre ESP32 ou ESP8266".
    J'ai fait le test avec la ligne suivante
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    String httpRequestData = "http://frevale.free.fr/esp-post-data.php&api_key=motdepasse&sensor=BME280&value1=24.25&value2=49&value3=1005.14";
    Le moniteur affiche cela :
    httpRequestData: http://frevale.free.fr/esp-post-data...value3=1005.14
    HTTP Response code: 200


    A toute fin utile le prog complet de l'ESP :

    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
    // Inclusion des librairies
    #include <DHT.h>
    #include "SdsDustSensor.h"
    #include <Adafruit_BME280.h>    
    #include <WiFi.h>
    #include <HTTPClient.h>
    
    //#include <Wire.h> /: Vérifier si nécessaire car librairie pour commander des com I2C
    
    
    // Constantes du programme
    #define brocheDeBranchementDHT            23 
    #define typeDeDHT                         DHT22
    #define adresseI2CduBME280                0x76            // Adresse I2C du BME280 (0x76, dans mon cas, ce qui est souvent la valeur par défaut)
    #define pressionAuNiveauDeLaMerEnHpa      1024.90         // https://fr.wikipedia.org/wiki/Pression_atmospherique (1013.25 hPa en moyenne, valeur "par défaut")
    #define delaiRafraichissementAffichage    10000           // Délai de rafraîchissement de l'affichage (en millisecondes)
    
    int led = 12; 
    const int rxPin = 19;
    const int txPin = 18;
    String sensorName = "BME280";
    String sensorLocation = "Ext";
    
    
    
    // Network credentials
    
    const char* ssid     = "LilounetworkBUREAU";
    const char* password = "motdepasse*";
    
    
    // Variable to store the HTTP request
    String header;
    
    //Votre nom de domaine avec chemin URL ou adresse IP avec chemin
    const char* serverName = "http://frevale.free.fr/esp-post-data.php";
    
    // Conservez cette valeur de clé API pour être compatible avec le code PHP fourni dans la page du projet.
    // Si vous modifiez la valeur apiKeyValue, le fichier PHP /esp-post-data.php doit également avoir la même clé
    String apiKeyValue = "motdepasse";
    
    // les variables suivantes sont des longueurs non signées car le temps, mesuré en
    // millisecondes, deviendra rapidement un nombre plus grand que celui qui peut être stocké dans un int.
    unsigned long lastTime = 0;
    // Timer set to 10 minutes (600000)
    unsigned long httptimerDelay = 60000; // modif le 9/10 à 60 000 au lieu de 600 000 1mn ald 10mn
    // Set timer to 30 seconds (30000)
    //unsigned long timerDelay30s = 30000;
    
    
    // Instanciation des librairies
    
    SdsDustSensor sds(Serial1);
    DHT dht(brocheDeBranchementDHT, typeDeDHT);
    
    // Instanciation de la librairie BME280
    Adafruit_BME280 bme;
    
    // ========================
    // Initialisation programme
    // ========================
    
    void setup() {
    
    // Initialisation diode;
    pinMode(led, OUTPUT); 
    
    // Initialisation du DHT22;
    dht.begin(); 
    
    // Initialisation du moniteur;
    Serial.begin(9600);
    
    // Initialisation du controleur air;
     Serial1.begin(9600, SERIAL_8N1, rxPin, txPin);
     sds.begin();
     Serial.println(sds.queryFirmwareVersion().toString());
     Serial.println(sds.setActiveReportingMode().toString());
     Serial.println(sds.setContinuousWorkingPeriod().toString());
    
     
     // Initialisation du BME280
      Serial.print("Initialisation du BME280, à l'adresse [0x");
      Serial.print(adresseI2CduBME280, HEX);
      Serial.println("]");
      
      if(!bme.begin(adresseI2CduBME280)) {
        Serial.println("--> ÉCHEC…");
        while(1);                              // Arrêt du programme, en cas d'échec de l'initialisation
      } else {
        Serial.println("--> REUSSIE !");
      }
      Serial.println();
    
    // Connection au reseau wifi et attribution IP
      WiFi.begin(ssid, password);
      Serial.println("Connecting");
      while(WiFi.status() != WL_CONNECTED) {
        delay(500);
        Serial.print(".");
      }
      Serial.println("");
    Serial.print("Connecté au réseau WiFi avec l'adresse IP : ");
      Serial.println(WiFi.localIP());
        
    // détails de la connexion: https://www.upesy.fr/blogs/tutorials/how-to-connect-wifi-acces-point-with-esp32
        Serial.println("\nConnected to the WiFi network");
        Serial.print("[+] Gateway IP : ");
        Serial.println(WiFi.gatewayIP());
        Serial.println((String)"[+] RSSI : " + WiFi.RSSI() + " dB");;
    
    }
    
    
    // ======================================
    // Boucle principale (boucle perpétuelle)
    // ======================================
    
    void loop() {
    
    digitalWrite(led, HIGH); 
    
    // **********BMP180********************
      // Affichage de la TEMPÉRATURE
        
      // ****Mesure BMP****
    float TEMPBMP = bme.readTemperature();
    float HUMBMP = bme.readHumidity();
    float PREBMP = bme.readPressure();
    
    Serial.print("**BMP280** ");
    Serial.print("{\"Hum\": ");
    Serial.print(HUMBMP);
    Serial.print(", % \"Temp\": ");
    Serial.print(TEMPBMP);
    Serial.print(", °C \ Pression\": ");
    Serial.print(PREBMP/100);
    Serial.print(" Mpa}\n");
    
    // ****Mesure DHT****  
    float HUMDHT = dht.readHumidity();
    float TEMPDHT = dht.readTemperature();
    
    Serial.print("**DHT22** ");
    //Serial.print("{\"humidity\": ");
    Serial.print("{\"Hum\": ");
    Serial.print(HUMDHT);
    Serial.print(", % \"Temp\": ");
    Serial.print(TEMPDHT);
    Serial.print("°C}\n");
    
    
    // Affichage de la TEMPÉRATURE MOY
      float TEMPMOY = (TEMPBMP + TEMPDHT)/2;
      Serial.print(F("Temp Moy = "));
      Serial.print(TEMPMOY);
      Serial.print(F(" °C  "));
      
      float ECARTTEMP= TEMPBMP - TEMPDHT;
      Serial.print(F("Ecart "));
      Serial.print(ECARTTEMP);
      Serial.println(F(" °C"));
    
    // Affichage du Tx Humidité moyen
      float HUMMOY = (HUMBMP + HUMDHT)/2;
      Serial.print(F("Hum Moy = "));
      Serial.print(HUMMOY);
      Serial.print(F(" %  "));
      float ECARTHUM = HUMBMP - HUMDHT;
      Serial.print(F("Ecart "));  
      Serial.print(ECARTHUM);
      Serial.println(F(" %"));
      
    
    // Calcul de la température ressentie
      float temperatureRessentieEnCelsius = dht.computeHeatIndex(TEMPDHT, HUMDHT, false); // Le "false" est là pour dire qu'on travaille en °C, et non en °F
      Serial.print("Température ressentie DHT= "); Serial.print(temperatureRessentieEnCelsius); Serial.println(" °C");
    
    
    //***Mesure de particules
    PmResult pm = sds.readPm();
      if (pm.isOk()) {
        Serial.print("PM2.5 = ");
        Serial.print(pm.pm25);
        Serial.print(", PM10 = ");
        Serial.println(pm.pm10);
    
      } 
      else {
        Serial.print("Could not read values from sensor, reason: ");
        Serial.println(pm.statusToString());
      }
    
    
    
    //***************************************************************
    // *****Partie WEB***********************************************
    //***************************************************************
    
    //Envoie une requête HTTP POST toutes les xx minutes
      if ((millis() - lastTime) > httptimerDelay) {
    // Vérifier l'état de la connexion Wi-Fi
        if(WiFi.status()== WL_CONNECTED){
          WiFiClient client;
          HTTPClient http;
    
    // Votre nom de domaine avec chemin URL ou adresse IP avec chemin
          //http.begin(client, serverName);// version d'origine
    
          http.begin(serverName);//version test
          Serial.println("données reseau");
          Serial.println(client);
          Serial.println(serverName);
    
    
         // Spécifiez l'en-tête du type de contenu
          http.addHeader("Content-Type", "application/x-www-form-urlencoded");
    
         
    // Pour test
    // Data to send with HTTP POST
    String httpRequestData = "http://frevale.free.fr/esp-post-data.php&api_key=motdepasse&sensor=BME280&value1=24.25&value2=49&value3=1005.14";
    
    // Send HTTP POST request
    int httpResponseCode = http.POST(httpRequestData);
    //******
          Serial.print("httpRequestData: ");
          Serial.println(httpRequestData);
          // Send HTTP POST request
          //int httpResponseCode = http.POST(httpRequestData);
    
          if (httpResponseCode>0) {
            Serial.print("HTTP Response code: ");
            Serial.println(httpResponseCode);
          }
          else {
            Serial.print("Error code: ");
            Serial.println(httpResponseCode);
          }
          // Free resources
          http.end();
        }
        else {
          Serial.println("WiFi Disconnected");
        }
        lastTime = millis();
      }
    
    delay(delaiRafraichissementAffichage/2);
    digitalWrite(led, LOW); 
    Serial.println("******************************************");
    delay(delaiRafraichissementAffichage/2);
    
    }

    Sau erreur de ma part la seule ligne je n'ai pas adapté est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    // Spécifiez l'en-tête du type de contenu
          http.addHeader("Content-Type", "application/x-www-form-urlencoded");

  8. #8
    Membre averti
    Homme Profil pro
    Lycéen
    Inscrit en
    Octobre 2023
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 19
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Octobre 2023
    Messages : 37
    Par défaut
    Citation Envoyé par mathieu Voir le message
    je vous avais déjà répondu à ça dans le 2e message de cette discussion. ce script n'est pas fait pour être appelé dans le navigateur.

    c'est aussi expliqué dans ce schéma de l'article :
    https://www.tingene.com/blog/data/me...trip=all&ssl=1
    arduino envoie une requête post. vous pouvez essayer de simuler la requête avec le navigateur mais le plus simple serait de débuguer avec le moniteur arduino comme indiqué dans la partie "6. Préparation de votre ESP32 ou ESP8266".
    Bonjour Mathieu,

    Est ce que tu as besoin de plus d'éléments.

    Merci pour ton aide

  9. #9
    Membre averti
    Homme Profil pro
    Lycéen
    Inscrit en
    Octobre 2023
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 19
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Octobre 2023
    Messages : 37
    Par défaut
    Citation Envoyé par Delba146 Voir le message
    Bonjour Mathieu,

    Est ce que tu as besoin de plus d'éléments.

    Merci pour ton aide
    J'ai peut être une piste en retour j'ai le message suivant :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <b>Fatal error</b>:  Cannot instantiate non-existent class:  mysqli in <b>/mnt/116/sdb/9/1/frevale/esp-database.php</b> on line <b>30</b><br />
    et lligne 30 correspond à :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $conn = new mysqli($servername, $username, $password, $dbname);

Discussions similaires

  1. Erreur "500 Internal Server Error" sur mon fetch POST en Java script
    Par Manuel26 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 25/04/2023, 11h30
  2. Problème de quote dans un projet web suite aux migrations de poste
    Par tamildark dans le forum Développement Web en Java
    Réponses: 2
    Dernier message: 03/01/2011, 15h16

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