Aller au contenu

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.

Générer une carte de prév animée


Météo79niort
 Partager

Messages recommandés

Bonjour,

je cherche à créer de nouvelles cartes de prévisions météo avec un fond de carte sur lequel je superposerai des picto animés du genre (http://www.meteo79ni...icto/12_lge.gif)

J'ai fait pas mal de recherches sur le net. J'ai réussi en écrivant du code de feuilles de style, mais je ne me vois pas écrire du code tous les soirs, et je ne trouve pas de logiciel qui m'apporte une solution.

Merci d'avance pour votre aide.

Emmanuel

Lien à poster
Partager sur d’autres sites

Salut,

Effectivement en mettant à jour le code html tous les soirs tu vas pas t'en sortir...

Ce qu'il faut que tu fasse c'est un formulaire qui insert les données dans une base de données, et ensuite afficher les données de la base de données sur ton site.

Si j'oublies pas je te ferai rapidement quelques choses de basique pour afficher tes prévisions comme tu veux ; je te tiens au courant !

Lien à poster
Partager sur d’autres sites

Salut,

Effectivement en mettant à jour le code html tous les soirs tu vas pas t'en sortir...

Ce qu'il faut que tu fasse c'est un formulaire qui insert les données dans une base de données, et ensuite afficher les données de la base de données sur ton site.

Si j'oublies pas je te ferai rapidement quelques choses de basique pour afficher tes prévisions comme tu veux ; je te tiens au courant !

Super, merci beaucoup default_wink.png/emoticons/wink@2x.png 2x" width="20" height="20">
Lien à poster
Partager sur d’autres sites

Salut,

J'ai commencé mais je n'ai effectivement pas beaucoup de temps pour avancer rapidement default_crying.gif

Qu'est-ce que tu as fais jusqu'à maintenant ? quels sont les problèmes ?

Lien à poster
Partager sur d’autres sites

Salut,

J'ai commencé mais je n'ai effectivement pas beaucoup de temps pour avancer rapidement default_crying.gif

Qu'est-ce que tu as fais jusqu'à maintenant ? quels sont les problèmes ?

j'ai consulté le site du zero, pour me former aux formulaires. Mais j'ai du mal à m'imaginer quel type de formulaire me conviendrait.

Puis pas mal de recherche de ce type sur le web, mais on ne peut pas dire que ce que je veux faire est une pratique courante.

Lien à poster
Partager sur d’autres sites

  • 3 months later...

j'ai consulté le site du zero, pour me former aux formulaires. Mais j'ai du mal à m'imaginer quel type de formulaire me conviendrait.

Puis pas mal de recherche de ce type sur le web, mais on ne peut pas dire que ce que je veux faire est une pratique courante.

Etant toujours bloqué, je fais un "Up", au cas ou une personne aurait une solution.

Merci

Lien à poster
Partager sur d’autres sites

Hello,

Je t'ai complètement oublié... blushing.gif

Pour commencer est-ce que tu peux me dire ce que tu veux afficher sur tes cartes de prévision ?

température matin ? température après-midi ? temps matin, temps après-midi, vent ?, limite du zéro degré ? etc, etc, etc...

Lien à poster
Partager sur d’autres sites

Bonjour,

j'ai 9 villes : La rochelle, La roche sur Yon, Nantes, Poitiers, Bressuire, Angoulème, Saintes, Royan, Montendre

Je souhaite faire 1 carte matin + 1 carte après-midi en mettent le min et le max de tempéraure à côté des picto, pour 1 échéance de 4j.

Merci à toi

Lien à poster
Partager sur d’autres sites

Salut!

Ce que tu demandes n'est pas très compliqué smile.png

Tout d'abord, il te faut une base de données (du type MySQL cf tuto Site Du Zéro php)

Tu peux créer une table pour chaque échéance (soit 4*2=8 tables).

Pour la nième échéance le nom de la table serait PREVIn (ex: pour les prévisions de demain après-midi, le nom de la table serait PREVI4)

Chaque table contiendrait une colonne posX (type int), posY (type int) , temps (type int),tmin (type int), tmax (type int)

posX, posY : position du picto sur la carte

temps: numéro du picto (ex: 0 pour soleil et l'image se nommera donc 0.png)

Je te conseille d'utiliser le couple (posX,posY) en clé unique.

Ca te donne une requête dans ce genre pour créer la table PREVI1:

CREATE TABLE "PREVI1" ("posX" integer NOT NULL,"posY" interger NOT NULL,"temps" integer NOT NULL,"tmin" integer NOT NULL"tmax" integer NOT NULL);

Ensuite tu codes un formulaire html qui te demandes l'échéance puis pour chaque ville le temps, la température min et la température max.

Ca te donnes un truc du genre:

Choix de l'échéanceCe matinCet apremTemps pour la ville 1SoleilPluieTempérature min et max pour la ville 1 Temps pour la ville 2SoleilPluieTempérature min et max pour la ville 2 

Ensuite dans un fichier que l'on nommera ici traitement.php (cf attribut action de la balise form), on traitera ces données pour les insérer dans notre bdd.

Ca donnera en gros:

<?php//Connexion BDD$echeance=$_POST['ech'];//N'oublie pas de créer une fonction permettant de te donner les positions de la ville sur ta carte en fonction de l'id de la ville//Par exemple pour ville 1, posX=400 et posY=200// pour ville 2, posX=100 et posY=500function getPosX($id){switch($id){case 1:$posX=400;break;case 2:$posX=100;break;}return $posX;}function getPosY($id){switch($id){case 1:$posY=200;break;case 2:$posY=500;break;}return $posY;}//Requete a executer pour insertion prévis Ville 1$sqlVille1="INSERT INTO PREVI".$ech." VALUES ( ".getPosX(1).", ".getPosX(1).", ".$_POST['tempsVille1']." , ".$_POST['tmin1']." , ".$_POST['tmax1']." );";//Requete a executer pour insertion prévis Ville 2$sqlVille2="INSERT INTO PREVI".$ech." VALUES (".getPosX(2).", ".getPosX(2).", ".$_POST['tempsVille2']." , ".$_POST['tmin2']." , ".$_POST['tmax2']." );";//Puis on exécute ces requêtes

N'oublie pas de vider la table que tu vas actualiser.Puis, il ne te reste plus qu'à afficher les données sur ta carte.

J'ai tout codé à vif sur le forum. Le code est incomplet. Il s'agit des grosses lignes.

Bonne chance smile.png

Lien à poster
Partager sur d’autres sites

Merci. Je ne connais pas le php, je m'étais mis au html en autodidacte, mais je vais tenter de m'y mettre.

Je ne pensais que cela serait aussi compliqué. Jusque là je passais par ppt pour réaliser mes cartes.... Si seulement pouvais éviter de coder à chaque maj.

Merci

Lien à poster
Partager sur d’autres sites

Hum, pour ma part je partirai sur une solution un peu différente. Je pense que que c'est se compliquer à la réalisation et à la maintenance de réaliser 1 table par échéance.

Je te propose une solution avec 3 tables différentes : t_ville, t_prevision, t_prevision_detail.

La table t_prevision serait la table principale contenant les prévisions.

J'entends par la que chaque envoi du formulaire ajouterai 1 enregistrement dans la table comprenant les prévisions pour les villes désirées avec le détail du type de temps.

La table t_ville serait la table contenant les différentes villes pour lesquelles réaliser les prévisions.

La table t_prevision_detail serait la table contenant les détails de la prévision pour chaque ville (température, temps prévu, vent, etc.).

Voilà pour le principe. Maintenant si on transpose ce raisonnement en MCD (modèle conceptuel des données) puis MLD (modèle logique des données) on va obtenir quelque chose du genre ; tu remarquera qu'au final une nouvelle table t_correspondre est ajoutée pour le bon fonctionnement du tout.

MLD.png

Cette table t_correspondre permet de faire le lien entre la prévision du jour enregistrée dans la table t_prevision et les prévisions pour différentes villes (une prévision étant composée de plusieures villes). Ainsi on évite une redondance des données enregistrées pour chaque prévision.

Le champs cor_quand permettra quant à lui de définir si la prévision est effectuée pour le matin, l'aprè-midi ou alors la journée complète.

Ceci fait il faut maintenant créer tout ça dans la base de données. Ci-dessous la requête SQL nécessaire générée avec MySQLWorkbench :

SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0;SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0;SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='TRADITIONAL';CREATE SCHEMA IF NOT EXISTS `mydb` DEFAULT CHARACTER SET latin1 COLLATE latin1_swedish_ci ;USE `mydb` ;-- ------------------------------------------------------- Table `mydb`.`t_prevision`-- -----------------------------------------------------CREATE TABLE IF NOT EXISTS `mydb`.`t_prevision` (`id_prevision` SMALLINT NOT NULL AUTO_INCREMENT ,`pre_date` DATE NOT NULL ,`pre_limite_stratus` INT(4) UNSIGNED NULL ,`pre_indice_confiance` ENUM('Très faible', 'Faible', 'Normal', 'Elevé', 'Très élevé') NOT NULL ,`pre_date_maj` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ,`pre_autheur` VARCHAR(35) NULL ,PRIMARY KEY (`id_prevision`) )ENGINE = InnoDB;-- ------------------------------------------------------- Table `mydb`.`t_ville`-- -----------------------------------------------------CREATE TABLE IF NOT EXISTS `mydb`.`t_ville` (`id_ville` SMALLINT NOT NULL AUTO_INCREMENT ,`vil_nom` VARCHAR(85) NOT NULL ,`vil_latitude` DECIMAL(7,4) NOT NULL ,`vil_longitude` DECIMAL(7,4) NOT NULL ,PRIMARY KEY (`id_ville`) )ENGINE = InnoDB;-- ------------------------------------------------------- Table `mydb`.`t_prevision_detail`-- -----------------------------------------------------CREATE TABLE IF NOT EXISTS `mydb`.`t_prevision_detail` (`id_prevision_detail` SMALLINT NOT NULL AUTO_INCREMENT ,`predet_temperature` SMALLINT(3) NOT NULL ,`predet_temps` VARCHAR(25) NOT NULL ,`predet_force_vent` SMALLINT(3) UNSIGNED NULL ,`predet_dir_vent` ENUM('N', 'NE', 'E', 'SE', 'S', 'SO', 'O', 'NO') NULL ,`idx_ville` SMALLINT NOT NULL ,PRIMARY KEY (`id_prevision_detail`, `idx_ville`) ,INDEX `fk_t_prevision_detail_t_ville1` (`idx_ville` ASC) ,CONSTRAINT `fk_t_prevision_detail_t_ville1`FOREIGN KEY (`idx_ville` )REFERENCES `mydb`.`t_ville` (`id_ville` )ON DELETE NO ACTIONON UPDATE NO ACTION)ENGINE = InnoDB;-- ------------------------------------------------------- Table `mydb`.`t_correspondre`-- -----------------------------------------------------CREATE TABLE IF NOT EXISTS `mydb`.`t_correspondre` (`idx_prevision` SMALLINT NOT NULL ,`idx_ville` SMALLINT NOT NULL ,`cor_quand` ENUM('Matin', 'Après-midi', 'Journée') NOT NULL ,PRIMARY KEY (`idx_prevision`, `idx_ville`) ,INDEX `fk_t_prevision_has_t_ville_t_ville1` (`idx_ville` ASC) ,INDEX `fk_t_prevision_has_t_ville_t_prevision` (`idx_prevision` ASC) ,CONSTRAINT `fk_t_prevision_has_t_ville_t_prevision`FOREIGN KEY (`idx_prevision` )REFERENCES `mydb`.`t_prevision` (`id_prevision` )ON DELETE NO ACTIONON UPDATE NO ACTION,CONSTRAINT `fk_t_prevision_has_t_ville_t_ville1`FOREIGN KEY (`idx_ville` )REFERENCES `mydb`.`t_ville` (`id_ville` )ON DELETE NO ACTIONON UPDATE NO ACTION)ENGINE = InnoDB;SET SQL_MODE=@OLD_SQL_MODE;SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS;SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS;

Maintenant que la base de données est réalisée il faut créer les formulaires HTML permettant de mettre à jour les prévisions. Je pense que le plus simple est de créer 2 formulaires ; le premier étant le formulaire permettant de choisir l'échéance de la prévision et renvoyant sur le formulaire permettant de définir le temps prévu.

Le premier formulaire sera par conséquent le plus simple à réaliser puisqu'il se composera uniquement d'une liste déroulante permettant de sélectionner la date de prévision voulue.

Le second formulaire un poil plus compliqué permettra de compléter les autres champs définis dans la base de données.

Lien à poster
Partager sur d’autres sites

Salut

Il est vrai que la solution de ZHB est plus propre et plus réfléchie mais ...

Au lieu de créer une nouvelle table t_prevision_detail

, tu peux directement mettre le détail des prévisions dans la table correspondre.

Cela donne plutôt:

prevfo.jpg

Bon après, les tables sont sûrement incomplètes mais c'est à em79 d'ajouter ou de supprimer des attributs default_smile.png/emoticons/smile@2x.png 2x" width="20" height="20">

Cordialement

Lien à poster
Partager sur d’autres sites

Hum, effectivement j'aurais pu mettre tout ça dans la table t_correspondre mais c'étais pour ne pas avoir un champs t_min, t_max, temps_matin, temps_apres-midi, bref pour éviter de répéter les champs et me laisser plus de souplesse. Cependant ta solution est aussi bonne.

Il n'a pas encore appris le PHP ni le SQL, mais rien n'empêche de le faire en lui expliquant les principes, c'est plus pour rendre service et qu'il ait qqch de fonctionnel et pratique pour réaliser ses prévisions.

Pour la suite je continuerai un peu demain default_smile.png/emoticons/smile@2x.png 2x" width="20" height="20">

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...