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

Langage PHP Discussion :

[PHP, JS] Recuperer la derniere valeur d'un tableau


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2018
    Messages
    171
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2018
    Messages : 171
    Points : 55
    Points
    55
    Par défaut [PHP, JS] Recuperer la derniere valeur d'un tableau
    Bonjour, j'ai un probleme tout bete mais je n'arrive a le resoudre pour le moment.

    J'ai un tableau qui est rempli comme cela:

    Code php : 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
    table>
            <thead>
                <tr>
                    <th>Ref.</th>
                    <th>Heure</th>
                    <th>Data</th>
                    <th>Lat</th>
                    <th>Long</th>
                    <th>Alt</th>
                    <th>Temp</th>
                    <th>SNR</th>
                    <th>Qualite_Liaison</th>
                </tr>
            </thead>
        <tbody>
        <?php
        foreach($data['data'] as $reg){
        //print_r($data);
        ?>
        <tr>
            <td><?php echo $reg['device'];?></td>
            <td><?php echo date(DATE_RFC2822, $reg['time']);?></td>
     
            <td><?php 
            $data= $reg['data'];  //frame data
            echo $data;
            ?></td>
            <td><?php
            $lat_str = substr($data, 0, 6); //6 premiers caracteres
            $lat_int = hexdec($lat_str); //conversion hexa -> decimal
            $lat_result = $lat_int/(float)(0xFFFFFF/360.0)-180; //conversion, precision
            echo $lat_result;
            ?></td>
            <td><?php
            $long_str = substr($data, 6, 6);
            $long_int = hexdec($long_str);
            $long_result = $long_int/(float)(0xFFFFFF/180.0)-90; //conversion, precision
            echo $long_result;
            ?></td>
            <td><?php
            $alt_str = substr($data, 12, 4);
            $alt_int = hexdec($alt_str);
            echo $alt_int;
            ?></td> 
            <td><?php
            $temp_str = substr($data, 16, 4);
            $temp_int = hexdec($temp_str);
            $temp_result = $temp_int/(float)(0xFFFF/200.0)-128; //conversion, precision
            echo $temp_result;
            ?></td>
     
            <td><?php echo $reg['snr'];?></td>
            <td><?php
            $qualite= $reg['linkQuality'];
            switch ($qualite) {
                case "EXCELLENT":
                    echo "Excellente";
                    break;
                case "GOOD":
                    echo "Bonne";
                    break;
                case "AVERAGE":
                    echo "Moyenne";
                    break;
                case "LIMIT" :
                    echo "Faible";
                    break;
            }
            ?>
     
            </td>
        </tr>
        <?php
         }
        ?>
        </tbody>
        </table>

    Il se rempli automatiquement a partir d'une sorte de base de donnee.

    A partir de ce tableau, je veux recuperer les trois DERNIERES valeurs d'altitude, longitude et de latitude pour les afficher sur une map google:
    Code php : 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
    <script type="text/javascript">
      var map;
      var initialize;
      var lat = '<?php echo $lat_result; ?>';
      var long = '<?php echo $long_result; ?>';
     
    initialize = function(){
      var latLng = new google.maps.LatLng(lat, long); // Correspond au coordonnées du gps
      var myOptions = {
        zoom      : 14, // Zoom par défaut
        center    : latLng, // Coordonnées de départ de la carte de type latLng 
        mapTypeId : google.maps.MapTypeId.TERRAIN, // Type de carte, différentes valeurs possible HYBRID, ROADMAP, SATELLITE, TERRAIN
        maxZoom   : 20
      };
     
      map = new google.maps.Map(document.getElementById('map'), myOptions);
     
      var marker = new google.maps.Marker({
        position : latLng,
        map      : map,
        title    : "Position voiture"
      });
     
      var contentMarker = [
          '<div id="containerTabs">',
          '<div id="tabs">',
          '<p id="voiture">Baloon</p>',
          '<p id="voiture">Alt:<?php echo $lat_result; ?></p>',
          '<p id="voiture">Long:<?php echo $long_result; ?></p>',
          '<p id="voiture">Alt:<?php echo $alt_int; ?></p>',
          '</div>',
          '</div>',
          '</div>'
      ].join('');
     
      var infoWindow = new google.maps.InfoWindow({
        content  : contentMarker,
        position : latLng
      });
     
      google.maps.event.addListener(marker, 'click', function() {
        infoWindow.open(map,marker);
      });
     
      google.maps.event.addListener(infoWindow, 'domready', function(){ // infoWindow est biensûr notre info-bulle
        jQuery("#tabs").tabs();
      });
    };
     
    initialize();
    </script>

    Mon probleme est le suivant: a chaque fois je recupere les valeurs qui sont le plus en bas de mon tableau, c'est a dire celles qui datent le plus. Moi je voudrais recuperer les valeurs qui viennent d'etre envoyees pour que mon marker s'actualise sur la carte.

    Ce sera peut etre plus parlant avec des captures d'ecran. On voit bien sur les images que les coordonnees affichees sur la carte correspondent a celles presentes tout en bas du tableau alors que je voudrais celle qui sont tout en haut.

    Nom : web1.jpg
