Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 3 sur 3
  1. #1
    Invité de passage
    Homme Profil pro
    Inscrit en
    novembre 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : novembre 2011
    Messages : 5
    Points : 1
    Points
    1

    Par défaut Du JavaScript vers MySQL

    Bonjour,

    Je veux créer une base de donnée sql contenant 18 attributs pour chacun des 500 fichiers d'un répertoire présent sur le serveur
    (les fichiers sont des .gpx de mes randonnées, les attributs sont la longueur, la durée , le dénivelé etc..)


    * la page traiteGPX.php lit les noms des fichiers du répertoire et les stocke dans la variable array fichier[]. Un script javascript (AJAX) calcule - pour chaque fichier[i] - les 18 attributs qui m'intéressent.
    * la page envoimysql.php, récupère par $GET, les 18 données et les écrit dans la bdd mysql à la ligne fichier[i]

    Je cherche la façon de construire la boucle qui écrirait la BD en passant de javascript à PHP
    Est ce possible de faire les deux actions dans la même page ?

    NB : J'ai écrit les parties qui fonctionnent en copiant des bouts de code que je comprends

    ci joint le code (principe seulement) de la page traiteGPX

    Code :
    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
    <head>
     
    <script type="text/javascript">
     
    function submitform()
    { document.myform.submit(); }
     
    function lecturegpx(arg)
    {
    // calculs sur les données XML et stockage des résultats dans la variable globale resultat[]
    resultat[1]=date;
    resultat[2]=fichier;
    resultat[3]=nb;
    }
    </script>
    </head>
     
     
    <body>
     
    <?php
     
    //*** on lit le répertoire et on charge $fichier[]	
    // …..
    $fichier= array();
     
    while($element = readdir($dir)) 
    	{$fichier[] = $element;}
     
    $json= json_encode($fichier);
    $i = 9;// en attendant de savoir faire la boucle sur tous les fichiers
     
    ?>
     
     
    <script type="text/javascript">
    var listgpx= Array();
    var listgpx=<?php echo $json; ?> ;// passage de PHP à JS
    j=<?php echo $i ;?>;
    var fichier = listgpx[j];
    if (window.XMLHttpRequest)
      {// code for IE7+, Firefox, Chrome, Opera, Safari
      xmlhttp=new XMLHttpRequest();
      }
     
    xmlhttp.open("GET",fichier,false);
    xmlhttp.send();
    xmlDoc=xmlhttp.responseXML; 
     
    x= new Array();
    x=xmlDoc.getElementsByTagName("trkpt");
    //.…..
     
    var resultat=new Array();
     
    lecturegpx(fichier);
    //à ce stade je dispose, chez le client, d'une variable JS resultat[], pour le $fichier[9]
    </script>
     
    <a href="javascript:document.getElementById('entree').value=resultat[]; submitform();"> envoi </a> <br /> 
    <form name="myform" action="envoi_mysql.php" method="get">
    <input id="entree" name="entree" type="hidden">
    </form> 
     
    </body >
    </html>
    Pour la page envoimysql

    Code php :
    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
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
     
    <head><meta content="text/html; charset=utf8" http-equiv="content-type">
    <title>BDGPX</title>
    // peut être qu'un header XML aiderait ici
     
    </head>
    <body>
    <?php
    include mysqlconnect;
     if ( isset($_GET['entree']))   
      { $nom=$_GET['entree'];		   
        echo "nom : ".$nom." <br>";
    // reste à trouver comment "parser" ou évaluer cette chaine de caractères pour créer $date, $element, $nb     
       }
     
     
    $element=$fichier[9];
     
    $sql="INSERT INTO listeGPX  VALUES ( '$date', '$element','$nb')";
    				mysql_query($sql)or die(mysql_error()); 
     
    ?>
     
     
    </body>

    vu la qualité de mon code, je m'attends à des railleries, donc je ne peux être que positivement surpris

  2. #2
    Rédacteur/Modérateur
    Avatar de jreaux62
    Homme Profil pro Jérôme Réaux
    Webdesigner
    Inscrit en
    août 2008
    Messages
    5 374
    Détails du profil
    Informations personnelles :
    Nom : Homme Jérôme Réaux
    Âge : 47
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Webdesigner
    Secteur : Arts - Culture

    Informations forums :
    Inscription : août 2008
    Messages : 5 374
    Points : 10 320
    Points
    10 320

    Par défaut

    Bonjour,
    pourquoi passer par JavaScript, alors que tout peut être fait directement en PHP ?
    "Si tu suis le chemin qui s'appelle « plus tard », tu arriveras à la place qui s'appelle « jamais »."
    François Camille Prévot (1910-1996), instituteur puis Directeur d'école et... mon grand-père.
    "Ce qui se conçoit bien s'énonce clairement. Et les mots pour le dire arrivent aisément."
    Nicolas Boileau-Despréaux (1636-1711).
    Mes tutos DVP
    Gestion-Affichage de Nouvelles
    Affichage en tableau HTML
    Fonctions de redimensionnement d'images

  3. #3
    Invité de passage
    Homme Profil pro
    Inscrit en
    novembre 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : novembre 2011
    Messages : 5
    Points : 1
    Points
    1

    Par défaut

    Bonsoir,

    c'est une bonne question !! Je n'avais pas envisagé cette solution .
    J'avais passé beaucoup de temps à créer le JavaSript qui exploitait le XML d'un fichier .gpx.
    Il peut y avoir jusqu'à 5 000 points dans un enregistrement .gpx et il faut récupérer 4 valeurs pour chaque point (date-heure,longitude, latitude, altitude).
    Il me reste à trouver comment faire l'équivalent de ce traitement en PHP.

    Merci quand même pour cette voie.

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •