Sinon je suis bloqué sur un truc peut-être que qeulqu'un ici pourra m'aider, c'est pour du php+mysql.
Voilà le code que j'ai réalisé par exemple pour récupérer les données de ma table sql mais il ne me satisfait pas:
<?php
//////////////////////////////////////////////////////
// Création du fichier xml //
//////////////////////////////////////////////////////
//tout d'abord on se connecte à la base de donnée
$database="arduino";
$connect = mysql_connect("XXX.XXX.XXX.XXX","AAAAA","BBBBB");
mysql_select_db($database, $connect);
//Ensuite on envoie une requete SQL pour sélectionner une table dont on veux les informations
$query_table = "SELECT * FROM temp2 " ;
echo $query_table;
//On fait la requête et nous recevons les informations
$result_table= mysql_query($query_table, $connect) or die(mysql_error());
//Là on transforme les informations recu sous forme de tableau
$num_table = mysql_num_rows($result_table);
if ($num_table != 0) {
//On créer un fichier texte que l'on nomme et dont on indique l'emplacement
$file= fopen("D:\\sitejoomla15\\flashxml\\chartsfx\\temp_all2.xml", "w");
// CREATING TEXT
//tout d'abord l'en-tête
$_xml ="<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\r\n";
// charts
$_xml .="<chart>\r\n";
// title
$_xml .="<title><![CDATA[<head>Temperatures
</head><body>All</body>]]></title>\r\n";
// rows definition
$_xml .="<rows min=\"-10\" max=\"50\" step=\"5\"/>\r\n";
// columns names = dates
$_xml .="<columns names=\"";
// on fait une boucle while permettant de prendre les informations de la première colonne qui va former l'axe des abscisses
$num_rows = mysql_num_rows($result_table);
for ($i=0; $i <= $num_rows; $i++) {
$row = mysql_fetch_array($result_table);
$_xml .="$row[heure],";
}
$_xml .="\">\r\n";
$_xml .="<row legend=\"Internal temp\" pieLegend=\"\" color=\"0xff2346\" gradientColor=\"0xff5603\" pieColors=\"0xff2346,0x3ae29d,0xd0ff48\" pieGradentColors=\"0xff5603, 0x01a42a, 0x75ff03\" data=\"";
// Cette fois ci on refait une boucle while permettant de prendre les informations ligne par ligne
// pour prendre la température interieure
$result_table= mysql_query($query_table, $connect) or die(mysql_error());
//$num_table = mysql_num_rows($result_table);
while ($row = mysql_fetch_array($result_table)) {
$_xml .="$row[temp_int],";
}
$_xml .="\"/>\r\n"; // fermeture balise row
$_xml .="<row legend=\"External temp\" pieLegend=\"\" color=\"0xe1e176\" gradientColor=\"0xb5b522\" pieColors=\"0x00BDFF,0xF90000,0x78E32B\" pieGradentColors=\"0x0040FF, 0x940000, 0x78AF2B\" data=\"";
// Cette fois ci on refait une boucle while permettant de prendre les informations ligne par ligne
// pour prendre la température interieure
$result_table= mysql_query($query_table, $connect) or die(mysql_error());
//$num_table = mysql_num_rows($result_table);
while ($row = mysql_fetch_array($result_table)) {
$_xml .="$row[temp_ext],";
}
$_xml .="\"/>\r\n"; // fermeture balise row
// fermeture des balises ouvertes
$_xml .="</columns>\r\n";
$_xml .="</chart>\r\n";
//Maintenant que nous avons créer le contenu du fichier XML, on écrit sur le fichier
fwrite($file, $_xml);
//puis nous le fermons ce qui a pour effet d'enregistrer les données inscrites dedans.
fclose($file);
}
//Message d'erreur si il n'y a pas d'informations dans la BDD
else {
echo "No Records found";
}
?>
ça me génère un fichier du type:
<?xml version="1.0" encoding="UTF-8" ?>
<![CDATA[Temperatures
All]]>
Ce que je voudais c'est prendre un échantillon de ma table par exemple toutes les XXX valeurs.
Donc j'ai essayé de faire : $row += 100; dans la boucle while mais cela ne fontionne pas car $row contient un "array".
Pensez-vous qu'il soit faisable de parcourir la table et d'enregistrer les valeurs mais en mettant un pas, par exemple je prélève les valeurs de 100 en 100 à la place de 1 par une?
Comment je peux faire ça?
Par ailleurs, dans mon code, je lance plusieurs fois
$result_table= mysql_query($query_table, $connect) or die(mysql_error());
car je dois faire plusieurs boucle de remplissage pour prélever chaque données et correspondre à mon fichier type .xml mais je pense que c'est pas la bonne solution.
Quelqu'un aurait des idées?