Aller au contenu
Les Forums d'Infoclimat

Ce tchat, hébergé sur une plateforme indépendante d'Infoclimat, est géré et modéré par une équipe autonome, sans lien avec l'Association.
Un compte séparé du site et du forum d'Infoclimat est nécessaire pour s'y connecter.

Qui peut donner un exemple d' insertion donné…


noursane
 Partager

Messages recommandés

Salut !

mon objective est crée un site météo pour ma ville.

je trouve quelque difficulté 

 je crée quelque exemple de code php 

 pour lire l'url de fichier xml: http://api.tameteo.com/index.php?api_lang=fr&localidad=8963&affiliate_id=wf7toya165cq&v=2&h=1

Achaque fois Aucun erreur dans le code php mais aucun insertion dans la base de données voici l'affichage:

Images intégrées 1

voici l'exemple des code  php:

exemple1:


 

<?php

try

{

$bdd = new PDO('mysql:host=localhost; dbname=pf; charset=utf8', 'root', '');

$url='http://api.tameteo.com/index.php?api_lang=fr&localidad=8963&affiliate_id=wf7toya165cq&v=2&h=1';

    $xml =simplexml_load_file($url);

foreach($xml->location as $location)

   {

     foreach($location->day as $day)

    {

          echo($day[0]['name'])."</br>";

  foreach($day->symbol as $symbol)

  {

    echo($symbol[0]['value'])."</br>";

  }

   foreach($day->tempmin as $tempmin)

  {

    echo($tempmin[0]['value'])."</br>";

  }

   foreach($day->tempmax as $tempmax)

  {

    echo($tempmax[0]['value'])."</br>";

  }

   foreach($day->wind as $wind)

  {

    echo($wind[0]['value'])."</br>";

  }

 

   foreach($day->rain as $rain)

  {

    echo($rain[0]['value'])."</br>";

  }

   foreach($day->humidity as $humidity)

  {

    echo($humidity[0]['value'])."</br>";

  }

   foreach($day->pressure as $pressure)

  {

    echo($pressure[0]['value'])."</br>";

  }

   foreach($day->snowline as $snow)

  {

    echo($snow[0]['value'])."</br>";

  }

   foreach($day->sun as $sun)

  {

    echo($sun[0]['value'])."</br>";

  }

  

   foreach($day->moon as $moon)

  {

    echo($moon[0]['value'])."</br>";

  }

   foreach($day->local_info as $info)

  {

    echo($info[0]['value'])."</br>";

  }

    $sql=$bdd->prepare('INSERT INTO jour1(nomj1,symbolej1,tempminj1,tempmaxj1,windj1,windgustsj1,rainj1,humidityj1,pressurej1,snowlinej1,sun,moonj1,

   localinfoj1,"") values("'.$day[0]['name'].'","'.$symbol[0]['value'].'","'.$tempmin[0]['value'].'",,"'.$tempmax[0]['value'].'",,"'.$wind[0]['value'].'","","'.$rain[0]['value'].'",,"'.$humidity[0]['value'].'",,"'.$pressure[0]['value'].'",,"'.$snow[0]['value'].'",,"'.$sun[0]['value'].'",,"'.$moon[0]['value'].'",,"'.$info[0]['value'].'",,"",)');

   $sql->execute();    

}

}

 

}


 

catch (Exception $e)

{

        die('Erreur : ' . $e->getMessage());

}

?>

exemple2:


 

<?php 

try

