Donnees d'un fichier xml dans une database sql
Résolu/Fermé
A voir également:
- Donnees d'un fichier xml dans une database sql
- Fichier rar - Guide
- Comment ouvrir un fichier epub ? - Guide
- Comment réduire la taille d'un fichier - Guide
- Ouvrir un fichier .bin - Guide
- Fichier host - Guide
2 réponses
jordane45
Messages postés
38314
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
24 novembre 2024
4 705
6 mai 2020 à 15:35
6 mai 2020 à 15:35
Bonjour,
"simple" ? ... notion totalement vague qui dépend de beaucoup de choses.
Par exemple.. pour moi.. oui ça serait simple....
Mais vu ce que tu nous décrit.. pour toi ça sera un peu plus compliqué.
Quoi qu'il en soit, il va falloir que tu apprennes un minimum de choses..
Comment connecter un script php à une bdd
Comment y faire des requêtes sql
Comment lire le contenu d'un fichier xml
Tout ça..ça se trouve super simplement sur le net...
Il n'y a plus qu'une chose à faire... t'y mettre.
PS : Ah oui, juste pour lever tous les doutes... ici on ne code pas à la demande. Par contre, si tu viens avec du code.. et que tu expliques sur quoi tu bloques.. on se fera un grand plaisir de te venir en aide.
"simple" ? ... notion totalement vague qui dépend de beaucoup de choses.
Par exemple.. pour moi.. oui ça serait simple....
Mais vu ce que tu nous décrit.. pour toi ça sera un peu plus compliqué.
Quoi qu'il en soit, il va falloir que tu apprennes un minimum de choses..
Comment connecter un script php à une bdd
Comment y faire des requêtes sql
Comment lire le contenu d'un fichier xml
Tout ça..ça se trouve super simplement sur le net...
Il n'y a plus qu'une chose à faire... t'y mettre.
PS : Ah oui, juste pour lever tous les doutes... ici on ne code pas à la demande. Par contre, si tu viens avec du code.. et que tu expliques sur quoi tu bloques.. on se fera un grand plaisir de te venir en aide.
Merci Jordane pour ces clarifications, oui il faut que je m'y mette.
En fait je sais faire executer tous les jours un script Php par mon Nas (pour par exemple recuperer le fichier xml de mon equipement).
Je sais creer une database et y acceder via Phpmyadmin.
Je sais aussi faire un fichier en php/html avec un formulaire web et faire remonter les donnees ainsi recoltes dans ma base de donnee.
Cela je l'ai fait et ca fonctionne.
Mon fichier xml est tres simple, il a environ 1000 lignes ou des donnees sons renseignees de la facon suivante: <led1>0</led1> <led2>3.5</led2>
Par contre pour remonter simplement ces donnees: Led1 0, led2 3.5 dans ma base sql, je ne comprends pas si une option existe directement dans phpmyadmin pour realiser cela (soit sans code, soit en codant directement dans la page sql de myphpadmin) ou bien si il faut obligatoirement que je passe par un scrip que je devrais faire executer chaque jour par mon nas (de la meme facon que je je l'ai fait pour recuperer le fichier xml regulierement...). Deja si vous pouviez m'orienter vers l'une ou l'autre option, cela m'aiderai grandement...
En fait je sais faire executer tous les jours un script Php par mon Nas (pour par exemple recuperer le fichier xml de mon equipement).
Je sais creer une database et y acceder via Phpmyadmin.
Je sais aussi faire un fichier en php/html avec un formulaire web et faire remonter les donnees ainsi recoltes dans ma base de donnee.
Cela je l'ai fait et ca fonctionne.
Mon fichier xml est tres simple, il a environ 1000 lignes ou des donnees sons renseignees de la facon suivante: <led1>0</led1> <led2>3.5</led2>
Par contre pour remonter simplement ces donnees: Led1 0, led2 3.5 dans ma base sql, je ne comprends pas si une option existe directement dans phpmyadmin pour realiser cela (soit sans code, soit en codant directement dans la page sql de myphpadmin) ou bien si il faut obligatoirement que je passe par un scrip que je devrais faire executer chaque jour par mon nas (de la meme facon que je je l'ai fait pour recuperer le fichier xml regulierement...). Deja si vous pouviez m'orienter vers l'une ou l'autre option, cela m'aiderai grandement...
jordane45
Messages postés
38314
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
24 novembre 2024
4 705
7 mai 2020 à 14:25
7 mai 2020 à 14:25
Il te faut un script php ( qui s'exécutera à la suite de ton premier par exemple...) qui va lire ( on dit "parser") le contenu de ton document xml et l'insérer en bdd.
Pour lire un fichier XML, il existe par exemple : SimpleXMLElement
https://www.php.net/manual/fr/simplexml.examples-basic.php
Pour lire un fichier XML, il existe par exemple : SimpleXMLElement
https://www.php.net/manual/fr/simplexml.examples-basic.php
Joderic
>
jordane45
Messages postés
38314
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
24 novembre 2024
Modifié le 11 mai 2020 à 17:03
Modifié le 11 mai 2020 à 17:03
Bonjour Jordane,
En me basant sur ce que vous m'avez envoye j'ai ecrit le script php suivant que j'ai fait execute par mon nas:
Je recois le message suivant:
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0
100 110 0 110 0 0 22703 0 --:--:-- --:--:-- --:--:-- 27500
Parse error: syntax error, unexpected 'INTO' (T_STRING) in /volume2/web/dataipx/loaddatabase.php on line 23
Parse error: syntax error, unexpected 'INTO' (T_STRING) in /volume2/web/dataipx/loaddatabase.php on line 23
Idem quand j'essaye de l'executer depuis mon explorer:
Parse error: syntax error, unexpected 'INTO' (T_STRING) in /volume2/web/dataipx/loaddatabase.php on line 23
Est ce que je m'y prends bien?
En me basant sur ce que vous m'avez envoye j'ai ecrit le script php suivant que j'ai fait execute par mon nas:
<?php $sql_serveur = "192.168.1.113:3306"; // SERVEUR SQL $sql_user = "root"; // NOM UTILISATEUR SQL $sql_passwd = "Pipxuf@123"; // MOT DE PASSE SQL $sql_bdd = "domotique"; // NOM DE LA BASE DE DONNEES $sql_table = "statusxml"; // NOM DE LA TABLE $connexion = mysqli_connect($sql_serveur, $sql_user, $sql_passwd, $sql_bdd); if(mysqli_connect_errno($dbconnect)){ echo "Failed to connect"; } else{ echo "connection successfull"; } INSERT INTO statusxml (analog1, analog2, analog3, cpt0, date) SELECT MY_XML.response.query('analog1').value('.', 'float'), MY_XML.response.query('analog2').value('.', 'float'), MY_XML.response.query('analog3').value('.', 'float'), MY_XML.response.query('cpt0').value('.', 'float'), MY_XML.response.query('date').value('.', 'float'), FROM (SELECT CAST(MY_XML AS xml) FROM OPENROWSET(BULK 'volume2:\web\dataipx\status_20200511.xml', SINGLE_BLOB) AS T(MY_XML)) AS T(MY_XML) CROSS APPLY MY_XML.nodes('response/response') AS MY_XML (response); mysqli_close($connexion); ?>
Je recois le message suivant:
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0
100 110 0 110 0 0 22703 0 --:--:-- --:--:-- --:--:-- 27500
Parse error: syntax error, unexpected 'INTO' (T_STRING) in /volume2/web/dataipx/loaddatabase.php on line 23
Parse error: syntax error, unexpected 'INTO' (T_STRING) in /volume2/web/dataipx/loaddatabase.php on line 23
Idem quand j'essaye de l'executer depuis mon explorer:
Parse error: syntax error, unexpected 'INTO' (T_STRING) in /volume2/web/dataipx/loaddatabase.php on line 23
Est ce que je m'y prends bien?
jordane45
Messages postés
38314
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
24 novembre 2024
4 705
>
Joderic
11 mai 2020 à 17:06
11 mai 2020 à 17:06
Bonjour,
pour tes prochains messages, pense à utiliser les balises de code ( là, j'ai corrigé ton message pour les mettre).
Explications disponibles ici : https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
Sinon, oui c'est un bon début.
Tu as juste oublié d’exécuter ta requête...
https://www.w3schools.com/php/func_mysqli_query.asp
pour tes prochains messages, pense à utiliser les balises de code ( là, j'ai corrigé ton message pour les mettre).
Explications disponibles ici : https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
Sinon, oui c'est un bon début.
Tu as juste oublié d’exécuter ta requête...
https://www.w3schools.com/php/func_mysqli_query.asp
$sql = "INSERT INTO statusxml (analog1, analog2, analog3, cpt0, date) SELECT MY_XML.response.query('analog1').value('.', 'float'), MY_XML.response.query('analog2').value('.', 'float'), MY_XML.response.query('analog3').value('.', 'float'), MY_XML.response.query('cpt0').value('.', 'float'), MY_XML.response.query('date').value('.', 'float'), FROM (SELECT CAST(MY_XML AS xml) FROM OPENROWSET(BULK 'volume2:\web\dataipx\status_20200511.xml', SINGLE_BLOB) AS T(MY_XML)) AS T(MY_XML) CROSS APPLY MY_XML.nodes('response/response') AS MY_XML (response); "; if (! mysqli_query($connexion,$sql) ){ echo("Error description: " . mysqli_error($connexion)); }
jordane45
Messages postés
38314
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
24 novembre 2024
4 705
>
jordane45
Messages postés
38314
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
24 novembre 2024
11 mai 2020 à 17:10
11 mai 2020 à 17:10
Par contre... pour manipuler ton XML .. je t'ai donné un lien https://www.php.net/manual/fr/simplexml.examples-basic.php
et je ne pense pas qu'il parle du OPENROWSET .... qui, il me semble, n'existe pas en mysql / php
et je ne pense pas qu'il parle du OPENROWSET .... qui, il me semble, n'existe pas en mysql / php
Joderic
>
jordane45
Messages postés
38314
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
24 novembre 2024
13 mai 2020 à 14:44
13 mai 2020 à 14:44
Bonjour et Merci Jordane,
En effet ca ne fonctionne pas. J'ai change avec du simplexml_load_file:
Sur mon il affiche bien les valeurs du fichier XML que j'ai selectionne mais il le rempli pas la base de donnee...
Pourriez vous me mettre sur une piste?
<code php><
<?php
$xml = simplexml_load_file("status_20200510.xml");
{
$analog1 = $xml->analog1;
$analog2 = $xml->analog2;
$response3 = $xml->analog3;
$response4 = $xml->cpt0;
$response5 = $xml->date;
$html .= "<p>$analog1</p>";
$html .= "<p>$analog2</p>";
$html .= "<p>$response3</p>";
$html .= "<p>$response4</p>";
$html .= "<p>$response5</p>";
}
echo $html;
$sql_serveur = "192.168.1.113:3306"; // SERVEUR SQL
$sql_user = "root"; // NOM UTILISATEUR SQL
$sql_passwd = "Pipxuf@123"; // MOT DE PASSE SQL
$sql_bdd = "domotique"; // NOM DE LA BASE DE DONNEES
$sql_table = "statusxml"; // NOM DE LA TABLE
$connexion = mysqli_connect($sql_serveur, $sql_user, $sql_passwd, $sql_bdd);
if(mysqli_connect_errno($dbconnect)){
echo "Failed to connect";
}
else{
echo "connection successfull";
}
$sql = "INSERT INTO statusxml (analog1, analog2, analog3, cpt0, date) values (\"$analog1\",\"$analog2\",\"$analog3\",\"$cpt0\",\"$date\")";
mysqli_close($connexion);
?>
>
En effet ca ne fonctionne pas. J'ai change avec du simplexml_load_file:
Sur mon il affiche bien les valeurs du fichier XML que j'ai selectionne mais il le rempli pas la base de donnee...
Pourriez vous me mettre sur une piste?
<code php><
<?php
$xml = simplexml_load_file("status_20200510.xml");
{
$analog1 = $xml->analog1;
$analog2 = $xml->analog2;
$response3 = $xml->analog3;
$response4 = $xml->cpt0;
$response5 = $xml->date;
$html .= "<p>$analog1</p>";
$html .= "<p>$analog2</p>";
$html .= "<p>$response3</p>";
$html .= "<p>$response4</p>";
$html .= "<p>$response5</p>";
}
echo $html;
$sql_serveur = "192.168.1.113:3306"; // SERVEUR SQL
$sql_user = "root"; // NOM UTILISATEUR SQL
$sql_passwd = "Pipxuf@123"; // MOT DE PASSE SQL
$sql_bdd = "domotique"; // NOM DE LA BASE DE DONNEES
$sql_table = "statusxml"; // NOM DE LA TABLE
$connexion = mysqli_connect($sql_serveur, $sql_user, $sql_passwd, $sql_bdd);
if(mysqli_connect_errno($dbconnect)){
echo "Failed to connect";
}
else{
echo "connection successfull";
}
$sql = "INSERT INTO statusxml (analog1, analog2, analog3, cpt0, date) values (\"$analog1\",\"$analog2\",\"$analog3\",\"$cpt0\",\"$date\")";
mysqli_close($connexion);
?>
>