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 :

Mettre le résultat sur une seule ligne


Sujet :

PHP & Base de données

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Perso
    Inscrit en
    Février 2021
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Jura (Franche Comté)

    Informations professionnelles :
    Activité : Perso

    Informations forums :
    Inscription : Février 2021
    Messages : 20
    Points : 6
    Points
    6
    Par défaut Mettre le résultat sur une seule ligne
    Bonjour,
    Avec le script ci-dessous j'ai le résultat suivant qui ne me convient pas.
    Exemple :
    2021-02-06 06:55:45
    57
    20
    Est-il possible de mettre les résultats sur une seule ligne ?

    Exemple de mes voeux :
    2021-02-06 06:55:45, 57
    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
    <?php
    /* *** receive data from telemesure.net service
    */
    define("MODE", "DECODED"); //use GET, POST or EXTENDED
    define("FILENAME", "lognivose/clientraw.txt"); //name of the file
    if (MODE === "GET") {
    	$id = $_GET["id"]; // transmitter ID
    	$data = $_GET["data"]; // payload
    	file_put_contents(FILENAME, "$id,$data\n", FILE_APPEND | LOCK_EX);
     
    } else if (MODE === "POST") {
    	$id = $_POST["id"]; // transmitter ID
    	$data = $_POST["data"]; // payload
    	file_put_contents(FILENAME, "$id,$data\n", FILE_APPEND | LOCK_EX);
     
    } else if (MODE === "EXTENDED") {
    	$id = $_POST["id"]; // transmitter ID
    	$data = $_POST["data"]; // payload
    	$node_ref = $_POST["node_ref"]; // id of the receiver
    	$link_quality = $_POST["link_quality"]; // level of the link quality
    	$rssi = $_POST["rssi"]; // intensity of signal
    	$lat = $_POST["lat"]; // geo latitude
    	$lng = $_POST["lng"]; // geo longitude
    	file_put_contents(FILENAME, "$id,$data\n", FILE_APPEND | LOCK_EX);
    	file_put_contents(FILENAME, ">>FROM:$node_ref LinkQuality:$link_quality Rssi:$rssi lat=$lat lng=$lng\n", FILE_APPEND | LOCK_EX);
     
    } else if (MODE === "DECODED") {
    	$receivedData = json_decode(file_get_contents('php://input'), true); //Decode received json data
    	$id = $receivedData["id"]; // transmitter ID
    	$raw_data = $receivedData["raw_data"]; // Encoded raw data
     
    	//Unstack received data to exploit it
    	$datas = $receivedData["datas"];
    	$unstackedData = [];
    	foreach ($datas as $data => $content) { // Iterate on each evenement
    		$timestamp = $content["timestamp"]; // Get timestamp of event
    		file_put_contents(FILENAME, "$timestamp\n", FILE_APPEND | LOCK_EX);
    		$values = $content["values"];
    		array_push($unstackedData, [$values]);
    		foreach ($values as $key => $value)
    			file_put_contents(FILENAME, "$value\n", FILE_APPEND | LOCK_EX);
    	}
    	file_put_contents(FILENAME, "", FILE_APPEND | LOCK_EX);
    }

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

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 412
    Points : 15 781
    Points
    15 781
    Par défaut
    il y a plusieurs mode dans votre code, vous parlez de quel résultat ?

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Perso
    Inscrit en
    Février 2021
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Jura (Franche Comté)

    Informations professionnelles :
    Activité : Perso

    Informations forums :
    Inscription : Février 2021
    Messages : 20
    Points : 6
    Points
    6
    Par défaut
    Bonjour,
    Il s'agit du mode "DECODED"
    Avec ce script, j'ai le résultat suivant:

    2021-02-13 14:00:57
    98
    3.322

    Mon voeux est de supprimer "3.322" et d'avoir sur une seule ligne le résultat suivant : 2021-02-13 14:00:57, 98

    Je précise que ce script sera pour utilisé par un appareil ultrason pour un malvoyant.
    Merci

    Serge

  4. #4
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 412
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 412
    Points : 15 781
    Points
    15 781
    Par défaut
    essayez le code suivant avec des virgules pour les 2 "file_put_contents"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    foreach ($datas as $data => $content) { // Iterate on each evenement
     
    	$timestamp = $content["timestamp"]; // Get timestamp of event
     
    	file_put_contents(FILENAME, "$timestamp, ", FILE_APPEND | LOCK_EX);
     
    	$values = $content["values"];
     
    	array_push($unstackedData, [$values]);
     
    	foreach ($values as $key => $value) {
    		file_put_contents(FILENAME, "$value, ", FILE_APPEND | LOCK_EX);
    	}
    }

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Perso
    Inscrit en
    Février 2021
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Jura (Franche Comté)

    Informations professionnelles :
    Activité : Perso

    Informations forums :
    Inscription : Février 2021
    Messages : 20
    Points : 6
    Points
    6
    Par défaut
    Ok merci

  6. #6
    Futur Membre du Club
    Homme Profil pro
    Perso
    Inscrit en
    Février 2021
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Jura (Franche Comté)

    Informations professionnelles :
    Activité : Perso

    Informations forums :
    Inscription : Février 2021
    Messages : 20
    Points : 6
    Points
    6
    Par défaut
    Je me suis mal expliqué.
    Je reçois actuellement :

    2021-02-13 14:00:57
    98
    3.322

    Je désire que mes relevés soit comme ci-dessous (sans le résultat 3.322)

    2021-02-13 14:00:57, 98
    2021-02-13 15:00:57, 99
    2021-02-13 16:00:57, 95
    2021-02-13 17:00:57, 97

    etc


    Merci
    Serge

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Perso
    Inscrit en
    Février 2021
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Jura (Franche Comté)

    Informations professionnelles :
    Activité : Perso

    Informations forums :
    Inscription : Février 2021
    Messages : 20
    Points : 6
    Points
    6
    Par défaut
    Je lance à nouveau un SOS concernant ce script.
    Ignare en la matière, je peux donner une petite contribution pour associer ce script à un appareil ultrason pour un malvoyant.
    D'avance merci.
    Serge

  8. #8
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 412
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 412
    Points : 15 781
    Points
    15 781
    Par défaut
    je n'ai pas compris d'où viennent les dates "2021-02-13 15:00" et suivantes ?
    il faut que vous nous donnez tous les détails si vous voulez un coup de main.

  9. #9
    Futur Membre du Club
    Homme Profil pro
    Perso
    Inscrit en
    Février 2021
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Jura (Franche Comté)

    Informations professionnelles :
    Activité : Perso

    Informations forums :
    Inscription : Février 2021
    Messages : 20
    Points : 6
    Points
    6
    Par défaut
    Bonjour,
    Sur la plateforme associée au capteur ultrason, je fais un routage via « JSon avec data décodée ». Le script que je donne dans les posts ci-dessus n’est pas adapté (je précise qu’il s’agit des relevés d’hier à l’Instant T°)

    Je reçois chaque 10mns

    2021-02-13 14:00:57
    98
    3.322
    2021-02-13 14:10:55
    98
    3.321
    Explication :
    2021-02-13 14:10:55 (date / heure)
    98 (centimètres)
    3.321 (voltage)


    Concernant "2021-02-13 15:00", il s’agit de mes vœux. Je désire que le script dans mes posts ci-dessus soit modifiés afin que mes relevés soient : « 2021-02-13 14:00 :57, 98 » dans cette même pagination.
    Pouvez-vous empêcher que « 3.321 » soit visible ? « 3.321 » car il s’agit du voltage qui m'est sans intérêt.

    Exemple virtuel de mes désires :
    2021-02-13 14:00 :57, 98
    2021-02-13 14:10 :57, 95
    2021-02-13 14:20 :57, 91
    2021-02-13 14:30 :57, 99
    Je suis à votre disposition pour plus d’info.
    D’avance merci.
    Serge

  10. #10
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 412
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 412
    Points : 15 781
    Points
    15 781
    Par défaut
    Citation Envoyé par Serge39150 Voir le message
    Je reçois chaque 10mns

    2021-02-13 14:00:57
    98
    3.322
    2021-02-13 14:10:55
    98
    3.321
    le code traite un tableau avec des informations "timestamp" et "values", ça ne correspond pas à ce que vous nous montrez.
    montrez nous le contenu que vous recevez au début dans $receivedData

  11. #11
    Futur Membre du Club
    Homme Profil pro
    Perso
    Inscrit en
    Février 2021
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Jura (Franche Comté)

    Informations professionnelles :
    Activité : Perso

    Informations forums :
    Inscription : Février 2021
    Messages : 20
    Points : 6
    Points
    6
    Par défaut
    Voici le script brut
    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
    <?php
    /* *** receive data from telemesure.net service
    */
    define("MODE", "DECODED"); //use GET, POST or EXTENDED
    define("FILENAME", "received_log.txt"); //name of the file
    if (MODE === "GET") {
    	$id = $_GET["id"];  // transmitter ID
        $data = $_GET["data"]; // payload
        file_put_contents(FILENAME, "$id,$data\n", FILE_APPEND | LOCK_EX);
     
    } else if (MODE === "POST") {
        $id = $_POST["id"];  // transmitter ID
        $data = $_POST["data"]; // payload
        file_put_contents(FILENAME, "$id,$data\n", FILE_APPEND | LOCK_EX);
     
    } else if (MODE === "EXTENDED") {
        $id = $_POST["id"];  // transmitter ID
        $data = $_POST["data"]; // payload
        $node_ref = $_POST["node_ref"];   // id of the receiver
        $link_quality = $_POST["link_quality"]; // level of the link quality
        $rssi = $_POST["rssi"];     // intensity of signal
        $lat = $_POST["lat"];     // geo latitude
        $lng = $_POST["lng"];     // geo longitude
        file_put_contents(FILENAME, "$id,$data\n", FILE_APPEND | LOCK_EX);
        file_put_contents(FILENAME, ">>FROM:$node_ref LinkQuality:$link_quality Rssi:$rssi lat=$lat lng=$lng\n", FILE_APPEND | LOCK_EX);
     
    } else if (MODE === "DECODED") {
        $receivedData = json_decode(file_get_contents('php://input'), true); //Decode received json data
        $id = $receivedData["id"];      // transmitter ID
        $raw_data = $receivedData["raw_data"];   // Encoded raw data 
        $node_ref = $receivedData["node_ref"];   // id of the receiver
        $link_quality = $receivedData["link_quality"]; // level of the link quality
        $rssi = $receivedData["rssi"];     // intensity of signal
        $lat = $receivedData["lat"];     // geo latitude
        $lng = $receivedData["lng"];     // geo longitude
     
    	//Unstack received data to exploit it
        $datas = $receivedData["datas"];
        $unstackedData = [];
        foreach ($datas as $data => $content) { // Iterate on each evenement
    	$timestamp = $content["timestamp"];  // Get timestamp of event
    	file_put_contents(FILENAME, "$timestamp\n", FILE_APPEND | LOCK_EX);		
    	$values = $content["values"];
    	array_push($unstackedData, [$timestamp, $values]);
    	foreach ($values as $key => $value)
    		file_put_contents(FILENAME, "$key:$value\n", FILE_APPEND | LOCK_EX);
        }
        file_put_contents(FILENAME, ">>FROM:$node_ref LinkQuality:$link_quality Rssi:$rssi lat=$lat lng=$lng\n", FILE_APPEND | LOCK_EX);

    Je reçois via ce script :
    2021-02-14 11:10:38
    nivose:91
    temperatureInterne:19
    >>FROM:M33435 LinkQuality:-126.738 Rssi:-114.000 lat=46.275340 lng=5.810486
    Serge

  12. #12
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 412
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 412
    Points : 15 781
    Points
    15 781
    Par défaut
    vous pouvez essayez ce code à la fin de votre script.
    j'ai vu dans le code d'origine un tableau "unstackedData" qui n'est pas utilisé, est ce qu'il servira plus tard ou alors sera modifié dans le code ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    	} elseif (MODE === "DECODED") {
     
    		$receivedData = json_decode(file_get_contents("php://input"), TRUE); //Decode received json data
     
    		$ligne = "";
     
    		foreach ($receivedData["datas"] as $donnees) {
    			$ligne = "$donnees[timestamp], {$donnees["values"]["nivose"]}\n";
    		}
     
    		file_put_contents(FILENAME, $ligne, FILE_APPEND | LOCK_EX);
     
    	} // FIN } elseif (MODE === "DECODED") {

  13. #13
    Futur Membre du Club
    Homme Profil pro
    Perso
    Inscrit en
    Février 2021
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Jura (Franche Comté)

    Informations professionnelles :
    Activité : Perso

    Informations forums :
    Inscription : Février 2021
    Messages : 20
    Points : 6
    Points
    6
    Par défaut
    Si j'ai bien compris ? Je fais avec se script.
    Je vous tiens au courant.
    Merci
    Serge

    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
    <?php
    /* *** receive data from telemesure.net service
    */
    define("MODE", "DECODED"); //use GET, POST or EXTENDED
    define("FILENAME", "lognivose/clientraw.txt"); //name of the file
    if (MODE === "GET") {
    	$id = $_GET["id"];  // transmitter ID
        $data = $_GET["data"]; // payload
        file_put_contents(FILENAME, "$id,$data\n", FILE_APPEND | LOCK_EX);
     
    	} elseif (MODE === "DECODED") {
     
    	$receivedData = json_decode(file_get_contents("php://input"), TRUE); //Decode received json data
     
    	$ligne = "";
     
    	foreach ($receivedData["datas"] as $donnees) {
    			$ligne = "$donnees[timestamp], {$donnees["values"]["nivose"]}\n";
    	}
     
    		file_put_contents(FILENAME, $ligne, FILE_APPEND | LOCK_EX);
     
    	} // FIN } elseif (MODE === "DECODED") {

  14. #14
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 412
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 412
    Points : 15 781
    Points
    15 781
    Par défaut
    en fait si vous utilisez seulement le mode "decoded", vous pouvez simplifier le fichier en mettant uniquement cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <?php
    define("FILENAME", "lognivose/clientraw.txt"); //name of the file
     
     
    $receivedData = json_decode(file_get_contents("php://input"), TRUE); //Decode received json data
     
    $ligne = "";
     
    foreach ($receivedData["datas"] as $donnees) {
    $ligne = "$donnees[timestamp], {$donnees["values"]["nivose"]}\n";
    }
     
    file_put_contents(FILENAME, $ligne, FILE_APPEND | LOCK_EX);

  15. #15
    Futur Membre du Club
    Homme Profil pro
    Perso
    Inscrit en
    Février 2021
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Jura (Franche Comté)

    Informations professionnelles :
    Activité : Perso

    Informations forums :
    Inscription : Février 2021
    Messages : 20
    Points : 6
    Points
    6
    Par défaut
    Je vous remercie, ça fonctionne à merveille.

    Serge

  16. #16
    Futur Membre du Club
    Homme Profil pro
    Perso
    Inscrit en
    Février 2021
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Jura (Franche Comté)

    Informations professionnelles :
    Activité : Perso

    Informations forums :
    Inscription : Février 2021
    Messages : 20
    Points : 6
    Points
    6
    Par défaut
    Bonjour,
    Le code ci-dessous fonctionnait très bien, jusqu'au jour qu'il a fallut que je change la deuxième ligne par : define("FILENAME", "testlorawan/clientraw.txt"); //name of the file

    Pouvez-vous me donner la raison de ce non-fonctionnement.
    Merci.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <?php
    define("FILENAME", "lognivose/clientraw.txt"); //name of the file
     
     
    $receivedData = json_decode(file_get_contents("php://input"), TRUE); //Decode received json data
     
    $ligne = "";
     
    foreach ($receivedData["datas"] as $donnees) {
    $ligne = "$donnees[timestamp], {$donnees["values"]["nivose"]}\n";
    }
     
    file_put_contents(FILENAME, $ligne, FILE_APPEND | LOCK_EX);

  17. #17
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 412
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 412
    Points : 15 781
    Points
    15 781
    Par défaut
    qu'est ce que vous voulez dire par "ne fonctionne pas" ?
    montrez nous le résultat que vous avez et le contenu des variables.

  18. #18
    Futur Membre du Club
    Homme Profil pro
    Perso
    Inscrit en
    Février 2021
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Jura (Franche Comté)

    Informations professionnelles :
    Activité : Perso

    Informations forums :
    Inscription : Février 2021
    Messages : 20
    Points : 6
    Points
    6
    Par défaut
    Bonjour,
    J'ai omis de changer "nivose" par un autre intitulé dans la ligne ci-dessous.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $ligne = "$donnees[timestamp], {$donnees["values"]["nivôse"]}\n";
    Merci pour votre réactivité.

    Bonne journée.

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

Discussions similaires

  1. (Batch et VBS) Petit probléme avec un script batch VBS
    Par Edoxituz dans le forum Windows
    Réponses: 11
    Dernier message: 27/02/2006, 17h21
  2. [Mail] Problème avec mon script d'envoi de mail
    Par leroivert dans le forum Langage
    Réponses: 18
    Dernier message: 02/12/2005, 00h26
  3. [Configuration] Problème avec un script de login utilisant une session
    Par HNT dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 2
    Dernier message: 27/09/2005, 19h56
  4. Problème avec un script d'ouverture de pop-up
    Par HNT dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 19/08/2005, 16h37
  5. problème avec un script de generation de nom de login
    Par black_code dans le forum Langage
    Réponses: 2
    Dernier message: 04/08/2005, 13h51

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