Affichages : 1229
Taille : 279,8 Ko

    Nom : web2.jpg
Affichages : 1214
Taille : 133,8 Ko

    Merci pour votre aide!

  2. #2
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 497
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 497
    Points : 12 600
    Points
    12 600
    Par défaut
    Pour avoir les derniers éléments :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
     
    $last = end($data['data']);
     
     
    //pour vérifier
     
    var_dump($last);

  3. #3
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2018
    Messages
    171
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2018
    Messages : 171
    Points : 55
    Points
    55
    Par défaut
    Salut, merci pour ta reponse.

    Mais pour le coup ca me retourne la fin du tableau dans la variable (donc le bas du tableau en html) et moi je voudrais le haut du tableau html (donc le debut du tableau dans la variable).

    Y a t-il un moyen de recuperer des valeurs du tableau dans le html?

    Sinon existe-il une fonction du type end() mais pour le debut?

  4. #4
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 497
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 497
    Points : 12 600
    Points
    12 600
    Par défaut
    Excuse moi, mais j'avais lu les trois dernières ????

    Sinon oui, il y a current() http://php.net/manual/fr/function.current.php

  5. #5
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2018
    Messages
    171
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2018
    Messages : 171
    Points : 55
    Points
    55
    Par défaut
    Je m'etais mal exprime sur premier/dernier, mais en tout cas maintenant j'ai bien l'element que je souhaite dans mon tableau c'est a dire:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    array(11) { ["device"]=> string(6) "37BF25" ["time"]=> int(1528806157) ["data"]=> string(20) "a3a10d9477be0120d4f7" ["seqNumber"]=> int(755) ["rinfos"]=> array(11) { [0]=> array(7) { ["tap"]=> string(4) "689F" ["rssi"]=> string(7) "-134.00" ["snr"]=> string(4) "6.00" ["freq"]=> int(868133362) ["delay"]=> float(0.83700001239777) ["lat"]=> string(4) "50.0" ["lng"]=> string(4) "14.0" } [1]=> array(7) { ["tap"]=> string(4) "108D" ["rssi"]=> string(7) "-131.00" ["snr"]=> string(5) "10.57" ["freq"]=> int(868133903) ["delay"]=> float(0.84700000286102) ["lat"]=> string(4) "50.0" ["lng"]=> string(4) "14.0" } [2]=> array(7) { ["tap"]=> string(4) "77F7" ["rssi"]=> string(7) "-136.00" ["snr"]=> string(4) "7.36" ["freq"]=> int(868133334) ["delay"]=> float(1.0210000276566) ["lat"]=> string(4) "50.0" ["lng"]=> string(4) "14.0" } [3]=> array(7) { ["tap"]=> string(4) "2728" ["rssi"]=> string(7) "-130.00" ["snr"]=> string(5) "16.20" ["freq"]=> int(868147306) ["delay"]=> float(2.2520000934601) ["lat"]=> string(4) "50.0" ["lng"]=> string(4) "14.0" } [4]=> array(7) { ["tap"]=> string(4) "26E2" ["rssi"]=> string(7) "-118.00" ["snr"]=> string(5) "21.57" ["freq"]=> int(868147240) ["delay"]=> float(2.2920000553131) ["lat"]=> string(4) "50.0" ["lng"]=> string(4) "14.0" } [5]=> array(7) { ["tap"]=> string(4) "12DB" ["rssi"]=> string(6) "-77.00" ["snr"]=> string(5) "26.01" ["freq"]=> int(868193620) ["delay"]=> float(1.5470000505447) ["lat"]=> string(4) "50.0" ["lng"]=> string(4) "14.0" } [6]=> array(7) { ["tap"]=> string(4) "78E4" ["rssi"]=> string(7) "-132.00" ["snr"]=> string(5) "14.57" ["freq"]=> int(868192961) ["delay"]=> float(1.3040000200272) ["lat"]=> string(4) "50.0" ["lng"]=> string(4) "14.0" } [7]=> array(7) { ["tap"]=> string(4) "26FE" ["rssi"]=> string(7) "-134.00" ["snr"]=> string(5) "14.21" ["freq"]=> int(868192668) ["delay"]=> float(1.3869999647141) ["lat"]=> string(4) "50.0" ["lng"]=> string(4) "14.0" } [8]=> array(7) { ["tap"]=> string(4) "266F" ["rssi"]=> string(7) "-117.00" ["snr"]=> string(5) "22.91" ["freq"]=> int(868192590) ["delay"]=> float(1.7059999704361) ["lat"]=> string(4) "50.0" ["lng"]=> string(4) "14.0" } [9]=> array(7) { ["tap"]=> string(4) "26BF" ["rssi"]=> string(7) "-124.00" ["snr"]=> string(5) "12.36" ["freq"]=> int(868192624) ["delay"]=> float(1.8650000095367) ["lat"]=> string(4) "50.0" ["lng"]=> string(4) "14.0" } [10]=> array(7) { ["tap"]=> string(4) "2739" ["rssi"]=> string(7) "-135.00" ["snr"]=> string(5) "13.54" ["freq"]=> int(868146725) ["delay"]=> float(1.414999961853) ["lat"]=> string(4) "50.0" ["lng"]=> string(4) "14.0" } } ["nbFrames"]=> int(3) ["operator"]=> string(27) "SIGFOX_Czech_Rep_Simplecell" ["country"]=> string(3) "CZE" ["snr"]=> string(5) "26.01" ["linkQuality"]=> string(9) "EXCELLENT" ["groupId"]=> string(24) "59fc241a3c878914bd529b5d" }

    Y aurait-il un moyen propre de recuperer dans une variable seulement le morceau que j'ai mis en rouge ? Celui qui corresponda ["data"]

  6. #6
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 497
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 497
    Points : 12 600
    Points
    12 600
    Par défaut
    Avant la boucle, je dirais

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     
    $code = current($data['data']['data']);
     
     
    var_dump($code);

  7. #7
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2018
    Messages
    171
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2018
    Messages : 171
    Points : 55
    Points
    55
    Par défaut
    C'est ce que je pensais faire, mais ca me renvoie
    NULL


    EDIT:

    Quand je fais cela:
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $current = current($data['data']);
        var_dump($current);
        $code = current($data['data']);
        $popopo = $code['data'];
        var_dump($popopo);

    J'obtiens :
    string(20) "a3a10d9477be0120d4f7"
    Je vais essayer de bidouiller avec les chaines de caractere pour recuperer seulement la partie que je veux, mais je serais pas contre une solution plus propre

  8. #8
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
        <?php
        $popopo = '';
        foreach($data['data'] as $reg){
              if( empty($popopo) ){ $popopo = $reg['data']; } // 1ere valeur non vide
        ?>
        <tr>
    ...
    Ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
        <?php
        $code = current($data['data']);
        $popopo = $code['data'];
     
        foreach($data['data'] as $reg){
        ?>
        <tr>
    ...

  9. #9
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2018
    Messages
    171
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2018
    Messages : 171
    Points : 55
    Points
    55
    Par défaut
    Merci!

    J'ai quelques questions concernant l'API Google Maps, je peux continuer sur ce post ?

  10. #10
    Invité
    Invité(e)
    Par défaut
    Non, ouvre une nouvelle discussion.

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

Discussions similaires

  1. [EJBQL] recuperer la derniere valeur insérée
    Par dev7 dans le forum Java EE
    Réponses: 3
    Dernier message: 24/05/2007, 17h48
  2. recuperer la derniere valeur d'un compteur
    Par finch82 dans le forum C
    Réponses: 2
    Dernier message: 26/06/2006, 16h32
  3. [SQL] php et recuperation d'une valeur renvoyée par une fonction sql
    Par highman dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 21/06/2006, 15h42
  4. [PHP-JS] recuperer valeur d'une liste generé par javascript
    Par crevettes59000 dans le forum Langage
    Réponses: 2
    Dernier message: 05/03/2006, 09h11
  5. Recuperer derniere valeur modifiée dans un trigger
    Par xabs dans le forum Développement
    Réponses: 2
    Dernier message: 06/08/2004, 16h22

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