{

$bdd = new PDO('mysql:host=localhost; dbname=bd; charset=utf8', 'root', '');

$url='http://api.tameteo.com/index.php?api_lang=fr&localidad=8963&affiliate_id=wf7toya165cq&v=2&h=1';

  $xml =simplexml_load_file($url);

   $tableau=array(14);

  foreach($xml->location as $location){

 $city=$location['city']."<br />";

      $nom=$location->day['name'];

      $symb=$location->day->symbol['value'];

      $tempmin=$location->day->tempmin['value'];

      $tempmax=$location->day->tempmax['value'];

      $wind=$location->day->wind['value'];

      //$windgust=$location->day->windgusts['value'];

      $rain=$location->day->rain['value'];

      $humidite=$location->day->humidity['value'];

      $pressur=$location->day->pressure['value'];

      $snowline=$location->day->snowline['value'];

      $sun=$location->day->sun['value'];

      $moon=$location->day->moon['value'];

      $info=$location->day->local_info['value'];

 $hour=$location->day->hour['value'];

 

 

/* $city=$xml->location['city']."<br />";

      $nom=$xml->location->day['name'];

      $symb=$xml->location->day->symbol['value'];

      $tempmin=$xml->location->day->tempmin['value'];

      $tempmax=$xml->location->day->tempmax['value'];

      $wind=$xml->location->day->wind['value'];

      $windgust=$xml->location->day->wind_gusts['value'];

      $rain=$xml->location->day->rain['value'];

      $humidite=$xml->location->day->humidity['value'];

      $pressur=$xml->location->day->pressure['value'];

      $snowline=$xml->location->day->snowline['value'];

      $sun=$xml->location->day->sun['value'];

      $moon=$xml->location->day->moon['value'];

      $info=$xml->location->day->local_info['value'];

 $hour=$xml->location->day->hour['value'];*/

    $sql=$bdd->prepare('INSERT INTO jour(nom,symbole,tempmin,tempmax,wind,wind-gusts,rain,humidite,pressure,snowline,sun,moon,localinfo,hour) values(:nom, :symbol, :tempmin, :tempmax, :wind, "", :rain, :humidite, :pressure, :snowline, :sun, :moon, :info, :hour,)');

   $sql->execute(array ('nom'=>$nom,

                          'symbol' => $symb,

                          'tempmin' => $tempmin,

                          'tempmax' => $tempmax,

                          'wind' => $wind,

 //'windgusts' => $tableau[5],

 'rain' => $rain,

 'humidite' => $humidite,

 'pressure' => $pressur,

 'snowline' => $snowline,

 'sun' => $sun,

 'moon' => $moon,

 'info' => $info,

 'hour' => $hour,

      

 ));

  }

echo 'le chargement de fichier xml météo est terminé';

}

 

catch (Exception $e)

{

        die('Erreur : ' . $e->getMessage());

}

?>

exemple3:

<?php 

try

