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 :

explode - problème de Offset [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2007
    Messages : 52
    Par défaut explode - problème de Offset
    Bonjour à tous,
    j'ai un souci avec la construction d'un tableau.
    Je lis un fichier LOG d'une antenne GPS. Il y a différentes trames NMEA, raison pour laquelle je fais le test (if($NMEA == '$GPGGA')).

    Voici une entrée du fichier que je souhaite lire:
    $GPGGA,141352.940,4613.41744,N,00721.67579,E,0,10,10.3,472.4,M,48.2,M,,*64

    Le code que j'utilise (ci-dessous), fonctionne, il me construit le tableau, MAIS que jusqu'au paramètre [6]. au dela, il me met comme erreur
    Undefined Offset
    Donc mon tableau affiche que 6 colonnes, et pas au dela ... quelqu'un a-t-il une solution?
    d'avance merci.

    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
    	if(file_exists($fichier))
      {
    	$fp = fopen($fichier, 'r'); // le fichier existe, on l'ouvre
      	while (!feof($fp))            // On parcours le fichier
        {
      	  $ligne = fgets($fp);         // On se déplace d'une ligne 
      	  $liste = explode(',', $ligne, 16);     // Champs séparés par ','
     
      	  $NMEA = htmlentities($liste[0]);   // Pour convertir les caractères en équivalent html
      	  $UTC = htmlentities($liste[1]);
      	  $Latitude = htmlentities($liste[2]);
      	  $XN = htmlentities($liste[3]);
      	  $Longitude = htmlentities($liste[4]);
      	  $XE = htmlentities($liste[5]);
      	  $TypePos = htmlentities($liste[6]);
      	  //$Sat = htmlentities($liste[7]);
      	  //$PH = htmlentities($liste[8]);
      	  //$Altitude = htmlentities($liste[9]);
      	  //$ZE = htmlentities($liste[10]);
      	  //$D01 = htmlentities($liste[11]);
      	  //$D02 = htmlentities($liste[12]);
      	  //$D03 = htmlentities($liste[13]);
      	  //$D04 = htmlentities($liste[14]);
     
    //  	  if(get_magic_quotes_gpc())
    //  	  {
      	    //$NMEA = stripslashes($NMEA);
            //$UTC = stripslashes($UTC);
    		//$Latitude = stripslashes($Latitude);
    		//$XN = stripslashes($XN);
    		//$Longitude = stripslashes($Longitude);
    		//$XE = stripslashes($XE);
    		//$TypePos = stripslashes($TypePos);
    		//$Sat = stripslashes($Sat);
    		//$PH = stripslashes($PH);
    		//$Altitude = stripslashes($Altitude);
    		//$ZE = stripslashes($ZE);
    		//$D01 = stripslashes($D01);
    		//$D02 = stripslashes($D02);
    		//$D03 = stripslashes($D03);
    		//$D04 = stripslashes($D04);
     
     // 	  }
      	  if($NMEA == '$GPGGA')
      	  {
        	  echo '<tr>'; 
        	  echo '<td>' . $NMEA . '</td>';
        	  echo '<td>' . $UTC . '</td>';
        	  echo '<td>' . $Latitude . " N".'</td>';
        	  //echo '<td>' . $XN . '</td>';
        	  echo '<td>' . $Longitude . " E".'</td>';
        	  //echo '<td>' . $XE . '</td>';
        	  echo '<td>' . $TypePos . '</td>';
        	  //echo '<td>' . $Sat . '</td>';
        	  //echo '<td>' . $PH . '</td>';
        	  //echo '<td>' . $Altitude . " m".'</td>';
        	  //echo '<td>' . $ZE . '</td>';
        	  //echo '<td>' . $D01 . '</td>';
        	  //echo '<td>' . $D02 . '</td>';
        	  //echo '<td>' . $D03 . '</td>';
        	  //echo '<td>' . $D04 . '</td>';
        	  echo '</tr>';
      	  }
      	} 
      	fclose($fp);
      }
    	else{ // le fichier n'existe pas
    	  echo '<p>Fichier introuvable ! Lecture stoppée.</p>';
    	}
    	?>

  2. #2
    Membre très actif
    Profil pro
    Inscrit en
    Février 2007
    Messages
    248
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Février 2007
    Messages : 248
    Par défaut
    Je viens de faire le test suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $test = '$GPGGA,141352.940,4613.41744,N,00721.67579,E,0,10,10.3,472.4,M,48.2,M,,*64';
    $liste = explode(',', $test, 16); 
    echo '<pre>';
    var_dump($liste);
    et j'obtiens bien :
    array(15) {
    [0]=>
    string(6) "$GPGGA"
    [1]=>
    string(10) "141352.940"
    [2]=>
    string(10) "4613.41744"
    [3]=>
    string(1) "N"
    [4]=>
    string(11) "00721.67579"
    [5]=>
    string(1) "E"
    [6]=>
    string(1) "0"
    [7]=>
    string(2) "10"
    [8]=>
    string(4) "10.3"
    [9]=>
    string(5) "472.4"
    [10]=>
    string(1) "M"
    [11]=>
    string(4) "48.2"
    [12]=>
    string(1) "M"
    [13]=>
    string(0) ""
    [14]=>
    string(3) "*64"
    }

    Il faudrait peut être vérifier que l'entrée soit correcte avant son découpage avec explode

  3. #3
    Membre confirmé Avatar de hiul dragonfel
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    199
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 199
    Par défaut
    tu as fait un echo de ta ligne avant l'explode pour voir ?

    des fois que certaines soient corrompus.


    PS: je suis toujours aussi lent

  4. #4
    Membre Expert

    Profil pro
    Inscrit en
    Août 2002
    Messages
    1 060
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 1 060
    Par défaut
    Bonjour,

    Plutôt que d'utiliser "fgets()" et "explode()", utilise "fgetcsv()" qui est fait pour ça :
    http://fr.php.net/manual/fr/function.fgetcsv.php

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2007
    Messages : 52
    Par défaut
    Bonjour,
    merci pour votre aide.
    l'echo donne tous les records du fichier, donc la variable est bien initialisée.

    Au fait, je suis obligé de passer par un tableau pour pouvoir recuperer ces données et les insérer dans un DB SQL, non ?

    merci pour votre aide, suis pommé!

  6. #6
    Membre Expert

    Profil pro
    Inscrit en
    Août 2002
    Messages
    1 060
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 1 060
    Par défaut
    Si tu veux importer le contenu du fichier dans une table, va voir là :
    http://dev.mysql.com/doc/refman/5.0/fr/load-data.html

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    45
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 45
    Par défaut
    Citation Envoyé par skippy86 Voir le message
    Bonjour,
    merci pour votre aide.
    l'echo donne tous les records du fichier, donc la variable est bien initialisée.

    Au fait, je suis obligé de passer par un tableau pour pouvoir recuperer ces données et les insérer dans un DB SQL, non ?

    merci pour votre aide, suis pommé!
    Salut,

    Si ton but est de mettre le fichier en base de données tu peux sans doute le faire directement dans la requête, sans traitement PHP préalable (dépend du SGDB, pour mysql par exemple : LOAD DATA INFILE)


    Tu en es où au final ? Ca fonctionne ?


    Cordialement,


    Kohntark-

    EDIT : Grilled by Jeca

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2007
    Messages : 52
    Par défaut
    en fait, c'est compliqué.
    c'est à dire, que je souhaite:
    1) afficher la coordonnée existante dans la DB avec le nom de l'arrêt de bus
    2) afficher la coordonnée lue dans le LOG
    3) si je constate que la coordonnée qui était déjà stockée est complètement fausse, par un bouton, je répertorie le string qui a été lu depuis le fichier LOG

    donc point 1 sans souci, par contre le point 2 j'arrive pas à l'afficher dans un tableau comme il faut, et je sais pas comment faire pour le répertorier par la suite du coup.

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

Discussions similaires

  1. [PHP 4] Problème Undefined offset
    Par TWEESTY dans le forum Langage
    Réponses: 6
    Dernier message: 01/02/2011, 00h09
  2. [Fonction Explode] Problème
    Par Xenon03 dans le forum Langage
    Réponses: 5
    Dernier message: 21/09/2009, 09h29
  3. Petit Problème addition offset
    Par SniP_78 dans le forum VB.NET
    Réponses: 4
    Dernier message: 07/04/2009, 20h46
  4. [MySQL] Problème Undefined Offset liste déroulante
    Par Luisito31 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 31/10/2008, 09h26
  5. [VBA-E] Problème d'offset cellule
    Par GI_GI dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 26/01/2007, 10h47

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