Modex Web Javascript / Google Maps

Slides:



Advertisements
Présentations similaires
Lundi 15 Juin 2009 Les principales techniques JavaScript.
Advertisements

HTML Abda Anne Plan Présentation Structure Texte Listes Images Liens Tableaux Formulaires.
Présentation du Stage en Entreprise
Conception de Site Webs dynamiques Cours 6
Conception de Site Webs Interactifs Cours 3
Création de pages Web dynamiques et sympathiques.
Copyright France Télécom, tous droits réservés Paris Web Ateliers Les bibliothèques JS jQuery Orange Labs Julien Wajsberg, Recherche & Développement.
P1 Octobre 2006Stéphane ROUILLY Javascript : Ajax & Mashups Mastère MNT 2006
Personal Home Page / Hypertext Processor (PHP)
HTML Les types de balises
PHP mySQL Extension php_mysql. Connexion à une base de données Établir une connexion mysql_connect(string server, string username, string password) –permet.
Formulaire HTML Introduction. Définition de formulaire.
Introduction aux Web Services Partie 1. Technologies HTML-XML
Modex Web RSS / Podcast Dominique Rossin. Quest-ce ? Sabonner à des informations sans avoir recours aux mails Pas de spam Gestion du Temps de validité
Gestion de la communication par établissement sur le site ville
Soutenance de stage · Par : Guillaume Prévost · Entreprise : Cynetic
Cours n°3 Les formulaires
La balise <FORM>:
Common Gateway Interface
Cours 6 : Have fun Dominique Rossin. Ou suis-je ? Idée : On affiche un div On crée une carte centrée sur une latitude et une longitude. On définit un.
JQuery.
Web et Flux RSS Sébastien Bayle. 30/01/09 Comment faire un site web aujourdhui ? – Construire son propre site – Utiliser des outils OpenSource – Utiliser.
L’utilisation des bases de données
Le langage PHP 5.
Présentation de la séquence de cours sur les interactions HTML-javascript Laure Walser, 11 juin 2010.
DOMINIQUE ROSSIN Modex Web RSS / Podcast. Quest-ce ? Sabonner à des informations sans avoir recours aux mails Pas de spam Gestion du Temps de validité
Les instructions PHP pour l'accès à une base de données MySql
420-B63 Programmation Web Avancée Auteur : Frédéric Thériault 1.
Méthode de suppression des cadres entourant les animations flash et activation automatique de leur focus lors du chargement des pages dans Internet Explorer.
1. 2 PLAN DE LA PRÉSENTATION - SECTION 1 : Code HTML - SECTION 2.1. : CSS (Méthode 1) - SECTION 2.2. : CSS (Méthode 2) - SECTION 3 : JavaScript - SECTION.
1 PHP 1.Langage PHP 1.1. Types de base, variables et constantes 1.2. Opérateurs et expressions 1.3. Instructions 1.4. Fonctions 2.Accès aux bases de données:
MySQL Création des sites dynamiques
PHP Géant Aurélien. PHP (Hypertext Preprocessor) Langage de scripts libre Permet produire des pages Web dynamiques dispose d'un très grand nombre d'API(Application.
AJAX.
Modex Web Dominique Rossin
Feuilles de styles CSS Syntaxe d'application d'un style à une balise HTML : Les différents types de style : Pourquoi utiliser un style ? Possibilité étendue.
CPI/BTS 2 Programmation Web PHP et les Bases de données Prog Web CPI/BTS2 – M. Dravet – 11/03/2004 Dernière modification: 11/03/2004.
Javascript 1° PARTIE : LES BASES
Jquery.
PHP & My SQL.
Le langage XHTML 420-S4W-GG Programmation Web Client
Créer un site internet facilement Jimdo – Pages to the People.
1 JavaScript V0 : Nauer. 2 JavaScript Quid ? Langage de programmation lié à HTML. Code JavaScript intégré aux pages HTML. Code interprété par le navigateur.
Présenté par COMTE Jeremy et DE LAZZARI Thomas Sommaire b Présentation générale b Include b Notion de variables b MySQL.
Javascript 2° PARTIE : EVENEMENTS ET OBJETS
PROGRAMMATION WEB FRONT-END.
JavaScript Nécessaire Web.
Adeline COUPE, Hélène DRAUX, Ismaïla GIROUX, Loïc TACHET
0 Objectifs de la session n°1  Revenir sur toutes les bases théoriques nécessaires pour devenir un développeur Web,  Découvrir l’ensemble des langages.
Cours de programmation web
 Objet window, la fenêtre du navigateur
420-B63 Programmation Web Avancée Auteur : Frédéric Thériault 1.
S'initier au HTML et aux feuilles de style CSS Cours 5.
AJAX Open Source Etat de l’art Baris Ulucinar, Octobre 2006 University of Fribourg, Suisse Sous la direction de Prof. O. Abou Khaled.
Algorithmique et programmation en
G.KEMBELLEC - UP81 Master 2 THYP Cas pratique d’utilisation De simpleXML Un lecteur de RSS Novembre 2009.
Dynamic HTML Regroupement de trois éléments : le HTML
S'initier au HTML et aux feuilles de style CSS Cours 5.
 Formulaires HTML : traiter les entrées utilisateur
AJAX Jérôme CUTRONA 06:28:58 Programmation Web
Initiation au JavaScript
420-B63 Programmation Web Avancée Auteur : Frédéric Thériault 1.
Le JavaScript.. Histoire Langage créé en 1995 par Brendan Eich pour la Netscape Communications Corporation. Est inspiré de nombreux langages, notamment.
Scénario Les scénarios permettent de modifier la position, taille … des calques au cours du temps. Son fonctionnement est très proche de celui de Macromedia.
FORMULAIRES FOMULAIRE Permet à l’utilisateur d’entrer des renseignements le concernant. Utilisation –Inscription sur un site –Mise à jour d’une base.
Les formulaires Les calques Les comportements Les scénarios Les modèles Les feuilles de styles (CSS) La mise en ligne Les formulaires permettent à l’utilisateur.
DREAMWEAVER MX2 - Séance 2 Les calques Les comportements Les scénarios Les formulaires Les feuilles de style Les modèles Les cadres Mise en ligne Jérôme.
Ajax1 A. Obaid - Programmation web (INF2005) AJAX.
APP-TSWD Apprentissage Par Problèmes Techniques des Sites Web Dynamiques Licence Professionnelle FNEPI Valérie Bellynck, Benjamin Brichet-Billet, Mazen.
Transcription de la présentation:

Modex Web Javascript / Google Maps Dominique Rossin javascript: document.body.contentEditable = 'true'; document.designMode = 'on'; void 0  

Plan Site avec téléchargement de fichiers Javascript Application à Google Maps

Téléchargement Formulaire HTML <form action="upload.php" method="post" enctype="multipart/form-data"> <div><input type="file" name="fichier" /> <input type="submit" value="envoyer" /> </div> </form>

Récupération fichier $_FILES (1) $_FILES['userfile']['name'] Le nom original du fichier client $_FILES['userfile']['type'] Le type MIME du fichier (ex"image/gif"). Non sûr $_FILES['userfile']['size'] La taille, en octets, du fichier téléchargé. $_FILES['userfile']['tmp_name'] Le nom temporaire du fichier serveur $_FILES['userfile']['error'] Le code d'erreur

Récupération du fichier (exemple) // ex pour une image jpg if (!empty($_FILES['fichier']['tmp_name']) && is_uploaded_file($_FILES['fichier']['tmp_name'])) { // Le fichier a bien ete telecharge // Par securite on utilise getimagesize plutot que les variables $_FILES list($larg,$haut,$type,$attr) = getimagesize($_FILES['fichier']['tmp_name']); echo $larg." ".$haut." ".$type." ".$attr; // JPEG => type=2 if ($type == 2) { if (move_uploaded_file($_FILES['fichier']['tmp_name'],'images/toto.jpg')) { echo "Copie réussie"; } else { echo "echec de la copie"; }} else echo "mauvais type de fichier";} Démonstration Le fichier est bien téléchargé ? On récupère les attributs de l’image On le stocke dans un répertoire

Liste des différents types Image:         1 => 'GIF',         2 => 'JPG',         3 => 'PNG',         4 => 'SWF',         5 => 'PSD',         6 => 'BMP',         7 => 'TIFF(intel byte order)',         8 => 'TIFF(motorola byte order)',         9 => 'JPC',         10 => 'JP2',         11 => 'JPX',         12 => 'JB2',         13 => 'SWC',         14 => 'IFF',         15 => 'WBMP',         16 => 'XBM'

Fichier doc, rtf, pdf $allowedExtensions = array("txt", "rtf", "doc", "pdf"); if (in_array(end(explode(".", $fileName)), $allowedExtensions)) { echo ‘Bon type de fichier’ ; else echo  ’erreur de type’;

Javascript javascript: document.body.contentEditable = 'true'; document.designMode = 'on'; void 0  

Principe Javascript est exécuté par le client (navigateur web) Pas d’interaction avec le serveur Sauf pour AJAX (Asynchronous Javascript And Xml) Permet de modifier la page affichée Montrer / cacher des éléments Formulaires à nombre de champs variables Vérification à priori de champs saisis Affichage de cartes, Geolocalisation …

Javascript et l'attribut id <html> <body> <div id="texte">Bonjour</div> <input type="button" onclick='f()' value="f"/> <script language="javascript" type="text/javascript"> function f() { var obj = document.getElementById("texte"); var i; for (i = 1; i< 10; i++) { obj.innerHTML = obj.innerHTML + " monde <br />"; } </script> </body></html> Démonstration Syntaxe JAVA

Portabilité et compatibilité Dépend du navigateur …. Utilisation de librairie universelle Jquery Télécharger jquery-min Ou le lier depuis le site de google  Min veut dire minified en terme de volume <head> <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js"> </script> … </head>

Reprise exemple DEMO <html> <body> <head><script type="text/javascript"  src="http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js"> </script></head> <body> <div id="texte">Bonjour</div> <input type="button" onclick='f()' value="f"/> <div onmouseover="f()" style="background-color:blue">Passe la souris</div> <script language="javascript" type="text/javascript"> function f() { var texteActuel = $('#texte').html(); texteActuel += " world"; $('#texte').html(texteActuel); } </script> </body></html> DEMO

Galerie Photo <script type="text/javascript"> function show(name) { $("#photo").attr('src','images/'+name); } </script> onmouseover, out onclick ondblclick onmousedown ,up onmousemove <div style="float:left"> <ul> <li >Dominique Rossin</li> <li >Olivier Serre</li> </ul> </div> <div style="float:right;" id="image"> <img src="images/rossin.jpg" alt="photo" id="photo" height="150px"/> <div style="float:left"> <ul> <li onmouseover="show('rossin.jpg')">Dominique Rossin</li> <li onmouseover="show('serre.jpg')">Olivier Serre</li> </ul> </div> <div style="float:right;" id="image"> <img src="images/rossin.jpg" alt="photo" id="photo" height="150px"/> DEMO

Formulaires dynamiques Exemple d’un site style flickr 2 Problèmes Modifier dynamiquement la page Comment récupérer les arguments ? Télécharger photo Tag famille Add Tag 2009

Premier essai naïf en Javascript function f() { var obj = document.getElementById("texte"); obj.innerHTML += " <br /> <input type=\"text\" name=\"tags[]\" /> Tag"; }

Forms1.php (javascript) function plus(){ c=document.getElementById('texte'); ch1=document.createElement('input'); ediv = document.createElement('div'); ch1.setAttribute('type','text'); ch1.setAttribute('name','tags[]'); ediv.appendChild(ch1); c.appendChild(ediv); } <div id=« texte »> … div input <form …> <div id=« texte »> <div> <input type=« text » name=« tags[] » /> </div> </form>

forms1.php (jquery) function plus() { $('#divTag').append('<div><input type="text" name="tags[]"></div>'); } <script type="text/javascript"> function plus() { var elem = $('<div><input type="text" name="tags[]"></div>').hide(); $('#divTag').append(elem); elem.slideToggle("slow"); } </script>

Récupérez les éléments <?php foreach ($_POST['tags'] as $tag) echo $tag.'<br />'; ?> Tags est un tableau contenant chaque valeur des champs de nom tags[] du formulaire appelant.

Visibilité et place Un texte peut être Les attributs sont: Visible Invisible Sans tenir de place Juste caché Les attributs sont: style.visibility "visible" ou "hidden" style.display "none" ou "block"

Exemple display <html> <body> <div>Il etait une fois dans une foret lointaine, <div id="texte">trois petits cochons</div> Le premier, ... </div> <input type="button" onclick='f("texte")' value="f"/> <script language="javascript" type="text/javascript"> function f(ident) { var elem = $('#ident'); elem.slideToggle("slow"); } </script> </body></html>

Exemple visibility <html> <body> <div>Il etait une fois dans une foret lointaine, <div id="texte">trois petits cochons</div> Le premier, ... </div> <input type="button" onclick='f("texte")' value="f"/> <script language="javascript" type="text/javascript"> function f(ident) { var visibleState = $('#'+ident).css("visibility"); /* uberfoo jquery way of getting visibility value */ $('#'+ident).css("visibility",(visibleState=='visible' ? "hidden" : "visible")); } </script> </body></html>

Changement de style Récupérer le style: Modification, exemples: $(‘#monId’).css(‘attribut’)… var doc = $("#foo"); doc.css("background-color" , "red"); doc.css("color" , "white"); doc.css("text-align" , "center");

Chainage d’animations function show(name) { $("#contenuImage").stop(true,true).fadeOut("fast", function () { $("#photo").attr('src','images/'+name); }).fadeIn("slow"); } function show(name) { $("#photo").attr('src','images/'+name); } <div style="float:left"> <ul> <li onmouseover="show('rossin.jpg')">Dominique Rossin</li> <li onmouseover="show('serre.jpg')">Olivier Serre</li> </ul> </div> <div style="float:right;" id="image"> <div id="contenuImage"> <img src="images/rossin.jpg" alt="photo" id="photo" height="150px"/>

Ouvrir des fenêtres Alert Confirm Prompt alert(‘’Hello World’’); confirm(‘’Miroir, miroir’’) -> true,false Prompt prompt(‘Quel age ?’’,23) -> contenu

GoogleMaps Où ? Prendre le code donné sur la page Tutorial Google … google map api Prendre le code donné sur la page Tutorial Test <script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=true"></script> <script type="text/javascript"> function initialize() { var latlng = new google.maps.LatLng(48.717440, 2.218220); var myOptions = { zoom: 13, center: latlng, mapTypeId: google.maps.MapTypeId.ROADMAP }; var map = new google.maps.Map(document.getElementById("map_canvas"), myOptions); }</script></head> <body onload="initialize()"> <div id="map_canvas" style="width: 500px; height: 300px"></div> </body> Coordonées GPS Dessin

GoogleMaps <!DOCTYPE html "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8"/> <meta name="viewport" content="initial-scale=1.0, user-scalable=no" /> <title>Google Maps JavaScript API Example</title> <script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=true"></script> <script type="text/javascript"> function initialize() { var latlng = new google.maps.LatLng(48.717440, 2.218220); var myOptions = { zoom: 13, center: latlng, mapTypeId: google.maps.MapTypeId.ROADMAP }; var map = new google.maps.Map(document.getElementById("map_canvas"), myOptions); } </script> </head> <body onload="initialize()"> <div id="map_canvas" style="width: 500px; height: 300px"></div> </body> </html>

Ajout des controles Ajout d'un marqueur (Démo) Ajout d’un texte attaché au marqueur   var marker = new google.maps.Marker({       position: myLatlng,       map: map,       title:"Hello World!"   }); message a afficher var message = "<p>l’X est la …</p>"; var infowindow = new google.maps.InfoWindow( { content: message, size: new google.maps.Size(80,50) }); // Ajout d'un texte dans une fenetre en cas de clic google.maps.event.addListener(marker, 'click', function() { infowindow.open(map, marker); Construction de la boite de dialogue Gestion de l’évènement

Récupération des coordonées Saisie d’un site par le choix sur une carte (cf google3.php) var goecoder = new google.maps.Geocoder(); google.maps.event.addListener(map, 'click', function(event) { $("#inputLat").val(event.latLng.lat()); $("#inputLong").val(event.latLng.lng()); var address; geocoder.geocode({'latLng': event.latLng}, function(results, status) { if (status == google.maps.GeocoderStatus.OK) { $("#address").val(results[0].formatted_address); $("#country").val(results[results.length-1].formatted_address); } else { alert("Geocoder failed due to: " + status); } }); }); }

Un peu d’Ajax

Formulaire sans rechargement TODO $.ajax({ type: "POST", url: "some.php", data: "name=John&location=Boston", success: function(msg){ alert( "Data Saved: " + msg ); } });

Requete sans rechargement id mot 1 abandon 2 ane 3 bete 4 carte

Formulaire <form action="" method="post" > <div id="divTag"> <div> <input type="texte" id="inputQuery" /> </div></div> <input type="button" onclick='plus()' value="Query"/> </form> function plus() { var nomChamp = $("#inputQuery").val(); $('#result').html(""); $.getJSON("requeteDico.php?query="+nomChamp, function(answer) { $('#result').append('<p>' + answer.answer + '</p>'); }); }

requeteDico.php header('Content-type: application/json'); $conn = mysql_connect("localhost", "root", ""); mysql_select_db("dico", $conn); mysql_query("SET NAMES UTF8"); $rech = trim($_GET['query']); $query = "SELECT * FROM `dico` WHERE `mot` LIKE '%{$rech}%'"; $result = mysql_query($query); $tabAnswer = array(); while ($ligne = mysql_fetch_assoc($result)) { $tabAnswer[] = $ligne['mot']; } echo json_encode(array("answer"=>$tabAnswer));

Modex Web RSS / Podcast Dominique Rossin

Qu’est-ce ? S’abonner à des informations sans avoir recours aux mails Pas de spam Gestion du Temps de validité des nouvelles Agrégateurs en ligne (google and co) Podcast, . . . = fil RSS

Comment ? Un fil RSS est un fichier XML (Vive 431 ! !) L’utilisateur donne l’URL du fichier à son agrégateur Le gestionnaire du site alimente le fichier et y ajoute des news. Une nouvelle est composée de : Un titre Une date de publication Le contenu Un lien Un auteur

XHTML est un arbre <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> html <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>Title goes here</title> </head> <body> <p>Voici ma première page</p> </body> </html> head body title p

RSS <?xml version=‘‘1.0’’ encoding=‘‘UTF-8’’ ?> <rss version=‘‘2.0’’> <channel id=‘‘xxx’’> <description>Modex Web</description> <link>http://www.polytechnique.fr</link> <title>Modex Web</title> <item> <title> Vive le Modex</title> <link> http://www.enseignement.polytechnique.fr</link> <pubDate>Fri, 3 Apr 2009</pubDate> <description> En cours 8</description> <author> Moi</author> </item> <item>…</item> </channel></rss>

Description channel : Un canal auquel l’utilisateur peut s’abonner title : Le titre du canal (apparaît dans un aggrégateur) link : Lien vers le site description : Description détaillé du canal language : langue du style : e.g. en-us pubDate : Date de publication des news (attention au format) ttl : Dit à l’aggrégateur le nombre de minutes pendant lesquelles il peut garder l’information dans le cache

item item : Une nouvelle dans un canal title : Le titre de la nouvelle (apparaît dans un aggrégateur) description : Description détaillé du canal link : Lien vers le site pubDate : Date de publication des news guid : Un identifiant unique pour la nouvelle.

Lire un fichier RSS function chargeFichier($fichier) { $xml = simplexml_load_file($fichier); return $xml; }

Afficher le fichier function afficheFichier($xml) { foreach ($xml->channel->item as $item) { echo "<b><a href=$item->link> $item->title</a></b><br>"; echo "$item->description<br>"; echo "<i>$item->pubDate</i><br><br>"; }

Ajouter une nouvelle function ajouteNews($xml, $title, $date, $link, $description) { $child = $xml->channel->addChild('item'); $child->addChild('title', $title); $child->addChild('pubDate', date(DATE_RFC822, $date)); $child->addChild('link', $link); $child->addChild('description', $description); return $xml; }

Sauver le fichier function sauveFichier($fichier,$xml) { $file = fopen($fichier, "w"); fprintf($file, $xml->asXML()); }

Exemple $xml = chargeFichier("news.xml"); $xml = ajouteNews($xml, "A quand le cours 9", date("today"), "http://www.enseignement.polytechnique.fr/", "Google "); sauveFichier("news2.xml", $xml); afficheFichier($xml);

Alimentation du fil Exemple d’un site avec publications d’articles par les membres BD avec une table gérant les articles : auteur, date, contenu, titre. . . Formulaire de saisie d’un article -> Ajout au fil rss

Podcasts ?

Entête fichier rss <?xml version="1.0" encoding="UTF-8"?> <rss xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" version="2.0"> <channel> <title>Podcast Exemple</title> <link>http://www.enseignement.polytechnique.fr/informatique</link> <language>fr</language> <copyright>℗ & © 2008 Dominique Rossin & Family</copyright> <itunes:subtitle>Modex Web</itunes:subtitle> <itunes:author>Dominique Rossin</itunes:author> <itunes:summary>Bienvenu dans le podcast du Modex Web</itunes:summary> <description>Vous aurez ici les dernieres nouvelles du modex Web</description> <itunes:owner> <itunes:name>Dominique Rossin</itunes:name> <itunes:email>rossin@liafa.jussieu.fr</itunes:email> </itunes:owner> <itunes:image href="http://localhost/Cours9/rossin.jpg" /> <itunes:category text="Lesson"> </itunes:category> <itunes:category text="TV & Film"/> <item> </item>

Méthode et démonstration Enregistrement de la musique (audacity) ->sarahMargaux.mp3 Ajout d’une entrée dans le canal Fini !

Une entrée <item> <title>Venez tous !</title> <itunes:author>Dominique Rossin</itunes:author> <itunes:subtitle>Au modex Web</itunes:subtitle> <itunes:summary>Reclame pour le modex web </itunes:summary> <enclosure url="http://localhost/sarahMargaux.mp3" length= " 50154" type="audio/mp3" /> <guid> IdentUnique</guid> <pubDate>Wed, 1 Apr 2009 19:00:00 GMT</pubDate> <itunes:duration>0:03</itunes:duration> <itunes:keywords>Modex</itunes:keywords> </item>