{

$bdd = new PDO('mysql:host=localhost; dbname=bd; charset=utf8', 'root', '');

$url='http://api.tameteo.com/index.php?api_lang=fr&localidad=8963&affiliate_id=wf7toya165cq&v=2&h=1';

  $xml =simplexml_load_file($url);

 //declartion des variables

  /*$maxid=0;

  $tableau=array(13);

  $a=0;

 

// selectionne tout ce qui est enfante de Balise

foreach($xml->children() as $day)    // selectionne tout ce qui est enfante de Balise

  {

   $incrementation_ID=$maxid++;

   $a=0;

            foreach($day->children() as $child)

      {

          //foreach($day->children() as $child)

                           // {   

                                // Crée un tableau pour ranger les enfants de Balise ensemble

                                $tableau[$a]=$child;

                                $a++;

                           // }

  }

 

   //implémente le tableau dans la base de données

   $rep2 = $bdd->prepare('INSERT INTO jour1(nomj1,symbolej1,tempminj1,tempmaxj1,windj1,windgustsj1,rainj1,humidityj1,pressurej1,snowlinej1,sun,moonj1,

   localinfoj1,hourj1) VALUES("", :symbol, :tempmin, :tempmax, :wind, :wind-gusts, :rain, :humidity, :pressure, :snowline, :sun, :moon, :local_info, :hour)');

   $rep2->execute(array(

                          

                          'symbol' => $tableau[0],

                          'tempmin' => $tableau[1],

                          'tempmax' => $tableau[2],

                          'wind' => $tableau[3],

                          'wind-gusts' => $tableau[4],

                          'rain' => $tableau[5],

                          'humidity' => $tableau[6],

                          'pressure' => $tableau[7],

                          'snowline' => $tableau[8],

                          'sun' => $tableau[9],

                          'moon' => $tableau[10],

                          'local_info' => $tableau[11],

                           'hour' => $tableau[12],

                     

            ));  

}

 

catch (Exception $e)

{

        die('Erreur : ' . $e->getMessage());

}

?> 

voici partie de l'exemple 4:

<?php

$url='http://api.tameteo.com/index.php?api_lang=fr&localidad=8963&affiliate_id=wf7toya165cq&v=2&h=1';

//$xml =simplexml_load_file($url);

//echo "<pre>".print_r($xml,1)."</pre>";

/*$doc_AL = new DomDocument();

$doc_AL->load('http://api.tameteo.com/index.php?api_lang=fr&localidad=8963&affiliate_id=wf7toya165cq&v=2&h=1'); //fichier en local pour les tests mais au final se sera une URL externe

 

 

$res= $doc_AL->getElementsByTagName("day");

foreach($res as $day){

         echo($day->getAttribute("name"))."<br />";

}

?>

 

 

voici la structure de la base de données:

nom base de donnees:bd

nom table1: jour1

jour1(nomj1,symbolej1,tempminj1,tempmaxj1,windj1,windgustsj1,rainj1,humidityj1,pressurej1,snowlinej1,sunj1,moonj1, localinfoj1,hourj1)

 

nom table2:jour

jour(nom,symbole,tempmin,tempmax,wind,wind-gusts,rain,humidite,pressure,snowline,sun,moon,localinfo,hour) 

Je cherche  une solution parfaite pour insérer tous les données dans fichier XML(remplir tous les tables) de l’URL : http://api.tameteo.com/index.php?api_lang=fr&localidad=8963&affiliate_id=wf7toya165cq&v=2&h=1

Nom des tables:jour,tempmin,tempmax,rain,humidité,rain,rain_gusts,sun,snowline,pressure,moon..............

vous pouvez vous donner un exemple pour lire le ficher et insérer tous  les données dans ma base de données.

Merci d'avance.

Lien à poster
Partager sur d’autres sites

Le 23/03/2017 à 22:49, noursane a dit :

vous pouvez vous donner un exemple pour lire le ficher et insérer tous  les données dans ma base de données...

 Bonjour,

 

Voici un code qui fonctionne chez moi, en reprenant ton exemple 1. Pour accéder à la base de donnée, je n'utilise pas PDO, mais mysqli, qui est une extension qui est le plus souvent installée avec php. A verifier pour toi.

<?php
$host="localhost";
$base="pf";
$login="root";
$pwd="";

$bdd=mysqli_connect($host, $login, $pwd);
mysqli_select_db($bdd,$base) ;
$url='http://api.tameteo.com/index.php?api_lang=fr&localidad=8963&affiliate_id=wf7toya165cq&v=2&h=1';
$xml =simplexml_load_file($url);
foreach($xml->location as $location)
{
    foreach($location->day as $day) {
        $name=$day['name'];
        $symbol=$day->symbol['value'];
        $tempmin=$day->tempmin['value'];
        $tempmax=$day->tempmax['value'];
        $wind=$day->wind['value'];
        $rain=$day->rain['value'];
        $humidity=$day->humidity['value'];
        $pressure=$day->pressure['value'];
        $snow=$day->snow['value'];
        $sunrise=$day->sun['in'];
        $moonrise=$day->moon['in'];
        $info=$day->local_info['local_time'];
        
        $requete='INSERT INTO jour1 (nomj1,symbolej1,tempminj1,tempmaxj1,windj1,rainj1,humidityj1,pressurej1,snowlinej1,sunj1,moonj1,localinfoj1) values("'.$name.'","'.$symbol.'","'.$tempmin.'","'.$tempmax.'","'.$wind.'","'.$rain.'","'.$humidity.'","'.$pressure.'","'.$snow.'","'.$sunrise.'","'.$moonrise.'","'.$info.'");';
        if ( ! mysqli_query($bdd, $requete)) echo 'Erreur : '.mysqli_error($bdd).'<br>'.$requete.'<br>';
        }


}
?>

En ce qui concerne le soleil ou la lune, il n'existe pas de champs "value" comme tu l'avais mis dans ton code., mais il y a d'autres champs (in, mid, out, ...etc). J'ai pris ici dans l'exemple l'heure du lever ('in').

Enfin, comme il n'y a qu'une valeur de chaque paramètre (symbol, tempmin, tempsmax...etc) pour chaque jour, il n'est pas nécessaire de faire une boucle "foreach" pour ces paramètres.

 

Cordialement

Modifié par jackT
  • J'aime 1
Lien à poster
Partager sur d’autres sites

Bonjour Noursane,

 

Je ne t'aiderai pas en programmation mais pourquoi ne pas utiliser un programme tout fait que tu peux ensuite arranger à ta façon ? !

Quelques uns sont gratuits et tournent très bien avec la majorité des serveurs classiques.

Lien à poster
Partager sur d’autres sites

Le 25/03/2017 à 08:21, jackT a dit :

 Bonjour,

 

Voici un code qui fonctionne chez moi, en reprenant ton exemple 1. Pour accéder à la base de donnée, je n'utilise pas PDO, mais mysqli, qui est une extension qui est le plus souvent installée avec php. A verifier pour toi.


<?php
$host="localhost";
$base="pf";
$login="root";
$pwd="";

$bdd=mysqli_connect($host, $login, $pwd);
mysqli_select_db($bdd,$base) ;
$url='http://api.tameteo.com/index.php?api_lang=fr&localidad=8963&affiliate_id=wf7toya165cq&v=2&h=1';
$xml =simplexml_load_file($url);
foreach($xml->location as $location)
{
    foreach($location->day as $day) {
        $name=$day['name'];
        $symbol=$day->symbol['value'];
        $tempmin=$day->tempmin['value'];
        $tempmax=$day->tempmax['value'];
        $wind=$day->wind['value'];
        $rain=$day->rain['value'];
        $humidity=$day->humidity['value'];
        $pressure=$day->pressure['value'];
        $snow=$day->snow['value'];
        $sunrise=$day->sun['in'];
        $moonrise=$day->moon['in'];
        $info=$day->local_info['local_time'];
        
        $requete='INSERT INTO jour1 (nomj1,symbolej1,tempminj1,tempmaxj1,windj1,rainj1,humidityj1,pressurej1,snowlinej1,sunj1,moonj1,localinfoj1) values("'.$name.'","'.$symbol.'","'.$tempmin.'","'.$tempmax.'","'.$wind.'","'.$rain.'","'.$humidity.'","'.$pressure.'","'.$snow.'","'.$sunrise.'","'.$moonrise.'","'.$info.'");';
        if ( ! mysqli_query($bdd, $requete)) echo 'Erreur : '.mysqli_error($bdd).'<br>'.$requete.'<br>';
        }


}
?>

En ce qui concerne le soleil ou la lune, il n'existe pas de champs "value" comme tu l'avais mis dans ton code., mais il y a d'autres champs (in, mid, out, ...etc). J'ai pris ici dans l'exemple l'heure du lever ('in').

Enfin, comme il n'y a qu'une valeur de chaque paramètre (symbol, tempmin, tempsmax...etc) pour chaque jour, il n'est pas nécessaire de faire une boucle "foreach" pour ces paramètres.

 

Cordialement

 Salut,

Merci jackT pour votre réponse .

ton code est fonctionne chez moi encore , 

mais mon besoin de voir comme ça(les tables) dans ma base de donnée selon les données dans le lien:  http://api.tameteo.com/index.php?api_lang=fr&localidad=8963&affiliate_id=wf7toya165cq&v=2&h=1

nom table: jour1

nom

symbol

tempmin

tempmax

wind

rain

humidity

pressure

snowline

Dimanche

3

12

22

29

0

72

1019

3200

 nom table: jour2

nom

symbol

tempmin

tempmax

wind

rain

humidity

pressure

snowline

Lundi

2

9

22

29

0

66

1020

2900

nom table:jour3

nom

symbol

tempmin

tempmax

wind

rain

humidity

pressure

snowline

Mardi

1

10

20

28

0

66

1025

2700

 nom table: jour4

nom

symbol

tempmin

tempmax

wind

rain

humidity

pressure

snowline

Mercredi

1

8

20

18

0

73

1026

2000

 nom table: jour5

nom

symbol

tempmin

tempmax

wind

rain

humidity

pressure

snowline

jeudi

1

9

21

17

0

69

1028

2300


nom table: hour(un table comme ça pour chaque jour)

Dimanche

1 :00

2 :00

3 :00

4 :00

5 :00

6 :00

7 :00

 

 

 

 

 

 

24 :00

temp

15

 

 

 

 

 

 

 

 

 

 

 

 

 

symbol

3

 

 

 

 

 

 

 

 

 

 

 

 

 

wind

29

 

 

 

 

 

 

 

 

 

 

 

 

 

rain

0

 

 

 

 

 

 

 

 

 

 

 

 

 

humidity

87

 

 

 

 

 

 

 

 

 

 

 

 

 

pressure

1021

 

 

 

 

 

 

 

 

 

 

 

 

 

clouds

39%

 

 

 

 

 

 

 

 

 

 

 

 

 

snowline

3500

 

 

 

 

 

 

 

 

 

 

 

 

 

windchill

15

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 Est-il trouve un possibilite d'exemple de code donner le résultat ce dessus

 Merci d'avance.

Lien à poster
Partager sur d’autres sites

Le 25/03/2017 à 08:21, jackT a dit :

 Bonjour,

 

Voici un code qui fonctionne chez moi, en reprenant ton exemple 1. Pour accéder à la base de donnée, je n'utilise pas PDO, mais mysqli, qui est une extension qui est le plus souvent installée avec php. A verifier pour toi.


<?php
$host="localhost";
$base="pf";
$login="root";
$pwd="";

$bdd=mysqli_connect($host, $login, $pwd);
mysqli_select_db($bdd,$base) ;
$url='http://api.tameteo.com/index.php?api_lang=fr&localidad=8963&affiliate_id=wf7toya165cq&v=2&h=1';
$xml =simplexml_load_file($url);
foreach($xml->location as $location)
{
    foreach($location->day as $day) {
        $name=$day['name'];
        $symbol=$day->symbol['value'];
        $tempmin=$day->tempmin['value'];
        $tempmax=$day->tempmax['value'];
        $wind=$day->wind['value'];
        $rain=$day->rain['value'];
        $humidity=$day->humidity['value'];
        $pressure=$day->pressure['value'];
        $snow=$day->snow['value'];
        $sunrise=$day->sun['in'];
        $moonrise=$day->moon['in'];
        $info=$day->local_info['local_time'];
        
        $requete='INSERT INTO jour1 (nomj1,symbolej1,tempminj1,tempmaxj1,windj1,rainj1,humidityj1,pressurej1,snowlinej1,sunj1,moonj1,localinfoj1) values("'.$name.'","'.$symbol.'","'.$tempmin.'","'.$tempmax.'","'.$wind.'","'.$rain.'","'.$humidity.'","'.$pressure.'","'.$snow.'","'.$sunrise.'","'.$moonrise.'","'.$info.'");';
        if ( ! mysqli_query($bdd, $requete)) echo 'Erreur : '.mysqli_error($bdd).'<br>'.$requete.'<br>';
        }


}
?>

En ce qui concerne le soleil ou la lune, il n'existe pas de champs "value" comme tu l'avais mis dans ton code., mais il y a d'autres champs (in, mid, out, ...etc). J'ai pris ici dans l'exemple l'heure du lever ('in').

Enfin, comme il n'y a qu'une valeur de chaque paramètre (symbol, tempmin, tempsmax...etc) pour chaque jour, il n'est pas nécessaire de faire une boucle "foreach" pour ces paramètres.

 

Cordialement

 

Salut,

avec le L'URL:http://'http://api.tameteo.com/index.php?api_lang=fr&localidad=8963&affiliate_id=wf7toya165cq&v=2&h=1'  (le mise à jour sera réalise automatiquement à chaque jour supprime un jour avant et ajoute un jour après)et le code que écrit par jackT est correcte ,

 Est-il trouve un possibilité d'exemple de code(html dans php) donner le résultat ce dessous(afficher dans un site).

nom

symbol

tempmin

tempmax

wind

rain

humidity

pressure

snowline

Dimanche

3

12

22

29

0

72

1019

3200

 

 

nom

symbol

tempmin

tempmax

wind

rain

humidity

pressure

snowline

Lundi

2

9

22

29

0

66

1020

2900

 

nom

symbol

tempmin

tempmax

wind

rain

humidity

pressure

snowline

Mardi

1

10

20

28

0

66

1025

2700

 

 

nom

symbol

tempmin

tempmax

wind

rain

humidity

pressure

snowline

Mercredi

1

8

20

18

0

73

1026

2000

 

 

nom

symbol

tempmin

tempmax

wind

rain

humidity

pressure

snowline

jeudi

1

9

21

17

0

69

1028

2300


(un table comme ça pour chaque jour)

Dimanche

1 :00

2 :00

3 :00

4 :00

5 :00

6 :00

7 :00

 

 

 

 

 

 

 

 

 

 

 

 

24 :00

temp

15

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

symbol

3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

wind

29

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

rain

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

humidity

87

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

pressure

1021

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

clouds

39%

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

snowline

3500

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

windchill

15

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


 

Qui a une solution?9_9

 Merci ,

Lien à poster
Partager sur d’autres sites

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
 Partager

  • En ligne récemment   0 membre est en ligne

    • Aucun utilisateur enregistré regarde cette page.
×
×
  • Créer...