[AJAX] 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:
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 :oops: