<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Amine  Blog</title>
	<atom:link href="http://macherif.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://macherif.wordpress.com</link>
	<description>TUNISIA WEB REVOLUTION</description>
	<lastBuildDate>Wed, 23 Feb 2011 15:31:31 +0000</lastBuildDate>
	<language>fr</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='macherif.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>Amine  Blog</title>
		<link>http://macherif.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://macherif.wordpress.com/osd.xml" title="Amine  Blog" />
	<atom:link rel='hub' href='http://macherif.wordpress.com/?pushpress=hub'/>
		<item>
		<title>Ext js</title>
		<link>http://macherif.wordpress.com/2010/01/29/ext-js/</link>
		<comments>http://macherif.wordpress.com/2010/01/29/ext-js/#comments</comments>
		<pubDate>Thu, 28 Jan 2010 23:22:03 +0000</pubDate>
		<dc:creator>macherif</dc:creator>
				<category><![CDATA[Cours FR]]></category>
		<category><![CDATA[Cours java script]]></category>
		<category><![CDATA[intro]]></category>
		<category><![CDATA[documentation Extjs]]></category>
		<category><![CDATA[Ext js]]></category>
		<category><![CDATA[Extjs]]></category>
		<category><![CDATA[Tutorial Extjs en français]]></category>
		<category><![CDATA[tutoriel Extjs]]></category>

		<guid isPermaLink="false">http://macherif.wordpress.com/?p=51</guid>
		<description><![CDATA[Nous allons voir ici la plupart des tâches courantes généralement réalisées en Javascript et comment exéctuter celles-ci avec Ext. Si vous souhaitez expérimenter le code de ce tutoriel
vous pouvez récupérer l'archive IntroToExt.zip qui nous servira de base pour construire notre code Ext. Cette archive contient trois fichiers : ExtStart.html, ExtStart.js etExtStart.css.
Placez ces 3 fichiers dans le même dossier que celui contenant la librairie Ext (si Ext est sous "C:\code\Ext\v1.0", créez par exemple un nouveau dossier "tutoriel" sous "v1.0" et placez-y
les 3 fichiers). Double-cliquez à présent sur le fichier ExtStart.htm afin d'exécuter celui-ci dans votre navigateur favori. Vous devriez obtenir un message indiquant que tout est
correctement configuré.<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=macherif.wordpress.com&amp;blog=11173678&amp;post=51&amp;subd=macherif&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<div id="_mcePaste" style="text-align:center;"><span style="color:rgb(255,102,0);"><span style="text-decoration:underline;">Ext js<br />
</span></span></div>
<div style="text-align:center;"><span style="color:rgb(255,102,0);"><span style="text-decoration:underline;"><a href="http://macherif.files.wordpress.com/2010/01/documentation_technique_extjs.pdf">documentation_technique_EXTJS </a></span></span></div>
<p><span style="text-decoration:underline;">voir aussi<a href="http://macherif.files.wordpress.com/2010/01/build-ajax-applications-with-extjs.pdf">build-ajax-applications-with-extjs</a><br />
</span></p>
<div>Télécharger Ext</div>
<div id="_mcePaste">Vous pouvez télécharger la version courante de Ext ici : http://extjs.com/download.</div>
<div id="_mcePaste">Il existe différentes versions téléchargables de Ext, mais vous préférerez sûrement débuter avec la version courante stable. Une fois que vous aurez récupéré et décompressé l&#8217;archive un</div>
<div id="_mcePaste">bon point de départ pour commencer est d&#8217;explorer le contenu du dossier examples.</div>
<div id="_mcePaste">Allons-y !</div>
<div id="_mcePaste">Nous allons voir ici la plupart des tâches courantes généralement réalisées en Javascript et comment exéctuter celles-ci avec Ext. Si vous souhaitez expérimenter le code de ce tutoriel</div>
<div id="_mcePaste">vous pouvez récupérer l&#8217;archive IntroToExt.zip qui nous servira de base pour construire notre code Ext. Cette archive contient trois fichiers : ExtStart.html, ExtStart.js etExtStart.css.</div>
<div id="_mcePaste">Placez ces 3 fichiers dans le même dossier que celui contenant la librairie Ext (si Ext est sous &laquo;&nbsp;C:\code\Ext\v1.0&#8243;, créez par exemple un nouveau dossier &laquo;&nbsp;tutoriel&nbsp;&raquo; sous &laquo;&nbsp;v1.0&#8243; et placez-y</div>
<div id="_mcePaste">les 3 fichiers). Double-cliquez à présent sur le fichier ExtStart.htm afin d&#8217;exécuter celui-ci dans votre navigateur favori. Vous devriez obtenir un message indiquant que tout est</div>
<div id="_mcePaste">correctement configuré.</div>
<div id="_mcePaste">Vous êtes maintenant prêt pour ouvrir le fichier ExtStart.js dans votre EDI ou éditeur de texte favori afin de jeter un oeil sur celui-ci :</div>
<div id="_mcePaste">Ext.onReady(function() {</div>
<div id="_mcePaste">alert(&laquo;&nbsp;Congratulations! You have Ext configured correctly!&nbsp;&raquo;);</div>
<div id="_mcePaste">});</div>
<div id="_mcePaste">Ext.onReady est probablement la première méthode que vous utiliserez dans chacune de vos pages. Cette méthode est appelée automatiquement quand le DOM est entièrement chargé</div>
<div id="_mcePaste">garantissant ainsi la disponibilité des elements de la page que vous pourriez utiliser dans vos scripts. Pour commencer notre tutoriel, supprimez la ligne alert() nous ajouterons par la</div>
<div id="_mcePaste">suite du code réalisant quelque chose de réellement utile</div>
<div id="_mcePaste">Element: le coeur de Ext</div>
<div id="_mcePaste">Presque tout ce que vous faites avec Javascript implique de référencer les éléments spécifiques de votre page de sorte que vous puissiez les utiliser par la suite. En Javascript traditionnel,</div>
<div id="_mcePaste">sélectionner un noeud DOM en fonction de son ID se fait de la façon suivante :</div>
<div id="_mcePaste">var myDiv = document.getElementById(&#8216;myDiv&#8217;);</div>
<div id="_mcePaste">Ceci fonctionne bien mais l&#8217;objet qui est retourné (un noeud DOM) offre peu de possibilité. Afin de pouvoir faire ce que vous souhaitez avec ce noeud il est souvent nécessaire d&#8217;écrire</div>
<div id="_mcePaste">beaucoup de code sur mesure. Il est de plus de votre responsabilité de gérer les multiples façons dont les noeuds peuvent être interprétés par les différents navigateurs.</div>
<div id="_mcePaste">Voyons l&#8217;objet Ext.Element. Element est réellement au coeur de Ext, fournissant l&#8217;accès aux éléments de la page et permettant d&#8217;agir sur ceux-ci. Son API est fondamentale pour toute la</div>
<div id="_mcePaste">librairie Ext et si vous deviez passer du temps pour apprendre une classe Ext, ce devrait-être la classe Element !</div>
<div id="_mcePaste">Le code Ext pour obtenir un élément par son ID resemble à ceci (la page ExtStart.htm contient une balise div avec un id &laquo;&nbsp;myDiv&nbsp;&raquo; ajoutez donc ce code à ExtStart.js):</div>
<div id="_mcePaste">Ext.onReady(function() {</div>
<div id="_mcePaste">var myDiv = Ext.get(&#8216;myDiv&#8217;);</div>
<div id="_mcePaste">});</div>
<div id="_mcePaste">Nous avons maintenant un objet Element, mais qu&#8217;y a t&#8217;il de si intéressant dans tout celà ?</div>
<div id="_mcePaste"> Element englobe la plus part des méthodes et propriétés DOM dont vous pourriez avoir besoin, fournissant ainsi une interface DOM pratique, unifiée et commune à tous les</div>
<div id="_mcePaste">navigateurs (vous pouvez toujours accéder directement au noeud DOM quand cela est nécessaire via Element.dom)</div>
<div id="_mcePaste"> La méthode Element.get() possède un cache interne, ainsi les multiples appels pour retrouver le même objet sont très rapides</div>
<div id="_mcePaste"> Les actions les plus courantes réalisées sur les noeuds DOM sont directement intégrées de façon indépendantes du navigateur (ajouter/supprimer une classe CSS,</div>
<div id="_mcePaste">ajouter/supprimer un gestionnaire d&#8217;évènement, positionner l&#8217;élement, opérations sur les dimensions, animation, glisser/déposer, etc.)</div>
<div id="_mcePaste">Ceci signifie que vous pouvez faire toute sorte d&#8217;opérations avec un minimum de code. Voici quelques exemples (voyez la documentation de l&#8217;API Element pour la liste complète). Ajoutez</div>
<div id="_mcePaste">le code suivant à ExtStart.js après la première ligne ou nous avons récupéré l&#8217;élément &#8216;myDiv&#8217; :</div>
<div id="_mcePaste">myDiv.highlight(); // Le fond de l&#8217;élement va être surligné en jaune</div>
<div id="_mcePaste">myDiv.addClass(&#8216;red&#8217;); // Ajoute une classe CSS (définie dans ExtStart.css)</div>
<div id="_mcePaste">myDiv.center(); // Centre l&#8217;élément</div>
<div id="_mcePaste">myDiv.setOpacity(.25); // Rend l&#8217;élément partiellement transparent</div>
<div id="_mcePaste">Sélection des noeuds DOM</div>
<div id="_mcePaste">Il est souvent impraticable voire impossible de choisir des noeuds DOM par leur ID. Peut-être à cause du fait que l&#8217;ID n&#8217;est pas présent, que vous ne le connaissez tout simplement pas ou</div>
<div id="_mcePaste">bien parcequ&#8217;il y a trop d&#8217;éléments à référencer. Parfois, vous pouvez vouloir choisir des noeuds basés sur quelque chose d&#8217;autre que l&#8217;identifiant, comme un attribut ou un nom de classe</div>
<div id="_mcePaste">CSS. C&#8217;est pour toutes ces raisons que Ext possède un sélecteur DOM extrêmement puissant appelé DomQuery.</div>
<div id="_mcePaste">DomQuery peut être employé comme librairie autonome, mais le plus souvent en utilisant Ext, vous l&#8217;emploierez dans le contexte de la sélection d&#8217;élément de sorte que vous pourrez</div>
<div id="_mcePaste">alors agir par l&#8217;intermédiaire de l&#8217;interface Element. L&#8217;objet Element utilisera de lui même DomQuery pour la sélection d&#8217;élements par l&#8217;intermédiaire de la méthode Element.select. Voici</div>
<div id="_mcePaste">un exemple simple de la façon dont vous pouvez employer ceci : le fichier ExtStart.html contient plusieurs paragraphes (), aucun deux n&#8217;ayant d&#8217;identifiants. Si vous voulez</div>
<div id="_mcePaste">facilement sélectionner tout les paragraphes et effectuer une action sur ceux-ci, vous pouvez faire quelque chose comme ceci :</div>
<p>Télécharger ExtVous pouvez télécharger la version courante de Ext ici : http://extjs.com/download.Il existe différentes versions téléchargables de Ext, mais vous préférerez sûrement débuter avec la version courante stable. Une fois que vous aurez récupéré et décompressé l&#8217;archive unbon point de départ pour commencer est d&#8217;explorer le contenu du dossier examples.Allons-y !Nous allons voir ici la plupart des tâches courantes généralement réalisées en Javascript et comment exéctuter celles-ci avec Ext. Si vous souhaitez expérimenter le code de ce tutorielvous pouvez récupérer l&#8217;archive IntroToExt.zip qui nous servira de base pour construire notre code Ext. Cette archive contient trois fichiers : ExtStart.html, ExtStart.js etExtStart.css.Placez ces 3 fichiers dans le même dossier que celui contenant la librairie Ext (si Ext est sous &laquo;&nbsp;C:\code\Ext\v1.0&#8243;, créez par exemple un nouveau dossier &laquo;&nbsp;tutoriel&nbsp;&raquo; sous &laquo;&nbsp;v1.0&#8243; et placez-yles 3 fichiers). Double-cliquez à présent sur le fichier ExtStart.htm afin d&#8217;exécuter celui-ci dans votre navigateur favori. Vous devriez obtenir un message indiquant que tout estcorrectement configuré.Vous êtes maintenant prêt pour ouvrir le fichier ExtStart.js dans votre EDI ou éditeur de texte favori afin de jeter un oeil sur celui-ci :Ext.onReady(function() {alert(&laquo;&nbsp;Congratulations! You have Ext configured correctly!&nbsp;&raquo;);});Ext.onReady est probablement la première méthode que vous utiliserez dans chacune de vos pages. Cette méthode est appelée automatiquement quand le DOM est entièrement chargégarantissant ainsi la disponibilité des elements de la page que vous pourriez utiliser dans vos scripts. Pour commencer notre tutoriel, supprimez la ligne alert() nous ajouterons par lasuite du code réalisant quelque chose de réellement utileElement: le coeur de ExtPresque tout ce que vous faites avec Javascript implique de référencer les éléments spécifiques de votre page de sorte que vous puissiez les utiliser par la suite. En Javascript traditionnel,sélectionner un noeud DOM en fonction de son ID se fait de la façon suivante :var myDiv = document.getElementById(&#8216;myDiv&#8217;);Ceci fonctionne bien mais l&#8217;objet qui est retourné (un noeud DOM) offre peu de possibilité. Afin de pouvoir faire ce que vous souhaitez avec ce noeud il est souvent nécessaire d&#8217;écrirebeaucoup de code sur mesure. Il est de plus de votre responsabilité de gérer les multiples façons dont les noeuds peuvent être interprétés par les différents navigateurs.Voyons l&#8217;objet Ext.Element. Element est réellement au coeur de Ext, fournissant l&#8217;accès aux éléments de la page et permettant d&#8217;agir sur ceux-ci. Son API est fondamentale pour toute lalibrairie Ext et si vous deviez passer du temps pour apprendre une classe Ext, ce devrait-être la classe Element !Le code Ext pour obtenir un élément par son ID resemble à ceci (la page ExtStart.htm contient une balise div avec un id &laquo;&nbsp;myDiv&nbsp;&raquo; ajoutez donc ce code à ExtStart.js):Ext.onReady(function() {var myDiv = Ext.get(&#8216;myDiv&#8217;);});Nous avons maintenant un objet Element, mais qu&#8217;y a t&#8217;il de si intéressant dans tout celà ? Element englobe la plus part des méthodes et propriétés DOM dont vous pourriez avoir besoin, fournissant ainsi une interface DOM pratique, unifiée et commune à tous lesnavigateurs (vous pouvez toujours accéder directement au noeud DOM quand cela est nécessaire via Element.dom) La méthode Element.get() possède un cache interne, ainsi les multiples appels pour retrouver le même objet sont très rapides Les actions les plus courantes réalisées sur les noeuds DOM sont directement intégrées de façon indépendantes du navigateur (ajouter/supprimer une classe CSS,ajouter/supprimer un gestionnaire d&#8217;évènement, positionner l&#8217;élement, opérations sur les dimensions, animation, glisser/déposer, etc.)Ceci signifie que vous pouvez faire toute sorte d&#8217;opérations avec un minimum de code. Voici quelques exemples (voyez la documentation de l&#8217;API Element pour la liste complète). Ajoutezle code suivant à ExtStart.js après la première ligne ou nous avons récupéré l&#8217;élément &#8216;myDiv&#8217; :myDiv.highlight(); // Le fond de l&#8217;élement va être surligné en jaunemyDiv.addClass(&#8216;red&#8217;); // Ajoute une classe CSS (définie dans ExtStart.css)myDiv.center(); // Centre l&#8217;élémentmyDiv.setOpacity(.25); // Rend l&#8217;élément partiellement transparentSélection des noeuds DOMIl est souvent impraticable voire impossible de choisir des noeuds DOM par leur ID. Peut-être à cause du fait que l&#8217;ID n&#8217;est pas présent, que vous ne le connaissez tout simplement pas oubien parcequ&#8217;il y a trop d&#8217;éléments à référencer. Parfois, vous pouvez vouloir choisir des noeuds basés sur quelque chose d&#8217;autre que l&#8217;identifiant, comme un attribut ou un nom de classeCSS. C&#8217;est pour toutes ces raisons que Ext possède un sélecteur DOM extrêmement puissant appelé DomQuery.DomQuery peut être employé comme librairie autonome, mais le plus souvent en utilisant Ext, vous l&#8217;emploierez dans le contexte de la sélection d&#8217;élément de sorte que vous pourrezalors agir par l&#8217;intermédiaire de l&#8217;interface Element. L&#8217;objet Element utilisera de lui même DomQuery pour la sélection d&#8217;élements par l&#8217;intermédiaire de la méthode Element.select. Voiciun exemple simple de la façon dont vous pouvez employer ceci : le fichier ExtStart.html contient plusieurs paragraphes (), aucun deux n&#8217;ayant d&#8217;identifiants. Si vous voulezfacilement sélectionner tout les paragraphes et effectuer une action sur ceux-ci, vous pouvez faire quelque chose comme ceci :</p>
<p>vous pouvez télécharger le reste est sur le PDF</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/macherif.wordpress.com/51/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/macherif.wordpress.com/51/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/macherif.wordpress.com/51/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/macherif.wordpress.com/51/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/macherif.wordpress.com/51/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/macherif.wordpress.com/51/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/macherif.wordpress.com/51/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/macherif.wordpress.com/51/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/macherif.wordpress.com/51/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/macherif.wordpress.com/51/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/macherif.wordpress.com/51/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/macherif.wordpress.com/51/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/macherif.wordpress.com/51/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/macherif.wordpress.com/51/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=macherif.wordpress.com&amp;blog=11173678&amp;post=51&amp;subd=macherif&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://macherif.wordpress.com/2010/01/29/ext-js/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/472cd39002ff2e03bd10e3b7488c2ee1?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">macherif</media:title>
		</media:content>
	</item>
		<item>
		<title>Le framework Zend</title>
		<link>http://macherif.wordpress.com/2010/01/29/le-framework-zend/</link>
		<comments>http://macherif.wordpress.com/2010/01/29/le-framework-zend/#comments</comments>
		<pubDate>Thu, 28 Jan 2010 23:13:12 +0000</pubDate>
		<dc:creator>macherif</dc:creator>
				<category><![CDATA[Cours FR]]></category>
		<category><![CDATA[Cours PHP 5 & PHP 6]]></category>
		<category><![CDATA[documentation zend]]></category>
		<category><![CDATA[framework]]></category>
		<category><![CDATA[framework PHP]]></category>
		<category><![CDATA[mvc]]></category>
		<category><![CDATA[tutoriel zend]]></category>
		<category><![CDATA[Zend]]></category>
		<category><![CDATA[zend framework]]></category>
		<category><![CDATA[zend php]]></category>

		<guid isPermaLink="false">http://macherif.wordpress.com/?p=49</guid>
		<description><![CDATA[Le framework Zend est en réalité une série de bibliothèques de codes et une proposition de structure de développement qui constituentl'ébauche d'un framework. Les développeurs peuvent également l'utiliser à la manière de la bibliothèque PHP Pear (pour Extension and Application Repository).
 
Zend est un framework Open Source, il dispose de mises à jour publiques et contient les outils nécessaires pour sécuriser une application. Distribué sous licence "New BSD", il est piloté par la société Zend Technologies, et soutenu par une large communauté. Les utilisateurs du framework peuvent rapporter leurs bugs sur le tracker.
<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=macherif.wordpress.com&amp;blog=11173678&amp;post=49&amp;subd=macherif&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><em><strong>L&#8217;infrastructure de développement Open Source s&#8217;articule autour d&#8217;un cadre de conception de type MVC combiné à des bibliothèques de composants. Découvrez comment l&#8217;installer et le paramétrer.</strong></em></p>
<p><strong>Le framework Zend est en réalité une série de bibliothèques de codes</strong> et une proposition de structure de développement qui constituent<strong>l&#8217;ébauche d&#8217;un framework</strong>. Les développeurs peuvent également l&#8217;utiliser à la manière de la bibliothèque PHP Pear (pour <em>Extension and Application Repository)</em>.</p>
<p>Zend est <strong>un framework Open Source</strong>, il dispose de mises à jour publiques et contient les outils nécessaires pour sécuriser une application. Distribué sous <strong>licence &laquo;&nbsp;New BSD&nbsp;&raquo;</strong>,<strong> </strong><strong>il est piloté par la société Zend</strong> Technologies, et soutenu par une large communauté. Les utilisateurs du framework peuvent rapporter leurs bugs sur le tracker.</p>
<p>Comme tous les infrastructures PHP modernes, Zend utilise <strong>le modèle de conception MVC (Modèle/Vue/Contrôleur)</strong>. Il propose de nombreux composants permettant l&#8217;accès à une base de données, des services d&#8217;identification et d&#8217;authentification, de localisation, d&#8217;e-mails, de recherche, la génération de PDF et des services Web. Zend intègre des connecteurs pour les services en ligne de Yahoo!, Google, Amazon et Flickr.</p>
<p><strong>Configuration du framework :</strong></p>
<p>Le framework Zend a besoin de <strong>la version PHP 5.1.4</strong>, ou de version ultérieure, et d&#8217;<strong>un serveur Web Apache</strong> qui doit avoir l&#8217;extension<em>mod_rewrite</em> installée et configurée. Il faut aussi vérifier que <em>htaccess</em> est accepté en modifiant dans <em>httpd.conf</em> la valeur <em>AllowOverride</em> <strong><em>NONE</em></strong> à<strong><em>ALL</em></strong>.</p>
<p>Zend nécessite de <strong>bonnes connaissances de PHP 5,</strong> donc <strong>des compétences en développement objets</strong>, ainsi qu&#8217;un savoir-faire autour de la SPL (Standard PHP Library) qui fournit un ensemble de classes internes à PHP.</p>
<p>Le framework Zend est téléchargeable sur le site <a href="http://framework.zend.com/download">Zend Framework</a>. A ce jour, il est composé de <strong>48 packages fonctionnels</strong>. Pour l&#8217;installer, décompresser le fichier dans un répertoire. Il reste à faire pointer la constante <em>ZEND_FRAMEWORK_DIR</em> sur le répertoire <em>&#8216;&nbsp;&raquo;ibrary&nbsp;&raquo;</em> qui se trouve dans le dossier où a été décompressé le framework.</p>
<table border="0" cellspacing="0" cellpadding="0" width="429">
<tbody>
<tr>
<td width="15" valign="top"></td>
<td colspan="2"><strong>Quelques composants Zend utiles</strong></td>
<td width="15" valign="top"></td>
</tr>
<tr>
<td></td>
<td>Zend-Auth</td>
<td>Authentification</td>
<td></td>
</tr>
<tr>
<td></td>
<td>Zend_Db</td>
<td>Connexion à une base de données</td>
<td></td>
</tr>
<tr>
<td></td>
<td>Zend_Controller</td>
<td>Lien entre le modèle et la vue dans le   schéma MVC</td>
<td></td>
</tr>
<tr>
<td></td>
<td>Zend_Mail</td>
<td>Envoi de mails</td>
<td></td>
</tr>
<tr>
<td></td>
<td>Zend_Pdf</td>
<td>Génération de fichiers PDF</td>
<td></td>
</tr>
<tr>
<td></td>
<td>Zend_Search Lucene</td>
<td>Outil d&#8217;indexation Lucene d&#8217;Apache</td>
<td></td>
</tr>
<tr>
<td width="15" valign="bottom"></td>
<td colspan="2">Source : Benchmark   Group</td>
<td width="15" valign="bottom"></td>
</tr>
</tbody>
</table>
<p><strong>Organisation des répertoires :</strong></p>
<p>La documentation de Zend recommande une structure particulière de répertoires. <strong>Un dossier racine doit contenir l&#8217;ensemble des dossiers du site Web</strong>.</p>
<p>A l&#8217;intérieur de ce dossier racine, il est conseillé de créer un <strong>dossier<em>application</em></strong><em> </em>qui contiendra trois sous-dossiers, un pour le modèle, un pour la vue, et un pour le contrôleur du modèle MVC. Un second <strong>dossier</strong><em><strong>librairie</strong></em><strong> </strong>contiendra les fichiers téléchargés du framework Zend. Un dernier<strong>dossier</strong><strong> </strong><em><strong>public</strong></em>, qui sera la racine du site, contiendra les images, les scripts et les CSS.</p>
<p><strong>Les fichiers de l&#8217;application ne sont pas directement accessibles par Apache</strong>, ils sont donc plus sécurisés.</p>
<p>Le site sera accessible via l&#8217;URL suivante :</p>
<p><em>http://nomRepertoireRacine /public/</em></p>
<p><strong>Modèle MVC :</strong></p>
<p><strong>Le modèle de conception MVC comprend trois modules pour structurer l&#8217;architecture d&#8217;une application.</strong></p>
<p><strong>Le contrôleur fait le lien entre le modèle et la vue</strong>. Explication : chaque page de l&#8217;application est une action. Les actions sont regroupées par contrôleurs. Le contrôleur est un objet de la classe<em>Controller</em>. La classe doit être enregistrée dans un fichier du même nom que le contrôleur : <em>NomDuControleur.php</em>. Elle va contenir l&#8217;ensemble des actions correspondant au même objet sous la forme de fonctions. Cette classe est une extension du composant contrôleur de Zend :<em>Zend_Controller_Action</em>.</p>
<p><strong>La vue s&#8217;occupe de l&#8217;affichage des informations dans l&#8217;application</strong>(le HTML). Elle s&#8217;utilise avec la propriété <em>title</em>, à ajouter dans chaque fonction des contrôleurs : <em>$this-&gt;view-&gt;title=&nbsp;&raquo;Nomfonction&nbsp;&raquo;;</em></p>
<p>Pour chaque fonction, il faut créer une page de script portant le même nom que la fonction : <em>Nomfonction.phtml</em>, extension qui montre qu&#8217;il s&#8217;agit d&#8217;un gabarit (template). Ces pages de script correspondant à la<strong>vue</strong> doivent être placées dans un sous-dossier portant le même nom que le contrôleur.</p>
<p>Pour éviter de réécrire dans chaque page les mêmes fonctions d&#8217;affichage, Zend met à disposition le composant <em>layout</em>. Cet outil contient les balises XHTML de bases. Le contenu de la page est appellé via la variable <em>$content</em> à l&#8217;aide du <em>helper layout()</em> :</p>
<p><em>echo $this-&gt;layout()-&gt;content; </em></p>
<p>Le script doit être enregistré sous le format suivant : <em>layout.phtml</em>. C&#8217;est dans ce fichier qu&#8217;est inclus le lien vers le fichier CSS.</p>
<p><strong>Le modèle sert d&#8217;interface avec la base de données.</strong> La classe<em>Zend_Db_Table</em> fournit les composants de recherche, d&#8217;ajout, de modification et de suppression des enregistrements de la base de données. La classe <em>Zend_config</em> fournit un accès objet aux fichiers de configuration. Le fichier de configuration contenant les données de connexion peut être un fichier INI ou un fichier XML.</p>
<p><strong>Exemple de code Zend :</strong></p>
<p><span style="color:#0000ff;">Zend_Loader::loadClass(&#8216;Zend_Mail_Transport_Smtp&#8217;);<br />
Zend_Loader::loadClass(&#8216;Zend_Mail&#8217;);<br />
$tr = new Zend_Mail_Transport_Smtp(SMTP_HOST);<br />
Zend_Mail::setDefaultTransport($tr);</p>
<p>$destinataires=array(array(&#8216;mail&#8217;=&gt;&#8217;test@test.com&#8217;, &#8216;nom&#8217;=&gt;&#8217;Nom du destinataire&#8217;));<br />
$oMail=new Zend_Mail(&#8216;UTF-8&#8242;);<br />
$oMail-&gt;setFrom(MAIL_FROM, MAIL_FROM_NAME);<br />
foreach ($destinataires as $destinataire){<br />
$oMail-&gt;addTo($destinataire['mail'], $destinataire['nom']);<br />
}<br />
$oMail-&gt; setSubject($votreSujet);<br />
$oMail-&gt;setBodyHtml($votreBodyEnHtml, &#8216;UTF-8&#8242;, Zend_Mime::ENCODING_8BIT );<br />
$oMail-&gt;send();</span></p>
<p><strong>En savoir plus :</strong></p>
<p>La société Zend propose de nombreux outils autour du langage PHP.</p>
<p>Zend platform est un serveur d&#8217;applications PHP, Zend Studio est un IDE PHP, Zend Core assure la mise à jour du langage, des correctifs de sécurité et des corrections de bugs.</p>
<p>Enfin, Zend propose des services de conseil, de formation et de support.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/macherif.wordpress.com/49/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/macherif.wordpress.com/49/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/macherif.wordpress.com/49/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/macherif.wordpress.com/49/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/macherif.wordpress.com/49/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/macherif.wordpress.com/49/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/macherif.wordpress.com/49/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/macherif.wordpress.com/49/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/macherif.wordpress.com/49/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/macherif.wordpress.com/49/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/macherif.wordpress.com/49/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/macherif.wordpress.com/49/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/macherif.wordpress.com/49/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/macherif.wordpress.com/49/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=macherif.wordpress.com&amp;blog=11173678&amp;post=49&amp;subd=macherif&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://macherif.wordpress.com/2010/01/29/le-framework-zend/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/472cd39002ff2e03bd10e3b7488c2ee1?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">macherif</media:title>
		</media:content>
	</item>
		<item>
		<title>Formation PHP/MySQL par Pierre PATTARD &amp; Julien BENOIT</title>
		<link>http://macherif.wordpress.com/2010/01/29/formation-php/</link>
		<comments>http://macherif.wordpress.com/2010/01/29/formation-php/#comments</comments>
		<pubDate>Thu, 28 Jan 2010 23:04:24 +0000</pubDate>
		<dc:creator>macherif</dc:creator>
				<category><![CDATA[Cours FR]]></category>
		<category><![CDATA[Cours PHP 5 & PHP 6]]></category>
		<category><![CDATA[Cours SQL (MYSQL)]]></category>
		<category><![CDATA[formation php]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[tutoriel php]]></category>

		<guid isPermaLink="false">http://macherif.wordpress.com/?p=45</guid>
		<description><![CDATA[Le PHP
* Langage interprété, côté serveur
* pages interprétées par le serveur web
pas de compilation, code éditable avec un bloc notes.
aucune différences pour le visiteur (client)
le client ne voit que du HTML<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=macherif.wordpress.com&amp;blog=11173678&amp;post=45&amp;subd=macherif&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<div id="_mcePaste" style="text-align:center;"><strong><span style="color:#ff6600;">Le PHP</span></strong></div>
<div style="text-align:center;"><strong><span style="color:#ff6600;"><span style="font-weight:normal;line-height:normal;font-size:22px;white-space:pre;"><span style="color:#3366ff;">par Pierre PATTARD &amp; Julien BENOIT</span></span></span></strong></div>
<div style="text-align:center;"><strong><span style="color:#ff6600;"><span style="font-weight:normal;line-height:normal;font-size:22px;white-space:pre;"><span style="color:#3366ff;"><a href="http://macherif.files.wordpress.com/2010/01/formation-php.pdf">formation-php PDF</a></span></span></span></strong></div>
<div id="_mcePaste">le php</div>
<div> Langage interprété, côté serveur</div>
<div id="_mcePaste"> pages interprétées par le serveur web</div>
<div id="_mcePaste">pas de compilation, code éditable avec un bloc notes.</div>
<div id="_mcePaste"> aucune différences pour le visiteur (client)</div>
<div id="_mcePaste">le client ne voit que du HTML</div>
<div id="_mcePaste">Le PHP</div>
<div id="_mcePaste">Client</div>
<div id="_mcePaste">Navigateur</div>
<div id="_mcePaste">(Mozilla)</div>
<div id="_mcePaste">clic</div>
<div id="_mcePaste">Serveur (www.google.com)</div>
<div id="_mcePaste">Serveur web</div>
<div id="_mcePaste">(Apache)</div>
<div id="_mcePaste">PHP</div>
<div id="_mcePaste">requête HTTP</div>
<div id="_mcePaste">Réponse</div>
<div id="_mcePaste">fichier HTML</div>
<div id="_mcePaste">Le PHP: Avantages</div>
<div id="_mcePaste"> Avantages:</div>
<div id="_mcePaste"> pas besoin de différencier les navigateurs du marché (le</div>
<div id="_mcePaste">code fonctionne sur tous dès qu&#8217;il fonctionne sur un)</div>
<div id="_mcePaste"> maîtrise du fonctionnement et du code</div>
<div id="_mcePaste"> le code source n&#8217;est pas visible</div>
<div id="_mcePaste"> nombreuses interactions avec le serveur (bases de</div>
<div id="_mcePaste">données, fonctions avancées d&#8217;images, de génération de</div>
<div id="_mcePaste">pdf, d&#8217;exécution de scripts)</div>
<div id="_mcePaste">Le PHP: inconvénients</div>
<div id="_mcePaste"> Nécessite un serveur qui accepte le PHP</div>
<div id="_mcePaste"> Nombreuses failles de sécurité (revers de la médaille</div>
<div id="_mcePaste">de sa puissance)</div>
<div id="_mcePaste">La syntaxe de base</div>
<div id="_mcePaste"> Instructions insérées par les balises</div>
<div id="_mcePaste">php et ?&gt; dans un fichier qui a la bonne extension (.php, .</div>
<div id="_mcePaste">php3)</div>
<div id="_mcePaste"> Chaque instruction se termine par un &laquo;&nbsp;;&nbsp;&raquo;</div>
<div id="_mcePaste">ex: print &laquo;&nbsp;Hello World !&nbsp;&raquo;;</div>
<div id="_mcePaste"> Les variables ne sont ni déclarées ni typées et leur nom</div>
<div id="_mcePaste">commence par un $</div>
<div id="_mcePaste">ex: $foo=&nbsp;&raquo;toto&nbsp;&raquo;;</div>
<div id="_mcePaste"> Commentaires: // et /* … */ pour plusieurs lignes</div>
<div id="_mcePaste">Les structures conditionnelles</div>
<div id="_mcePaste"> If ( condition ) { instructions }</div>
<div id="_mcePaste">elseif ( condition2 ) { instructions }</div>
<div id="_mcePaste">else { instructions }</div>
<div id="_mcePaste">ex: if($i&lt;2){ print &nbsp;&raquo; i est inférieur à 2&#8243;; }</div>
<div id="_mcePaste">elseif(($i&gt;=2) and ($i&lt;4)) { print &laquo;&nbsp;i est compris entre 2 et 4&#8243;; }</div>
<div id="_mcePaste">else { print &laquo;&nbsp;i est supérieur à 4&#8243;; }</div>
<div id="_mcePaste">Les structures itératives</div>
<div id="_mcePaste"> for(initialisation;condition;incrémentation)</div>
<div id="_mcePaste">{instructions}</div>
<div id="_mcePaste">ex: for($i=0;$i&lt;=20;$i++) { print &laquo;&nbsp;i est égale à $i \n&nbsp;&raquo;; }</div>
<div id="_mcePaste">rmq: print &laquo;&nbsp;i est égale à $i \n&nbsp;&raquo;  print &laquo;&nbsp;i est égale à &laquo;&nbsp;.$i.&nbsp;&raquo;\n&nbsp;&raquo;</div>
<div id="_mcePaste"> print &laquo;&nbsp;i est égale à&nbsp;&raquo;;</div>
<div id="_mcePaste">print $i;</div>
<div id="_mcePaste">print &laquo;&nbsp;\n&nbsp;&raquo;;</div>
<div id="_mcePaste">While ( condition ) { instructions }</div>
<div id="_mcePaste">ex: while($i&lt;20) { …</div>
<div id="_mcePaste">…</div>
<div id="_mcePaste">$i++;</div>
<div id="_mcePaste">}</div>
<div id="_mcePaste">Les tableaux</div>
<div id="_mcePaste"> $tableau=array(&laquo;&nbsp;0&#8243;,&nbsp;&raquo;1&#8243;, … );</div>
<div id="_mcePaste">$tableau[0]  premier élément du tableau</div>
<div id="_mcePaste"> Tableaux associatifs</div>
<div id="_mcePaste">$tableau=array(nom=&gt;&nbsp;&raquo;dupont&nbsp;&raquo;,prenom=&gt;roger&nbsp;&raquo; … ),</div>
<div id="_mcePaste">print $tableau-&gt;nom; // retourne &laquo;&nbsp;dupont&nbsp;&raquo;</div>
<div id="_mcePaste">Parcourir un tableau</div>
<div id="_mcePaste"> Tableau &laquo;&nbsp;normal&nbsp;&raquo;:</div>
<div id="_mcePaste">for($i=0;$i&lt;=length($tableau);$i++)</div>
<div id="_mcePaste">{ print $tableau[$i]; }</div>
<div id="_mcePaste"> Tableau associatif:</div>
<div id="_mcePaste">foreach($tableau as $cle=&gt;$valeur)</div>
<div id="_mcePaste">{ print &laquo;&nbsp;La clé $cle a pour valeur $valeur&nbsp;&raquo;;}</div>
<div id="_mcePaste">Les variables spéciales:</div>
<div id="_mcePaste"> $_POST et $_GET permettent de récupérer la sortie</div>
<div id="_mcePaste">d&#8217;un formulaire</div>
<div id="_mcePaste">ex: $login=$_POST["login"];</div>
<div id="_mcePaste">$motdepasse=$_POST["password"];</div>
<div id="_mcePaste"> $_SERVER et $_ENV qui donnent accès à des</div>
<div id="_mcePaste">variables d&#8217;environnement et du serveur</div>
<div id="_mcePaste">ex: $_SERVER["host"]  hote (ou virtualhost) utilisé</div>
<div id="_mcePaste">$_SERVER[" "]</div>
<div id="_mcePaste">Se connecter à MySQL</div>
<div id="_mcePaste"> mysql_connect(&laquo;&nbsp;localhost&nbsp;&raquo;,&nbsp;&raquo;dupont&nbsp;&raquo;,&nbsp;&raquo;pass&nbsp;&raquo;);</div>
<div id="_mcePaste">mysql_select_db(&laquo;&nbsp;mabase&nbsp;&raquo;);</div>
<div id="_mcePaste">$requete=&nbsp;&raquo;SELECT nom FROM users&nbsp;&raquo;;</div>
<div id="_mcePaste">$resultat=mysql_query($requete);</div>
<div id="_mcePaste">while( $user=mysql_fetch_object($result) )</div>
<div id="_mcePaste">{ print $user-&gt;nom ; }</div>
<div id="_mcePaste">mysql_close();</div>
<div id="_mcePaste">Les fonctions</div>
<div id="_mcePaste"> Function nom(arguments) { instructions }</div>
<div id="_mcePaste">ex: function afficher($texte)</div>
<div id="_mcePaste">{ print $texte; // affiche le contenu de $texte</div>
<div id="_mcePaste">return true; } // optionnel, valeur de retour</div>
<div id="_mcePaste">En PHP comme dans d&#8217;autre langages les variables des fonctions sont locales. Pour</div>
<div id="_mcePaste">utiliser une variable globale il faut l&#8217;importer avec la commande global $variable;</div>
<div id="_mcePaste"> Fonctions (très) utiles: include et require.</div>
<div id="_mcePaste">elles permettent d&#8217;inclure d&#8217;autres pages pdt l&#8217;interprétation</div>
<div id="_mcePaste">qui seront immédiatement interprétées:</div>
<div id="_mcePaste">ex: include(&laquo;&nbsp;connect.inc.php&nbsp;&raquo;);</div>
<div id="_mcePaste">La requête SELECT</div>
<div id="_mcePaste"> Permet d&#8217;afficher le contenu d&#8217;une table</div>
<div id="_mcePaste"> SELECT champs FROM nom_table WHERE condition</div>
<div id="_mcePaste">ORDER BY champ ASC/DEC LIMIT inf,sup</div>
<div id="_mcePaste"> Retourne sous forme d&#8217;un tableau les valeurs des champs des tables indiquées qui vérifient</div>
<div id="_mcePaste">la condition fournie</div>
<div id="_mcePaste"> Ex: SELECT nom,prenom FROM users WHERE age&lt;20 ORDER BY nom ASC LIMIT 0,30</div>
<div id="_mcePaste">Les requêtes INSERT et DELETE</div>
<div id="_mcePaste"> Permettent de remplir et vider une table</div>
<div id="_mcePaste"> INSERT INTO table (champs) VALUES (valeurs)</div>
<div id="_mcePaste"> ex: INSERT INTO users (`nom`,`prenom`,`age`)</div>
<div id="_mcePaste">VALUES (&#8216;dupont&#8217;,'roger&#8217;,&#8217;42&#8242;)</div>
<div id="_mcePaste"> DELETE FROM table WHERE condition</div>
<div id="_mcePaste"> ex: DELETE FROM users WHERE nom=&#8217;dupont&#8217;</div>
<div id="_mcePaste">La requête UPDATE</div>
<div id="_mcePaste"> Permet de modifier les données d&#8217;une table</div>
<div id="_mcePaste"> UPDATE nom_table SET affectation WHERE condition</div>
<div id="_mcePaste">ex: UPDATE users SET age=40 WHERE nom=&#8217;dupont</div>
<div id="_mcePaste">UPDATE users SET prenom=&#8217;maurice&#8217; AND age=50 WHERE</div>
<div id="_mcePaste">nom=&#8217;dupont&#8217;</div>
<div id="_mcePaste">Les requêtes CREATE et DROP</div>
<div id="_mcePaste"> Permettent de créer et supprimer des tables</div>
<div id="_mcePaste">CREATE TABLE nom_table ( structure ) OPTIONS</div>
<div id="_mcePaste"> ex: CREATE TABLE `users` (</div>
<div id="_mcePaste">`id` smallint(4) NOT NULL auto_increment,</div>
<div id="_mcePaste">`nom` varchar(30) NOT NULL default &nbsp;&raquo;,</div>
<div id="_mcePaste">`prenom`varchar(30) NOT NULL default &nbsp;&raquo;,</div>
<div id="_mcePaste">`age` smallint(4) NOT NULL</div>
<div id="_mcePaste">PRIMARY KEY (`id`)</div>
<div id="_mcePaste">) TYPE=MyISAM AUTO_INCREMENT=1 ;</div>
<div id="_mcePaste"> ex: DROP TABLE `users` IF EXISTS</div>
<div id="_mcePaste">Les requêtes TRUNCATE et ALTER</div>
<div id="_mcePaste"> TRUNCATE permet de vider une table (mais conserve</div>
<div id="_mcePaste">la table et sa structure)</div>
<div id="_mcePaste">TRUNCATE TABLE table</div>
<div id="_mcePaste"> ALTER permet de modifier une table</div>
<div id="_mcePaste">ex: ALTER TABLE nom_table ADD champ type AFTER champ</div>
<div id="_mcePaste">ex: ALTER TABLE nom_table DROP champ</div>
<div id="_mcePaste">Les autres instructions</div>
<div id="_mcePaste"> INNER JOIN: produit cartésien pour joindre deux tables</div>
<div id="_mcePaste"> HAVING: permet de faire des sous-groupes</div>
<div id="_mcePaste"> Fonctions: count, sum, average, password</div>
<div id="_mcePaste">Liens utiles</div>
<div id="_mcePaste"> www.php.net: le manuel officiel du PHP</div>
<div id="_mcePaste"> www.mysql.net: le manuel officiel de MySQL</div>
<div id="_mcePaste">A vous de jouer !</div>
<p>Le PHP Langage interprété, côté serveur pages interprétées par le serveur webpas de compilation, code éditable avec un bloc notes. aucune différences pour le visiteur (client)le client ne voit que du HTMLLe PHPClientNavigateur(Mozilla)clicServeur (www.google.com)Serveur web(Apache)PHPrequête HTTPRéponsefichier HTMLLe PHP: Avantages Avantages: pas besoin de différencier les navigateurs du marché (lecode fonctionne sur tous dès qu&#8217;il fonctionne sur un) maîtrise du fonctionnement et du code le code source n&#8217;est pas visible nombreuses interactions avec le serveur (bases dedonnées, fonctions avancées d&#8217;images, de génération depdf, d&#8217;exécution de scripts)Le PHP: inconvénients Nécessite un serveur qui accepte le PHP Nombreuses failles de sécurité (revers de la médaillede sa puissance)La syntaxe de base Instructions insérées par les balises dans un fichier qui a la bonne extension (.php, .php3) Chaque instruction se termine par un &laquo;&nbsp;;&nbsp;&raquo;ex: print &laquo;&nbsp;Hello World !&nbsp;&raquo;; Les variables ne sont ni déclarées ni typées et leur nomcommence par un $ex: $foo=&nbsp;&raquo;toto&nbsp;&raquo;; Commentaires: // et /* … */ pour plusieurs lignesLes structures conditionnelles If ( condition ) { instructions }elseif ( condition2 ) { instructions }else { instructions }ex: if($i&lt;2){ print &nbsp;&raquo; i est inférieur à 2&#8243;; }elseif(($i&gt;=2) and ($i&lt;4)) { print &laquo;&nbsp;i est compris entre 2 et 4&#8243;; }else { print &laquo;&nbsp;i est supérieur à 4&#8243;; }Les structures itératives for(initialisation;condition;incrémentation){instructions}ex: for($i=0;$i&lt;=20;$i++) { print &laquo;&nbsp;i est égale à $i \n&nbsp;&raquo;; }rmq: print &laquo;&nbsp;i est égale à $i \n&nbsp;&raquo;  print &laquo;&nbsp;i est égale à &laquo;&nbsp;.$i.&nbsp;&raquo;\n&nbsp;&raquo; print &laquo;&nbsp;i est égale à&nbsp;&raquo;;print $i;print &laquo;&nbsp;\n&nbsp;&raquo;;While ( condition ) { instructions }ex: while($i&lt;20) { ……$i++;}Les tableaux $tableau=array(&laquo;&nbsp;0&#8243;,&nbsp;&raquo;1&#8243;, … );$tableau[0]  premier élément du tableau Tableaux associatifs$tableau=array(nom=&gt;&nbsp;&raquo;dupont&nbsp;&raquo;,prenom=&gt;roger&nbsp;&raquo; … ),print $tableau-&gt;nom; // retourne &laquo;&nbsp;dupont&nbsp;&raquo;Parcourir un tableau Tableau &laquo;&nbsp;normal&nbsp;&raquo;:for($i=0;$i&lt;=length($tableau);$i++){ print $tableau[$i]; } Tableau associatif:foreach($tableau as $cle=&gt;$valeur){ print &laquo;&nbsp;La clé $cle a pour valeur $valeur&nbsp;&raquo;;}Les variables spéciales: $_POST et $_GET permettent de récupérer la sortied&#8217;un formulaireex: $login=$_POST["login"];$motdepasse=$_POST["password"]; $_SERVER et $_ENV qui donnent accès à desvariables d&#8217;environnement et du serveurex: $_SERVER["host"]  hote (ou virtualhost) utilisé$_SERVER[" "]Se connecter à MySQL mysql_connect(&laquo;&nbsp;localhost&nbsp;&raquo;,&nbsp;&raquo;dupont&nbsp;&raquo;,&nbsp;&raquo;pass&nbsp;&raquo;);mysql_select_db(&laquo;&nbsp;mabase&nbsp;&raquo;);$requete=&nbsp;&raquo;SELECT nom FROM users&nbsp;&raquo;;$resultat=mysql_query($requete);while( $user=mysql_fetch_object($result) ){ print $user-&gt;nom ; }mysql_close();Les fonctions Function nom(arguments) { instructions }ex: function afficher($texte){ print $texte; // affiche le contenu de $textereturn true; } // optionnel, valeur de retourEn PHP comme dans d&#8217;autre langages les variables des fonctions sont locales. Pourutiliser une variable globale il faut l&#8217;importer avec la commande global $variable; Fonctions (très) utiles: include et require.elles permettent d&#8217;inclure d&#8217;autres pages pdt l&#8217;interprétationqui seront immédiatement interprétées:ex: include(&laquo;&nbsp;connect.inc.php&nbsp;&raquo;);La requête SELECT Permet d&#8217;afficher le contenu d&#8217;une table SELECT champs FROM nom_table WHERE conditionORDER BY champ ASC/DEC LIMIT inf,sup Retourne sous forme d&#8217;un tableau les valeurs des champs des tables indiquées qui vérifientla condition fournie Ex: SELECT nom,prenom FROM users WHERE age&lt;20 ORDER BY nom ASC LIMIT 0,30Les requêtes INSERT et DELETE Permettent de remplir et vider une table INSERT INTO table (champs) VALUES (valeurs) ex: INSERT INTO users (`nom`,`prenom`,`age`)VALUES (&#8216;dupont&#8217;,'roger&#8217;,&#8217;42&#8242;) DELETE FROM table WHERE condition ex: DELETE FROM users WHERE nom=&#8217;dupont&#8217;La requête UPDATE Permet de modifier les données d&#8217;une table UPDATE nom_table SET affectation WHERE conditionex: UPDATE users SET age=40 WHERE nom=&#8217;dupontUPDATE users SET prenom=&#8217;maurice&#8217; AND age=50 WHEREnom=&#8217;dupont&#8217;Les requêtes CREATE et DROP Permettent de créer et supprimer des tablesCREATE TABLE nom_table ( structure ) OPTIONS ex: CREATE TABLE `users` (`id` smallint(4) NOT NULL auto_increment,`nom` varchar(30) NOT NULL default &nbsp;&raquo;,`prenom`varchar(30) NOT NULL default &nbsp;&raquo;,`age` smallint(4) NOT NULLPRIMARY KEY (`id`)) TYPE=MyISAM AUTO_INCREMENT=1 ; ex: DROP TABLE `users` IF EXISTSLes requêtes TRUNCATE et ALTER TRUNCATE permet de vider une table (mais conservela table et sa structure)TRUNCATE TABLE table ALTER permet de modifier une tableex: ALTER TABLE nom_table ADD champ type AFTER champex: ALTER TABLE nom_table DROP champLes autres instructions INNER JOIN: produit cartésien pour joindre deux tables HAVING: permet de faire des sous-groupes Fonctions: count, sum, average, passwordLiens utiles www.php.net: le manuel officiel du PHP www.mysql.net: le manuel officiel de MySQLA vous de jouer !</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/macherif.wordpress.com/45/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/macherif.wordpress.com/45/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/macherif.wordpress.com/45/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/macherif.wordpress.com/45/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/macherif.wordpress.com/45/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/macherif.wordpress.com/45/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/macherif.wordpress.com/45/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/macherif.wordpress.com/45/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/macherif.wordpress.com/45/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/macherif.wordpress.com/45/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/macherif.wordpress.com/45/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/macherif.wordpress.com/45/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/macherif.wordpress.com/45/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/macherif.wordpress.com/45/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=macherif.wordpress.com&amp;blog=11173678&amp;post=45&amp;subd=macherif&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://macherif.wordpress.com/2010/01/29/formation-php/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/472cd39002ff2e03bd10e3b7488c2ee1?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">macherif</media:title>
		</media:content>
	</item>
		<item>
		<title>Apprendre le Javascript par &#171; Van Lancker Luc &#187;</title>
		<link>http://macherif.wordpress.com/2010/01/28/apprendre-le-javascript/</link>
		<comments>http://macherif.wordpress.com/2010/01/28/apprendre-le-javascript/#comments</comments>
		<pubDate>Thu, 28 Jan 2010 22:44:43 +0000</pubDate>
		<dc:creator>macherif</dc:creator>
				<category><![CDATA[Cours FR]]></category>
		<category><![CDATA[Cours java script]]></category>
		<category><![CDATA[cours javascript]]></category>
		<category><![CDATA[documentation javascript]]></category>
		<category><![CDATA[documentation js]]></category>
		<category><![CDATA[js]]></category>
		<category><![CDATA[tutoriel javascript]]></category>

		<guid isPermaLink="false">http://macherif.wordpress.com/?p=39</guid>
		<description><![CDATA[Bref préambule
Partagés entre le copier/coller de Javascripts glanés de gauche à droite sur le Web, furieux de voir échouer les
quelques modifications apportées, dépités devant la documentation à priori hermétique de Netscape et un peu
"nuls" en programmation, vous souhaitez peut-être comme moi comprendre un peu plus ce langage qui met un
peu de piment dans les pages Html. Ce tutorial vous est destiné.
L'apprentissage d'un langage de programmation, fut-il aussi simpliste que Javascript (c'est pourtant bien ce que
prétendent certains!!!), implique la connaissance d'une nébuleuse d'éléments avant de pouvoir mettre en oeuvre
ceux-ci. Pour des raisons pédagogiques, nous avons conçu ce tutorial pour une lecture à deux niveaux :
· un niveau débutant qui rassemble les notions de base de Javascript.
· un niveau avancé (noté + ) pour aller un peu plus loin dans ces concepts (sans prétendre cependant
à l'expertise).
L'auteur vous souhaite un apprentissage fructueux de Javascript.<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=macherif.wordpress.com&amp;blog=11173678&amp;post=39&amp;subd=macherif&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<div id="_mcePaste" style="text-align:center;"><strong><span style="text-decoration:underline;"><span style="color:#ff6600;">Apprendre le Javascript</span></span></strong></div>
<div id="_mcePaste" style="text-align:center;"><strong><span style="text-decoration:underline;"><span style="color:#ff6600;">www.ccim.be/ccim328/js/index.htm</span></span></strong></div>
<div style="text-align:center;"><strong><span style="text-decoration:underline;"><span style="color:#ff6600;"><a href="http://macherif.files.wordpress.com/2010/01/js_doc.pdf">apprendre le javascript version PDF</a></span></span></strong></div>
<div id="_mcePaste">Bref préambule</div>
<div id="_mcePaste">Partagés entre le copier/coller de Javascripts glanés de gauche à droite sur le Web, furieux de voir échouer les</div>
<div id="_mcePaste">quelques modifications apportées, dépités devant la documentation à priori hermétique de Netscape et un peu</div>
<div id="_mcePaste">&laquo;&nbsp;nuls&nbsp;&raquo; en programmation, vous souhaitez peut-être comme moi comprendre un peu plus ce langage qui met un</div>
<div id="_mcePaste">peu de piment dans les pages Html. Ce tutorial vous est destiné.</div>
<div id="_mcePaste">L&#8217;apprentissage d&#8217;un langage de programmation, fut-il aussi simpliste que Javascript (c&#8217;est pourtant bien ce que</div>
<div id="_mcePaste">prétendent certains!!!), implique la connaissance d&#8217;une nébuleuse d&#8217;éléments avant de pouvoir mettre en oeuvre</div>
<div id="_mcePaste">ceux-ci. Pour des raisons pédagogiques, nous avons conçu ce tutorial pour une lecture à deux niveaux :</div>
<div id="_mcePaste">· un niveau débutant qui rassemble les notions de base de Javascript.</div>
<div id="_mcePaste">· un niveau avancé (noté + ) pour aller un peu plus loin dans ces concepts (sans prétendre cependant</div>
<div id="_mcePaste">à l&#8217;expertise).</div>
<div id="_mcePaste">L&#8217;auteur vous souhaite un apprentissage fructueux de Javascript.</div>
<div id="_mcePaste">Chapitre 1 : Javascript</div>
<div id="_mcePaste">Javascript est un langage de scripts</div>
<div id="_mcePaste">qui incorporé aux balises Html,</div>
<div id="_mcePaste">permet d&#8217;améliorer la présentation</div>
<div id="_mcePaste">et l&#8217;interactivité des pages Web.</div>
<div id="_mcePaste">Javascript est donc une extension du code Html des pages Web. Les scripts, qui s&#8217;ajoutent ici aux balises Html,</div>
<div id="_mcePaste">peuvent en quelque sorte être comparés aux macros d&#8217;un traitement de texte.</div>
<div id="_mcePaste">Ces scripts vont être gérés et exécutés par le browser lui-même sans devoir faire appel aux ressources du</div>
<div id="_mcePaste">serveur. Ces instructions seront donc traitées en direct et surtout sans retard par le navigateur.</div>
<div id="_mcePaste">Javascript a été initialement développé par Netscape et s&#8217;appelait alors LiveScript. Adopté à la fin de l&#8217;année</div>
<div id="_mcePaste">1995, par la firme Sun (qui a aussi développé Java), il prit alors son nom de Javascript.</div>
<div id="_mcePaste">Javascript n&#8217;est donc pas propre aux navigateurs de Netscape (bien que cette firme en soit un fervent défenseur).</div>
<div id="_mcePaste">Microsoft l&#8217;a d&#8217;ailleurs aussi adopté à partir de son Internet Explorer 3. On le retrouve, de façon améliorée, dans</div>
<div id="_mcePaste">Explorer 4.</div>
<div id="_mcePaste">Les versions de Javascript se sont succédées avec les différentes versions de Netscape : Javascript pour Netscape</div>
<div id="_mcePaste">2, Javascript 1.1 pour Netscape 3 et Javascript 1.2 pour Netscape 4. Ce qui n&#8217;est pas sans poser certains</div>
<div id="_mcePaste">problèmes de compatibilité, selon le browser utilisé, des pages comportant du code Javascript. Mais consolons</div>
<div id="_mcePaste">nous en constatant qu&#8217;avec MSIE 3.0 ou 4.0 et la famille Netscape, une très large majorité d&#8217;internautes pourra</div>
<div id="_mcePaste">lire les pages comprenant du Javascript.</div>
<div id="_mcePaste">L&#8217;avenir de Javascript est entre les mains des deux grands navigateurs du Web et en partie lié à la guerre que se</div>
<div id="_mcePaste">livrent Microsoft et Netscape. On s&#8217;accorde à prédire un avenir prometteur à ce langage surtout de par son</div>
<div id="_mcePaste">indépendance vis à vis des ressources du serveur.</div>
<p>Apprendre le Javascriptwww.ccim.be/ccim328/js/index.htmBref préambulePartagés entre le copier/coller de Javascripts glanés de gauche à droite sur le Web, furieux de voir échouer lesquelques modifications apportées, dépités devant la documentation à priori hermétique de Netscape et un peu&nbsp;&raquo;nuls&nbsp;&raquo; en programmation, vous souhaitez peut-être comme moi comprendre un peu plus ce langage qui met unpeu de piment dans les pages Html. Ce tutorial vous est destiné.L&#8217;apprentissage d&#8217;un langage de programmation, fut-il aussi simpliste que Javascript (c&#8217;est pourtant bien ce queprétendent certains!!!), implique la connaissance d&#8217;une nébuleuse d&#8217;éléments avant de pouvoir mettre en oeuvreceux-ci. Pour des raisons pédagogiques, nous avons conçu ce tutorial pour une lecture à deux niveaux :· un niveau débutant qui rassemble les notions de base de Javascript.· un niveau avancé (noté + ) pour aller un peu plus loin dans ces concepts (sans prétendre cependantà l&#8217;expertise).L&#8217;auteur vous souhaite un apprentissage fructueux de Javascript.Chapitre 1 : JavascriptJavascript est un langage de scriptsqui incorporé aux balises Html,permet d&#8217;améliorer la présentationet l&#8217;interactivité des pages Web.Javascript est donc une extension du code Html des pages Web. Les scripts, qui s&#8217;ajoutent ici aux balises Html,peuvent en quelque sorte être comparés aux macros d&#8217;un traitement de texte.Ces scripts vont être gérés et exécutés par le browser lui-même sans devoir faire appel aux ressources duserveur. Ces instructions seront donc traitées en direct et surtout sans retard par le navigateur.Javascript a été initialement développé par Netscape et s&#8217;appelait alors LiveScript. Adopté à la fin de l&#8217;année1995, par la firme Sun (qui a aussi développé Java), il prit alors son nom de Javascript.Javascript n&#8217;est donc pas propre aux navigateurs de Netscape (bien que cette firme en soit un fervent défenseur).Microsoft l&#8217;a d&#8217;ailleurs aussi adopté à partir de son Internet Explorer 3. On le retrouve, de façon améliorée, dansExplorer 4.Les versions de Javascript se sont succédées avec les différentes versions de Netscape : Javascript pour Netscape2, Javascript 1.1 pour Netscape 3 et Javascript 1.2 pour Netscape 4. Ce qui n&#8217;est pas sans poser certainsproblèmes de compatibilité, selon le browser utilisé, des pages comportant du code Javascript. Mais consolonsnous en constatant qu&#8217;avec MSIE 3.0 ou 4.0 et la famille Netscape, une très large majorité d&#8217;internautes pourralire les pages comprenant du Javascript.L&#8217;avenir de Javascript est entre les mains des deux grands navigateurs du Web et en partie lié à la guerre que selivrent Microsoft et Netscape. On s&#8217;accorde à prédire un avenir prometteur à ce langage surtout de par sonindépendance vis à vis des ressources du serveur.</p>
<p>Chapitre 2 : Javascript n&#8217;est pas Java</p>
<p>Il importe de savoir que Javascript est totalement différent de Java. Bien que les deux soient utilisés pour créer</p>
<p>des pages Web évoluées, bien que les deux reprennent le terme Java (café en américain), nous avons là deux</p>
<p>outils informatiques bien différents.</p>
<p>Javascript Java</p>
<p>Code intégré dans la page Html Module (applet) distinct de la page Html</p>
<p>Code interprété par le browser au moment de</p>
<p>l&#8217;exécution</p>
<p>Code source compilé avant son exécution</p>
<p>Codes de programmation simples mais pour des</p>
<p>applications limitées</p>
<p>Langage de programmation beaucoup plus</p>
<p>complexe mais plus performant</p>
<p>Permet d&#8217;accéder aux objets du navigateur N&#8217;accède pas aux objets du navigateur</p>
<p>Confidentialité des codes nulle (code source visible) Sécurité (code source compilé)</p>
<p>Plus simplement :</p>
<p>· Javascript est plus simple à mettre en oeuvre car c&#8217;est du code que vous ajouterez à votre page écrite en Html</p>
<p>avec par exemple un simple éditeur de texte comme Notepad. Java pour sa part, nécessite une compilation</p>
<p>préalable de votre code.</p>
<p>· Le champ d&#8217;application de Javascript est somme toute assez limité alors qu&#8217;en Java vous pourrez en principe</p>
<p>tout faire.</p>
<p>· Comme votre code Javascript est inclus dans votre page Html, celui-ci est visible et peut être copié par tout</p>
<p>le monde (view source). Ce qui pour les entreprises (et les paranoïaques) est assez pénalisant. Par contre, en</p>
<p>Java, votre code source est broyé par le compilateur et est ainsi indéchiffrable.</p>
<p>· Même si c&#8217;est une appréciation personnelle, les codes Javascript ne ralentissent pas le chargement de la page</p>
<p>alors que l&#8217;appel à une applet Java peut demander quelques minutes de patience supplémentaire à votre</p>
<p>lecteur.</p>
<p>Chapitre 3 : Un peu de théorie objet</p>
<p>3.1 Les objets et leur hiérarchie</p>
<p>En bon internaute, vous voyez sur votre écran une page Web.</p>
<p>Javascript va diviser cette page en objets et surtout va vous permettre d&#8217;accéder à ces objets, d&#8217;en retirer des</p>
<p>informations et de les manipuler.</p>
<p>Voyons d&#8217;abord une illustration des différents objets qu&#8217;une page peut contenir.</p>
<p>Vous avez chargé la page suivante :</p>
<p>Cette page s&#8217;affiche dans une fenêtre. C&#8217;est l&#8217;objet fenêtre.</p>
<p>3</p>
<p>Dans cette fenêtre, il y a un document Html. C&#8217;est l&#8217;objet document. Autrement dit (et c&#8217;est là que l&#8217;on voit</p>
<p>apparaître la notion de la hiérarchie des objets Javacript), l&#8217;objet fenêtre contient l&#8217;objet document.</p>
<p>Dans ce document, on trouve un formulaire au sens Html. C&#8217;est l&#8217;objet formulaire. Autrement dit, l&#8217;objet fenêtre</p>
<p>contient un objet document qui lui contient un objet formulaire.</p>
<p>Dans ce document, on trouve trois objets. Des boutons radio, un bouton classique et une zone de texte. Ce sont</p>
<p>respectivement l&#8217;objet radio, l&#8217;objet bouton, l&#8217;objet texte. Autrement dit l&#8217;objet fenêtre contient l&#8217;objet document</p>
<p>qui contient l&#8217;objet formulaire qui contient à son tour l&#8217;objet radio, l&#8217;objet fenêtre contient l&#8217;objet document qui</p>
<p>contient l&#8217;objet formulaire qui contient à son tour l&#8217;objet bouton et l&#8217;objet fenêtre contient l&#8217;objet document qui</p>
<p>contient l&#8217;objet formulaire qui contient à son tour l&#8217;objet texte.</p>
<p>4</p>
<p>La hiérarchie des objets de cet exemple est donc</p>
<p>radio</p>
<p>fenêtre document formulaire bouton</p>
<p>texte</p>
<p>Pour accéder à un objet (vous l&#8217;avez peut-être déjà deviné), il faudra donner le chemin complet de l&#8217;objet en</p>
<p>allant du contenant le plus extérieur à l&#8217;objet à l&#8217;objet référencé.</p>
<p>Soit par exemple pour le bouton radio &laquo;&nbsp;semaine&nbsp;&raquo; : (window).document.form.radio[0].</p>
<p>Nous avons mis l&#8217;objet window entre parenthèses car comme il occupe la première place dans la hiérarchie, il</p>
<p>est repris par défaut par Javascript et devient donc facultatif.</p>
<p>Et enfin pour les puristes, Javascript n&#8217;est pas à proprement parler un langage orienté objet tel que C++ ou Java.</p>
<p>On dira plutôt que Javascript est un langage basé sur les objets.</p>
<p>3.2 Les propriétés des objets</p>
<p>Une propriété est un attribut, une caractéristique, une description de l&#8217;objet. Par exemple, l&#8217;objet volant d&#8217;une</p>
<p>voiture a comme propriétés qu&#8217;il peut être en bois ou en cuir. L&#8217;objet livre a comme propriétés son auteur, sa</p>
<p>maison d&#8217;édition, son titre, son numéro ISBN, etc.</p>
<p>De même les objets Javascript ont des propriétés personnalisées. Dans le cas des boutons radio, une de ses</p>
<p>propriétés est, par exemple, sa sélection ou sa non-sélection (checked en anglais).</p>
<p>En Javascript, pour accéder aux propriétés, on utilise la syntaxe :</p>
<p>nom_de_l&#8217;objet.nom_de_la_propriété</p>
<p>Dans le cas du bouton radio &laquo;&nbsp;semaine&nbsp;&raquo;, pour tester la propriété de sélection, on écrira</p>
<p>document.form.radio[0].checked</p>
<p>Chapitre 4 : Vos outils pour le Javascript</p>
<p>Pour apprendre et exploiter le Javascript, il vous faut :</p>
<p>1. un browser qui reconnaît le Javascript.</p>
<p>2. une solide connaissance du Html</p>
<p>3. un simple éditeur de texte</p>
<p>4.1 Un browser compatible Javascript</p>
<p>Uniquement Netscape et Microsoft vous proposent des navigateurs Javascript &laquo;&nbsp;enabled&nbsp;&raquo;. Pour Microsoft à partir</p>
<p>de MSIE Explorer 3.0 et Netscape à partir de Netscape Navigator 2.0.</p>
<p>Par contre, il faut être attentif aux versions de Javascript exploitées par ces browers.</p>
<p>5</p>
<p>Netscape 2.0 Javascript (baptisé à posteriori 1.0)</p>
<p>Netscape 3.0 Javascript 1.1</p>
<p>Netscape 4.0</p>
<p>(Communicator)</p>
<p>Javascript 1.2</p>
<p>Explorer 3.0 Quelque chose qui ressemble à du Javascript 1.0</p>
<p>Explorer 4.0 Javascript 1.2</p>
<p>Il faut bien admettre que Javascript est plutôt l&#8217;affaire de Netscape et que vous courrez au devant d&#8217;une</p>
<p>collection d&#8217;ennuis en utilisant Explorer 3 pour le Javascript.</p>
<p>4.2 Un solide bagage en Html</p>
<p>Comme le code du Javascript vient s&#8217;ajouter au &laquo;&nbsp;code&nbsp;&raquo; du langage Html, une connaissance approfondie des</p>
<p>balises ou tags Html est souhaitable sinon indispensable. Ainsi les utilisateurs d&#8217;éditeurs Html &laquo;&nbsp;whsiwyg&nbsp;&raquo; ou</p>
<p>autres &laquo;&nbsp;publishers&nbsp;&raquo; Html risquent de devoir retourner à leurs chères études.</p>
<p>Je ne peux que vous recommander un tutorial du langage Html du même auteur. &laquo;&nbsp;&nbsp;&raquo;Apprendre le langage Html&nbsp;&raquo;</p>
<p>à l&#8217;adresse www.ccim.be/ccim328/html/index.htm</p>
<p>4.3 Un bon éditeur de texte</p>
<p>Une page Html n&#8217;est que du texte. Le code Javascript n&#8217;est lui aussi que du texte. Quoi de plus simple qu&#8217;un</p>
<p>éditeur de &#8230; texte comme le Notepad de Windows pour inclure votre Javascript dans votre page Html. Un</p>
<p>éditeur Html de la première génération (un bon vieil éditeur qui fait encore apparaître les balises), comme</p>
<p>HTML Notepad, fait également bien l&#8217;affaire.</p>
<p>De plus en plus d&#8217;éditeurs Html whsiwyg proposent une fenêtre Javascript. Attention ! Si certains semblent bien</p>
<p>faits comme WebExpert 2 (en français) avec d&#8217;autres, il arrive que le code Javascript introduit soit modifié par</p>
<p>l&#8217;éditeur comme FrontPage ou Netscape Gold. A vos expériences&#8230;</p>
<p>Ajoutons que l&#8217;on commence à voir des programmes &laquo;&nbsp;Visual Javascript&nbsp;&raquo; mais ils me semblent très lourds à</p>
<p>gérer pour n&#8217;ajouter finalement que quelques lignes. Affaire à suivre&#8230;</p>
<p>Chapitre 5 : Le Javascript minimum</p>
<p>5.1 La balise &lt;SCRIPT&gt;</p>
<p>De ce qui précède, vous savez déjà que votre script vient s&#8217;ajouter à votre page Web.</p>
<p>Le langage Html utilise des tags ou balises pour &laquo;&nbsp;dire&nbsp;&raquo; au browser d&#8217;afficher une portion de texte en gras, en</p>
<p>italique, etc.</p>
<p>Dans la logique du langage Html, il faut donc signaler au browser par une balise, que ce qui suit est un script et</p>
<p>que c&#8217;est du Javascript (et non du VBScript). C&#8217;est la balise</p>
<p>&lt;SCRIPT LANGUAGE=&nbsp;&raquo;Javascript&nbsp;&raquo;&gt;.</p>
<p>De même, il faudra informer le browser de la fin du script.</p>
<p>C&#8217;est la balise &lt;/SCRIPT&gt;.</p>
<p>5.2 Les commentaires</p>
<p>Il vous sera peut-être utile d&#8217;inclure des commentaires personnels dans vos codes Javascript. C&#8217;est même</p>
<p>vivement recommandé comme pour tous les langages de programmation (mais qui le fait vraiment ?).</p>
<p>Javascript utilise les conventions utilisées en C et C++ soit</p>
<p>// commentaire</p>
<p>Tout ce qui est écrit entre le // et la fin de la ligne sera ignoré.</p>
<p>6</p>
<p>Il sera aussi possible d&#8217;inclure des commentaires sur plusieurs lignes avec le code</p>
<p>/* commentaire sur</p>
<p>plusieurs lignes */</p>
<p>Ne confondez pas les commentaires Javascript et les commentaires Html</p>
<p>(pour rappel &lt;!&#8211; &#8230;&#8211;&gt;).</p>
<p>5.3 Masquer le script pour les anciens browsers</p>
<p>Les browsers qui ne comprennent pas le Javascript (et il y en a encore) ignorent la balise &lt;script&gt; et vont</p>
<p>essayer d&#8217;afficher le code du script sans pouvoir l&#8217;exécuter. Pour éviter l&#8217;affichage peu esthétique de ses</p>
<p>inscriptions cabalistiques, on utilisera les balises de commentaire du langage Html &lt;!&#8211; &#8230; &#8211;&gt;.</p>
<p>Votre premier Javasript ressemblera à ceci :</p>
<p>&lt;SCRIPT LANGUAGE=&nbsp;&raquo;javascript&nbsp;&raquo;&gt;</p>
<p>&lt;!&#8211; Masquer le script pour les anciens browsers</p>
<p>&#8230;</p>
<p>programme Javascript</p>
<p>&#8230;</p>
<p>// Cesser de masquer le script &#8211;&gt;</p>
<p>&lt;/SCRIPT&gt;</p>
<p>5.4 Où inclure le code en Javascript ?</p>
<p>Le principe est simple. Il suffit de respecter les deux principes suivants :</p>
<p>- n&#8217;importe où.</p>
<p>- mais là où il le faut.</p>
<p>Le browser traite votre page Html de haut en bas (y compris vos ajoutes en Javascript). Par conséquent, toute</p>
<p>instruction ne pourra être exécutée que si le browser possède à ce moment précis tous les éléments nécessaires à</p>
<p>son exécution. Ceux-ci doivent donc être déclarés avant ou au plus tard lors de l&#8217;instruction.</p>
<p>Pour s&#8217;assurer que le programme script est chargé dans la page et prêt à fonctionner à toute intervention de</p>
<p>votre visiteur (il y a des impatients) on prendra l&#8217;habitude de déclarer systématiquement (lorsque cela sera</p>
<p>possible) un maximum d&#8217;éléments dans les balises d&#8217;en-tête soit entre &lt;HEAD&gt; et &lt;/HEAD&gt; et avant la balise</p>
<p>&lt;BODY&gt;. Ce sera le cas par exemple pour les fonctions.</p>
<p>Rien n&#8217;interdit de mettre plusieurs scripts dans une même page Html.</p>
<p>Il faut noter que l&#8217;usage de la balise script n&#8217;est pas toujours obligatoire. Ce sera le cas des événements</p>
<p>Javascript (par exemple onClick) où il faut simplement insérer le code à l&#8217;intérieur de la commande Html</p>
<p>comme un attribut de celle-ci. L&#8217;événement fera appel à la fonction Javascript lorsque la commande Html sera</p>
<p>activée. Javascript fonctionne alors en quelque sorte comme une extension du langage Html.</p>
<p>5.5 Une première instruction Javascript</p>
<p>Sans vraiment entrer dans les détails, voyons une première instruction Javascript (en fait une méthode de l&#8217;objet</p>
<p>window) soit l&#8217;instruction alert().</p>
<p>alert(&laquo;&nbsp;votre texte&nbsp;&raquo;);</p>
<p>Cette instruction affiche un message (dans le cas présent votre texte entre les guillemets) dans une boite de</p>
<p>dialogue pourvue d&#8217;un bouton OK. Pour continuer dans la page, le lecteur devra cliquer ce bouton.</p>
<p>Vous remarquerez des points-virgules à la fin de chaque instruction Javascript (ce qui n&#8217;est pas sans rappeler le</p>
<p>C et le C++). Le Javascript, bon enfant, est moins strict que ces autres langages et ne signale généralement pas</p>
<p>de message d&#8217;erreur s&#8217;ils venaient à manquer. On peut considérer que le point-virgule est optionnel et qu&#8217;il n&#8217;est</p>
<p>obligatoire que lorsque vous écrivez plusieurs instructions sur une même ligne. On recommande quand même</p>
<p>vivement dans la littérature d&#8217;en mettre de façon systématique.</p>
<p>7</p>
<p>Javascript est &laquo;&nbsp;bon enfant&nbsp;&raquo; car il n&#8217;est pas toujours trop strict sur la syntaxe et passe au-dessus de certaines</p>
<p>libertés prises avec celle-ci. Très bien! Mais ce caractère &laquo;&nbsp;bon enfant&nbsp;&raquo; est à double tranchant car parfois, pour</p>
<p>une raison indéterminée, il devient dans certaines situations plus rigoureux et alors bonne chance pour</p>
<p>débugger votre script.</p>
<p>5.6 Votre première page Html avec du Javascript</p>
<p>&lt;HTML&gt;</p>
<p>&lt;HEAD&gt;</p>
<p>&lt;TITLE&gt;Mon premier Javascript&lt;/TITLE&gt;</p>
<p>&lt;/HEAD&gt;</p>
<p>&lt;BODY&gt;</p>
<p>Bla-bla en Html</p>
<p>&lt;SCRIPT LANGUAGE=&nbsp;&raquo;Javascript&nbsp;&raquo;&gt;</p>
<p>&lt;!&#8211;</p>
<p>alert(&laquo;&nbsp;votre texte&nbsp;&raquo;);</p>
<p>//&#8211;&gt;</p>
<p>&lt;/SCRIPT&gt;</p>
<p>Suite bla-bla en Html</p>
<p>&lt;/BODY&gt;</p>
<p>&lt;/HTML&gt;</p>
<p>Html normal</p>
<p>&#8230;</p>
<p>&#8230;</p>
<p>&#8230;</p>
<p>&#8230;</p>
<p>&#8230;</p>
<p>Début du script</p>
<p>Masquer le script</p>
<p>Script</p>
<p>Fin de masquer</p>
<p>Fin du script</p>
<p>Html normal</p>
<p>&#8230;</p>
<p>&#8230;</p>
<p>5.7 Remarques</p>
<p>Javascript est case sensitive. Ainsi il faudra écrire alert() et non Alert(). Pour l&#8217;écriture des instructions</p>
<p>Javascript, on utilisera l&#8217;alphabet ASCII classique (à 128 caractères) comme en Html. Les caractères accentués</p>
<p>comme é ou à ne peuvent être employés que dans les chaînes de caractères c.-à-d. dans votre texte de notre</p>
<p>exemple.</p>
<p>Les guillemets &nbsp;&raquo; et l&#8217;apostrophe &#8216; font partie intégrante du langage Javascript. On peut utiliser l&#8217;une ou l&#8217;autre</p>
<p>forme à condition de ne pas les mélanger. Ainsi alert(&laquo;&nbsp;&#8230;&#8217;) donnera un message d&#8217;erreur. Si vous souhaiter</p>
<p>utiliser des guillemets dans vos chaînes de caractères, tapez \&nbsp;&raquo; ou \&#8217; pour les différencier vis à vis du</p>
<p>compilateur.</p>
<p>+5.8 Versions du langage Javascript</p>
<p>Avec les différentes versions déjà existantes (Javascript 1.0, Javascript 1.1 et Javascript 1.2), on peut imaginer</p>
<p>des scripts adaptés aux différentes versions mais surtout aux différents navigateurs ;</p>
<p>&lt;SCRIPT LANGUAGE=&nbsp;&raquo;Javascript&nbsp;&raquo;&gt;</p>
<p>// programme pour Netscape 2 et Explorer 3</p>
<p>var version=&nbsp;&raquo;1.0&#8243;;</p>
<p>&lt;/SCRIPT&gt;</p>
<p>&lt;SCRIPT LANGUAGE=&nbsp;&raquo;Javascript1.1&#8243;&gt;</p>
<p>// programme pour Netcape 3 et Explorer 4</p>
<p>var version=1.1;</p>
<p>&lt;/SCRIPT&gt;</p>
<p>&lt;SCRIPT LANGUAGE=&nbsp;&raquo;Javascript1.2&#8243;&gt;</p>
<p>// programme pour Netscape 4</p>
<p>var version=1.2;</p>
<p>&lt;/SCRIPT&gt;</p>
<p>&lt;SCRIPT LANGUAGE=&nbsp;&raquo;Javascript&nbsp;&raquo;&gt;</p>
<p>document.write(&#8216;Votre browser supporte le Javascript &#8216; + version);</p>
<p>&lt;/SCRIPT&gt;</p>
<p>8</p>
<p>+5.9 Extension .js pour scripts externes</p>
<p>Il est possible d&#8217;utiliser des fichiers externes pour les programmes Javascript. On peut ainsi stocker les scripts</p>
<p>dans des fichiers distincts (avec l&#8217;extension .js) et les appeler à partir d&#8217;un fichier Html. Le concepteur peut de</p>
<p>cette manière se constituer une bibliothèque de script et les appeler à la manière des #include du C ou C++. La</p>
<p>balise devient</p>
<p>&lt;SCRIPT LANGUAGE=&#8217;javascript&#8217; SRC=&#8217;http://site.com/javascript.js&#8217;&gt;&lt;/SCRIPT&gt;</p>
<p>+5.10 Toujours des commentaires</p>
<p>Outre les annotations personnelles, les commentaires peuvent vous être d&#8217;une utilité certaine en phase de</p>
<p>débuggage d&#8217;un script pour isoler (sans effacer) une ligne suspecte.</p>
<p>Pour les esprits compliqués, notons que les commentaires ne peuvent être imbriqués sous peine de message</p>
<p>d&#8217;erreur. La formulation suivante est donc à éviter :</p>
<p>/* script réalisé ce jour /* jour mois */</p>
<p>et testé par nos soins*/</p>
<p>+5.11 Alert() &#8230; rouge</p>
<p>Joujou des débutants en Javascript, cette petite fenêtre est à utiliser avec parcimonie pour attirer l&#8217;attention du</p>
<p>lecteur pour des choses vraiment importantes. Et puis, elles ne sont vraiment pas destinées à raconter sa vie.</p>
<p>Javascript met à votre disposition la possibilité de créer de nouvelles fenêtres de la dimension de votre choix qui</p>
<p>apparaissent un peu comme les popup des fichiers d&#8217;aide. Nous les étudierons plus loin dans l&#8217;objet Window.</p>
<p>Alert() est une méthode de l&#8217;objet Window. Pour se conformer à la notation classique</p>
<p>nom_de_l&#8217;objet.nom_de_la_propriété, on aurait pu noter window.alert(). Window venant en tête des objets</p>
<p>Javascript, celui-ci est repris par défaut par l&#8217;interpréteur et devient en quelque sorte facultatif.</p>
<p>Si vous souhaitez que votre texte de la fenêtre alert() s&#8217;inscrive sur plusieurs lignes, il faudra utiliser le caractère</p>
<p>spécial /n pour créer une nouvelle ligne.</p>
<p>Chapitre 6 : Afficher du texte</p>
<p>6.1 Méthode de l&#8217;objet document</p>
<p>Rappelez-vous&#8230; Nous avions montré que ce qui apparaît sur votre écran, peut être &laquo;&nbsp;découpé&nbsp;&raquo; en objets et que</p>
<p>Javascript allait vous donner la possibilité d&#8217;accéder à ces objets (Un peu de théorie objet). La page Html qui</p>
<p>s&#8217;affiche dans la fenêtre du browser est un objet de type document.</p>
<p>A chaque objet Javascript, le concepteur du langage a prévu un ensemble de méthodes (ou fonctions dédiées à</p>
<p>cet objet) qui lui sont propres. A la méthode document, Javascript a dédié la méthode &laquo;&nbsp;écrire dans le</p>
<p>document&nbsp;&raquo;, c&#8217;est la méthode write().</p>
<p>L&#8217;appel de la méthode se fait selon la notation :</p>
<p>nom_de_l&#8217;objet.nom_de_la_méthode</p>
<p>Pour appeler la méthode write() du document, on notera</p>
<p>document.write();</p>
<p>6.2 La méthode write()</p>
<p>La syntaxe est assez simple soit</p>
<p>write(&laquo;&nbsp;votre texte&nbsp;&raquo;);</p>
<p>On peut aussi écrire une variable, soit la variable resultat,</p>
<p>9</p>
<p>write(resultat);</p>
<p>Pour associer du texte (chaînes de caractères) et des variables, on utilise l&#8217;instruction write(&laquo;&nbsp;Le résultat est &nbsp;&raquo; +</p>
<p>resultat);</p>
<p>On peut utiliser les balises Html pour agrémenter ce texte</p>
<p>write(&laquo;&nbsp;&lt;B&gt;Le résultat est&lt;/B&gt;&nbsp;&raquo; + resultat); ou</p>
<p>write (&laquo;&nbsp;&lt;B&gt;&nbsp;&raquo; + &laquo;&nbsp;Le résultat est &nbsp;&raquo; + &laquo;&nbsp;&lt;/B&gt;&nbsp;&raquo; + resultat)</p>
<p>6.3 Exemple (classique !)</p>
<p>On va écrire du texte en Html et en Javascript.</p>
<p>&lt;HTML&gt;</p>
<p>&lt;BODY&gt;</p>
<p>&lt;H1&gt;Ceci est du Html&lt;/H1&gt;</p>
<p>&lt;SCRIPT LANGUAGE=&nbsp;&raquo;Javascript&nbsp;&raquo;&gt;</p>
<p>&lt;!&#8211;</p>
<p>document.write(&laquo;&nbsp;&lt;H1&gt;Et ceci du Javascript&lt;/H1&gt;&nbsp;&raquo;);</p>
<p>//&#8211;&gt;</p>
<p>&lt;/SCRIPT&gt;</p>
<p>&lt;/BODY&gt;</p>
<p>&lt;/HTML&gt;</p>
<p>Ce qui donnera comme résultat :</p>
<p>Ceci est du Html</p>
<p>Et ceci du Javascript</p>
<p>+ 6.4 L&#8217;instruction writeln()</p>
<p>La méthode writeln() est fort proche de write() à ceci près qu&#8217;elle ajoute un retour chariot à la fin des caractères</p>
<p>affichés par l&#8217;instruction. Ce qui n&#8217;a aucun effet en Html. Pour faire fonctionner write() Il faut l&#8217;inclure dans des</p>
<p>balises &lt;PRE&gt;.</p>
<p>&lt;PRE&gt;</p>
<p>&lt;SCRIPT LANGUAGE=&nbsp;&raquo;Javascript&nbsp;&raquo;&gt;</p>
<p>&lt;&#8211;</p>
<p>document.writeln(&laquo;&nbsp;Ligne 1&#8243;);</p>
<p>document.writeln(&laquo;&nbsp;Ligne 2&#8243;);</p>
<p>//&#8211;&gt;</p>
<p>&lt;/SCRIPT&gt;</p>
<p>&lt;/PRE&gt;</p>
<p>Autrement dit l&#8217;emploi de writeln() est anecdotique et on utilise simplement le tag &lt;BR&gt; avec la méthode</p>
<p>write().</p>
<p>+6.5 De la belle écriture en Javascript&#8230;</p>
<p>6.5.1 variable.big();</p>
<p>L&#8217;emploi de .big() affichera la variable comme si elle était comprise entre les balises Html &lt;BIG&gt;&lt;/BIG&gt;.</p>
<p>Les quatre instructions Javascript suivantes sont équivalentes :</p>
<p>str=&nbsp;&raquo;Something&nbsp;&raquo;; (str est une variable)</p>
<p>document.write(&laquo;&nbsp;&lt;BIG&gt;&nbsp;&raquo;+str+&nbsp;&raquo;&lt;/BIG&gt;&nbsp;&raquo;);</p>
<p>document.write(&#8216;&lt;BIG&gt;Something&lt;/BIG&gt;&#8217;);</p>
<p>document.write(str.big());</p>
<p>10</p>
<p>document.write(&laquo;&nbsp;Something&nbsp;&raquo;.big());</p>
<p>6.5.2 variable.small();</p>
<p>L&#8217;emploi de .small() affichera la variable comme si elle était comprise entre les balises Html &lt;SMALL&gt;</p>
<p>&lt;/SMALL&gt;.</p>
<p>Les quatre instructions Javascript suivantes sont équivalentes :</p>
<p>str=&nbsp;&raquo;Something&nbsp;&raquo;;</p>
<p>document.write(&laquo;&nbsp;&lt;SMALL&gt;&nbsp;&raquo;+str +&nbsp;&raquo;&lt;/SMALL&gt;&nbsp;&raquo;);</p>
<p>document.write(&laquo;&nbsp;&lt;SMALL&gt;Something&nbsp;&raquo; +&nbsp;&raquo;&lt;/SMALL&gt;&nbsp;&raquo;);</p>
<p>document.write(str.small());</p>
<p>document.write(&laquo;&nbsp;Something&nbsp;&raquo;.small());</p>
<p>6.5.3 variable.blink();</p>
<p>L&#8217;emploi de .blink() affichera la variable comme si elle était comprise entre les balises Html</p>
<p>&lt;BLINK&gt;&lt;/BLINK&gt;. Pour rappel, cette balise (qui est par ailleurs vite ennuyeuse) n&#8217;est valable que sous</p>
<p>Netscape 3 et plus.</p>
<p>Les quatre instructions Javascript suivantes sont équivalentes :</p>
<p>str=&nbsp;&raquo;Something&nbsp;&raquo;;</p>
<p>document.write(&#8216;&lt;BLINK&gt;&#8217;+str+&#8217;&lt;/BLINK&gt;&#8217;);</p>
<p>document.write(&laquo;&nbsp;&lt;BLINK&gt;Something&lt;/BLINK&gt;&nbsp;&raquo;);</p>
<p>document.write(str.blink());</p>
<p>document.write(&laquo;&nbsp;Something&nbsp;&raquo;.blink());</p>
<p>6.5.4 variable.bold();</p>
<p>L&#8217;emploi de .bold() affichera la variable comme si elle était comprise entre les balises Html &lt;B&gt;&lt;/B&gt;.</p>
<p>Les quatre instructions Javascript suivantes sont équivalentes :</p>
<p>str=&nbsp;&raquo;Some words&nbsp;&raquo;;</p>
<p>document.write(&laquo;&nbsp;&lt;B&gt;&nbsp;&raquo;+str+&nbsp;&raquo;&lt;/B&gt;&nbsp;&raquo;);</p>
<p>document.write(&laquo;&nbsp;&lt;B&gt;Some words&lt;/B&gt;&nbsp;&raquo;);</p>
<p>document.write(str.bold());</p>
<p>document.write(&laquo;&nbsp;Some words&nbsp;&raquo;.bold());</p>
<p>6.5.5 variable.fixed();</p>
<p>L&#8217;emploi de .fixed() affichera la variable comme si elle était comprise entre les balises Html &lt;TT&gt;&lt;/TT&gt;.</p>
<p>Les quatre instructions Javascript suivantes sont équivalentes :</p>
<p>str=&nbsp;&raquo;Something&nbsp;&raquo;;</p>
<p>document.write(&laquo;&nbsp;&lt;TT&gt;&nbsp;&raquo;+str+&nbsp;&raquo;&lt;/TT&gt;&nbsp;&raquo;);</p>
<p>document.write(&laquo;&nbsp;&lt;TT&gt;Something&lt;/TT&gt;&nbsp;&raquo;);</p>
<p>document.write(str.fixed());</p>
<p>document.write(&laquo;&nbsp;Something&nbsp;&raquo;.fixed());</p>
<p>6.5.6 variable.italics();</p>
<p>L&#8217;emploi de .italics() affichera la variable comme si elle était comprise entre les balises Html &lt;I&gt;&lt;/I&gt;.</p>
<p>Les quatre instructions Javascript suivantes sont équivalentes :</p>
<p>str=&nbsp;&raquo;Something&nbsp;&raquo;;</p>
<p>document.write(&laquo;&nbsp;&lt;I&gt;&nbsp;&raquo;+str+&nbsp;&raquo;&lt;/I&gt;&nbsp;&raquo;);</p>
<p>document.write(&laquo;&nbsp;&lt;I&gt;Something&lt;/I&gt;&nbsp;&raquo;);</p>
<p>document.write(str.italics());</p>
<p>11</p>
<p>document.write(&laquo;&nbsp;Some word&nbsp;&raquo;.italics());</p>
<p>6.5.7 variable.fontcolor(color );</p>
<p>L&#8217;emploi de .fontcolor(color) affichera la variable comme si elle était comprise entre les balises Html &lt;FONT</p>
<p>COLOR=&nbsp;&raquo;color&nbsp;&raquo;&gt; &lt;/FONT&gt;.</p>
<p>Les quatre instructions Javascript suivantes sont équivalentes :</p>
<p>str1=&nbsp;&raquo;Some words&nbsp;&raquo;;</p>
<p>str2=&nbsp;&raquo;red&nbsp;&raquo;;</p>
<p>document.write(&laquo;&nbsp;&lt;FONT COLOR=&#8217;red&#8217;&gt;&nbsp;&raquo; +str1+&nbsp;&raquo;&lt;/FONT&gt;&nbsp;&raquo;);</p>
<p>document.write(&laquo;&nbsp;&lt;FONT COLOR=&#8217;red&#8217;&gt;&nbsp;&raquo; +&nbsp;&raquo;Something&lt;/FONT&gt;&nbsp;&raquo;);</p>
<p>document.write(str1.fontcolor(str2));</p>
<p>document.write(str1.fontcolor(&laquo;&nbsp;red&nbsp;&raquo;));</p>
<p>6.5.8 variable.fontsize(x);</p>
<p>L&#8217;emploi de .fontsize(x) affichera la variable comme si elle était comprise entre les balises Html &lt;FONT</p>
<p>SIZE=&nbsp;&raquo;x&nbsp;&raquo;&gt;&lt;/FONT&gt; où x est un nombre de 1 à 7 ou exprimé en plus ou en moins par rapport à 0 par exemple</p>
<p>-2, -1, +1, +2.</p>
<p>Les quatre instructions Javascript suivantes sont équivalentes :</p>
<p>str=&nbsp;&raquo;Something&nbsp;&raquo;;</p>
<p>x=3;</p>
<p>document.write(&laquo;&nbsp;&lt;FONT SIZE=3&gt;&nbsp;&raquo; +str+&nbsp;&raquo;&lt;/FONT&gt;&nbsp;&raquo;);</p>
<p>document.write(&laquo;&nbsp;&lt;FONT SIZE=3&gt;&nbsp;&raquo; +&nbsp;&raquo;Something&lt;/FONT&gt;&nbsp;&raquo;);</p>
<p>document.write(str.fontsize(3));</p>
<p>document.write(str.fontsize(x));</p>
<p>6.5.9 variable.strike();</p>
<p>L&#8217;emploi de .strike() affichera la variable comme si elle était comprise entre les balises Html</p>
<p>&lt;STRIKE&gt;&lt;/STRIKE&gt;.</p>
<p>Les quatre instructions Javascript suivantes sont équivalentes :</p>
<p>str=&nbsp;&raquo;Something&nbsp;&raquo;;</p>
<p>document.write(&laquo;&nbsp;&lt;STRIKE&gt;&nbsp;&raquo;+str +&nbsp;&raquo;&lt;/STRIKE&gt;&nbsp;&raquo;);</p>
<p>document.write(&laquo;&nbsp;&lt;STRIKE&gt;Something&nbsp;&raquo; +&nbsp;&raquo;&lt;/STRIKE&gt;&nbsp;&raquo;);</p>
<p>document.write(str.strike());</p>
<p>document.write(&laquo;&nbsp;Something&nbsp;&raquo;.strike());</p>
<p>6.5.10 variable.sub();</p>
<p>L&#8217;emploi de .sub() affichera la variable comme si elle était comprise entre les balises Html</p>
<p>&lt;SUB&gt;&lt;/SUB&gt;.</p>
<p>Les quatre instructions Javascript suivantes sont équivalentes :</p>
<p>str=&nbsp;&raquo;Something&nbsp;&raquo;;</p>
<p>document.write(&laquo;&nbsp;&lt;SUB&gt;&nbsp;&raquo;+str+&nbsp;&raquo;&lt;/SUB&gt;&nbsp;&raquo;);</p>
<p>document.write(&laquo;&nbsp;&lt;SUB&gt;Something&nbsp;&raquo; +&nbsp;&raquo;&lt;/SUB&gt;&nbsp;&raquo;);</p>
<p>document.write(str.sub());</p>
<p>document.write(&laquo;&nbsp;Something&nbsp;&raquo;.sub());</p>
<p>6.5.11 variable.sup();</p>
<p>L&#8217;emploi de .sup() affichera la variable comme si elle était comprise entre les balises Html .</p>
<p>&lt;SUP&gt;&lt;/SUB&gt;.</p>
<p>Les quatre instructions Javascript suivantes sont équivalentes :</p>
<p>12</p>
<p>str=&nbsp;&raquo;Something&nbsp;&raquo;;</p>
<p>document.write(&laquo;&nbsp;&lt;SUP&gt;&nbsp;&raquo;+str+&nbsp;&raquo;&lt;/SUP&gt;&nbsp;&raquo;);</p>
<p>document.write(&laquo;&nbsp;&lt;SUP&gt;Something&lt;/SUP&gt;&nbsp;&raquo;);</p>
<p>document.write(str.sup());</p>
<p>document.write(&laquo;&nbsp;Something&nbsp;&raquo;.sup());</p>
<p>+6.6 Les instructions de formatage de document</p>
<p>Rappelons tout d&#8217;abord que ce qui suit est optionnel et que vous pouvez utiliser l&#8217;instruction document.write()</p>
<p>de façon tout à fait classique.</p>
<p>Soit document.write(&laquo;&nbsp;&lt;BODY BGCOLOR=&nbsp;&raquo;#FFFFFF&nbsp;&raquo;);</p>
<p>6.6.1document.bgColor</p>
<p>Cette instruction permet de spécifier la couleur d&#8217;arrière-plan d&#8217;un objet document. On peut employer le nom ou</p>
<p>la valeur RGB de la couleur.</p>
<p>document.bgColor=&nbsp;&raquo;white&nbsp;&raquo;;</p>
<p>document.bgColor=&nbsp;&raquo;#FFFFFF&nbsp;&raquo;;</p>
<p>6.6.2 document.fgColor</p>
<p>Cette instruction permet de spécifier la couleur d&#8217;avant-plan (texte) d&#8217;un objet document. On peut employer le</p>
<p>nom ou la valeur RGB de la couleur.</p>
<p>document.fgColor=&nbsp;&raquo;black&nbsp;&raquo;;</p>
<p>document.fgColor=&nbsp;&raquo;#000000&#8243;;</p>
<p>6.6.3 document.alinkColor</p>
<p>Cette instruction permet de spécifier la couleur d&#8217;un lien actif (après le clic de la souris mais avant de quitter le</p>
<p>lien) d&#8217;un objet document. On peut employer le nom ou la valeur RGB de la couleur.</p>
<p>document.alinkColor=&nbsp;&raquo;white&nbsp;&raquo;;</p>
<p>document.alinkColor=&nbsp;&raquo;#FFFFFF&nbsp;&raquo;;</p>
<p>6.6.4 document.linkColor</p>
<p>Cette instruction permet de spécifier la couleur d&#8217;un hyperlien d&#8217;un objet document. On peut employer le nom</p>
<p>ou la valeur RGB de la couleur.</p>
<p>document.linkColor=&nbsp;&raquo;white&nbsp;&raquo;;</p>
<p>document.linkColor=&nbsp;&raquo;#FFFFFF&nbsp;&raquo;;</p>
<p>6.6.5 document.vlinkColor</p>
<p>Cette instruction permet de spécifier la couleur d&#8217;un hyperlien déjà visité d&#8217;un objet document. On peut</p>
<p>employer le nom ou la valeur RGB de la couleur.</p>
<p>document.linkColor=&nbsp;&raquo;white&nbsp;&raquo;;</p>
<p>document.linkColor=&nbsp;&raquo;#FFFFFF&nbsp;&raquo;;</p>
<p>Chapitre 7 : Utiliser des variables</p>
<p>7.1 Les variables en Javascript</p>
<p>13</p>
<p>Les variables contiennent des données qui peuvent être modifiées lors de l&#8217;exécution d&#8217;un programme. On y fait</p>
<p>référence par le nom de cette variable.</p>
<p>Un nom de variable doit commencer par une lettre (alphabet ASCII) ou le signe_ et se composer de lettres, de</p>
<p>chiffres et des caractères _ et $ (à l&#8217;exclusion du blanc). Le nombre de caractères n&#8217;est pas précisé. Pour rappel</p>
<p>Javascript est sensible à la case. Attention donc aux majuscules et minuscules!</p>
<p>7.2 La déclaration de variable</p>
<p>Les variables peuvent se déclarer de deux façons :</p>
<p>· soit de façon explicite. On dit à Javascript que ceci est une variable.</p>
<p>La commande qui permet de déclarer une variable est le mot var. Par exemple :</p>
<p>var Numero = 1</p>
<p>var Prenom = &laquo;&nbsp;Luc&nbsp;&raquo;</p>
<p>· soit de façon implicite. On écrit directement le nom de la variable suivi de la valeur que l&#8217;on lui attribue et</p>
<p>Javascript s&#8217;en accommode. Par exemple :</p>
<p>Numero = 1</p>
<p>Prenom = &laquo;&nbsp;Luc&nbsp;&raquo;</p>
<p>Attention! Malgré cette apparente facilité, la façon dont on déclare la variable aura une grande importance pour</p>
<p>la &laquo;&nbsp;visibilité&nbsp;&raquo; de la variable dans le programme Javascript. Voir à ce sujet, la distinction entre variable locale et</p>
<p>variable globale dans le Javascript avancé de ce chapitre.</p>
<p>Pour la clarté de votre script et votre facilité, on ne peut que conseiller d&#8217;utiliser à chaque fois le mot var pour</p>
<p>déclarer une variable.</p>
<p>7.3 Les données sous Javascript</p>
<p>Javascript utilise 4 types de données :</p>
<p>Type Description</p>
<p>Des nombres Tout nombre entier ou avec virgule tel que 22 ou 3.1416</p>
<p>Des chaînes de caractères Toute suite de caractères comprise entre guillemets telle que &laquo;&nbsp;suite de caractères&nbsp;&raquo;</p>
<p>Des booléens Les mots true pour vrai et fase pour faux</p>
<p>Le mot null Mot spécial qui représente pas de valeur</p>
<p>Notons aussi que contrairement au langage C ou C++, Il ne faut pas déclarer le type de données d&#8217;une variable.</p>
<p>On n&#8217;a donc pas besoin de int, float, double, char et autres long en Javascript.</p>
<p>7.4 Exercice</p>
<p>Nous allons employer la méthode write() pour afficher des variables. On définit une variable appelée texte qui</p>
<p>contient une chaîne de caractères &laquo;&nbsp;Mon chiffre préféré est &nbsp;&raquo; et une autre appelée variable qui est initialisée à 7.</p>
<p>&lt;HTML&gt;</p>
<p>&lt;BODY&gt;</p>
<p>&lt;SCRIPT LANGUAGE=&nbsp;&raquo;Javascript&nbsp;&raquo;&gt;</p>
<p>&lt;!&#8211;</p>
<p>var texte = &laquo;&nbsp;Mon chiffre préféré est le &laquo;&nbsp;</p>
<p>var variable = 7</p>
<p>document.write(texte + variable);</p>
<p>//&#8211;&gt;</p>
<p>&lt;/SCRIPT&gt;</p>
<p>&lt;/BODY&gt;</p>
<p>&lt;/HTML&gt;</p>
<p>14</p>
<p>Le résultat se présente comme suit :</p>
<p>Mon chiffre préféré est le 7</p>
<p>+7.5 Les noms réservés</p>
<p>Les mots de la liste ci-après ne peuvent être utilisés pour des noms de fonctions et de variables</p>
<p>Certains de ces mots sont des mots clés Javascript, d&#8217;autres ont été réservés par Netscape pour un futur usage</p>
<p>éventuel.</p>
<p>A abstract</p>
<p>B boolean break byte</p>
<p>C case catch char class const continue</p>
<p>D default do double</p>
<p>E else extends</p>
<p>F false final finally float for function</p>
<p>G goto</p>
<p>I if implements import in instanceof int interface</p>
<p>L long</p>
<p>N native new null</p>
<p>P package private protected public</p>
<p>R return</p>
<p>S short static super switch synchronized</p>
<p>T this throw throws transient true try</p>
<p>V var void</p>
<p>W while with</p>
<p>+7.6 Variables globales et variables locales</p>
<p>Les variables déclarées tout au début du script, en dehors et avant toutes fonctions (voir plus loin&#8230;), seront</p>
<p>toujours globales, qu&#8217;elles soient déclarées avec var ou de façon contextuelle. On pourra donc les exploiter</p>
<p>partout dans le script.</p>
<p>Dans une fonction, une variable déclarée par le mot clé var aura une portée limitée à cette seule fonction. On ne</p>
<p>pourra donc pas l&#8217;exploiter ailleurs dans le script. D&#8217;où son nom de locale. Par contre, toujours dans une</p>
<p>fonction, si la variable est déclarée contextuellement (sans utiliser le mot var), sa portée sera globale.</p>
<p>Nous reviendrons sur tout ceci dans l&#8217;étude des fonctions.</p>
<p>Chapitre 8 : Les opérateurs</p>
<p>Les variables, c&#8217;est bien mais encore faut-il pouvoir les manipuler ou les évaluer. Voyons (et ce n&#8217;est peut-être</p>
<p>pas le chapitre le plus marrant de ce tutorial) les différents opérateurs mis à notre disposition par Javascript.</p>
<p>8.1 Les opérateurs de calcul</p>
<p>Dans les exemples, la valeur initiale de x sera toujours égale à 11</p>
<p>Signe Nom Signification Exemple Résultat</p>
<p>+ plus addition x + 3 14</p>
<p>- moins soustraction x &#8211; 3 8</p>
<p>* multiplié par multiplication x*2 22</p>
<p>/ divisé par division x /2 5.5</p>
<p>% modulo reste de la division par x%5 1</p>
<p>= a la valeur affectation x=5 5</p>
<p>8.2 Les opérateurs de comparaison</p>
<p>15</p>
<p>Signe Nom Exemple Résultat</p>
<p>== égal x==11 true</p>
<p>&lt; inférieur x&lt;11 false</p>
<p>&lt;= inférieur ou égal x&lt;=11 true</p>
<p>&gt; supérieur x&gt;11 false</p>
<p>=&lt; supérieur ou égal x&gt;=11 true</p>
<p>!= différent x!=11 false</p>
<p>Important. On confond souvent le = et le == (deux signes =). Le = est un opérateur d&#8217;attribution de valeur</p>
<p>tandis que le == est un opérateur de comparaison. Cette confusion est une source classique d&#8217;erreur de</p>
<p>programmation.</p>
<p>8.3 Les opérateurs associatifs</p>
<p>On appelle ainsi les opérateurs qui réalisent un calcul dans lequel une variable intervient des deux côtés du</p>
<p>signe = (ce sont donc en quelque sorte également des opérateurs d&#8217;attribution).</p>
<p>Dans les exemples suivants x vaut toujours 11 et y aura comme valeur 5.</p>
<p>Signe Description Exemple Signification Résultat</p>
<p>+= plus égal x += y x = x + y 16</p>
<p>-= moins égal x -= y x = x &#8211; y 6</p>
<p>*= multiplié égal x *= y x = x * y 55</p>
<p>/= divisé égal x /= y x = x / y 2.2</p>
<p>8.4 Les opérateurs logiques</p>
<p>Aussi appelés opérateurs booléens, ses opérateurs servent à vérifier deux ou plusieurs conditions.</p>
<p>Signe Nom Exemple Signification</p>
<p>&amp;&amp; et (condition1) &amp;&amp; (condition2) condition1 et condition2</p>
<p>|| ou (condition1) || (condition2) condition1 ou condition2</p>
<p>8.5 Les opérateurs d&#8217;incrémentation</p>
<p>Ces opérateurs vont augmenter ou diminuer la valeur de la variable d&#8217;une unité. Ce qui sera fort utile, par</p>
<p>exemple, pour mettre en place des boucles.</p>
<p>Dans les exemples x vaut 3.</p>
<p>Signe Description Exemple Signification Résultat</p>
<p>x++ incrémentation</p>
<p>(x++ est le même que x=x+1)</p>
<p>y = x++ 3 puis plus 1 4</p>
<p>x&#8211; décrémentation</p>
<p>(x&#8211; est le même que x=x-1)</p>
<p>y= x&#8211; 3 puis moins 1 2</p>
<p>+8.6 La priorité des opérateurs Javascript</p>
<p>Les opérateurs s&#8217;effectuent dans l&#8217;ordre suivant de priorité (du degré de priorité le plus faible ou degré de</p>
<p>priorité le plus élevé).</p>
<p>Dans le cas d&#8217;opérateurs de priorité égale, de gauche à droite.</p>
<p>Opération Opérateur</p>
<p>16</p>
<p>,</p>
<p>= += -= *= /= %=</p>
<p>? :</p>
<p>||</p>
<p>&amp;&amp;</p>
<p>== !=</p>
<p>&lt; &lt;= &gt;= &gt;</p>
<p>+ -</p>
<p>* /</p>
<p>! &#8211; ++ &#8211;</p>
<p>( )</p>
<p>virgule ou séparateur de liste</p>
<p>affectation</p>
<p>opérateur conditionnel</p>
<p>ou logique</p>
<p>et logique</p>
<p>égalité</p>
<p>relationnel</p>
<p>addition soustraction</p>
<p>multiplier diviser</p>
<p>unaire</p>
<p>parenthèses</p>
<p>Chapitre 9 : Les fonctions</p>
<p>9.1 Définition</p>
<p>Une fonction est un groupe de ligne(s) de code de programmation destiné à exécuter une tâche bien spécifique</p>
<p>et que l&#8217;on pourra, si besoin est, utiliser à plusieurs reprises. De plus, l&#8217;usage des fonctions améliorera</p>
<p>grandement la lisibilité de votre script.</p>
<p>En Javascript, il existe deux types de fonctions :</p>
<p>· les fonctions propres à Javascript. On les appelle des &laquo;&nbsp;méthodes&nbsp;&raquo;. Elles sont associées à un objet bien</p>
<p>particulier comme c&#8217;était le cas de la méthode Alert() avec l&#8217;objet window.</p>
<p>· les fonctions écrites par vous-même pour les besoins de votre script. C&#8217;est à celles-là que nous nous</p>
<p>intéressons maintenant.</p>
<p>9.2 Déclaration des fonctions</p>
<p>Pour déclarer ou définir une fonction, on utilise le mot (réservé) function.</p>
<p>La syntaxe d&#8217;une déclaration de fonction est la suivante :</p>
<p>function nom_de_la_fonction(arguments) {</p>
<p>&#8230; code des instructions &#8230;</p>
<p>}</p>
<p>Le nom de la fonction suit les mêmes règles que celles qui régissent le nom de variables (nombre de caractères</p>
<p>indéfini, commencer par une lettre, peuvent inclure des chiffres&#8230;). Pour rappel, Javascript est sensible à la</p>
<p>case. Ainsi fonction() ne sera pas égal à Fonction(). En outre, Tous les noms des fonctions dans un script</p>
<p>doivent être uniques.</p>
<p>La mention des arguments est facultative mais dans ce cas les parenthèses doivent rester. C&#8217;est d&#8217;ailleurs grâce à</p>
<p>ces parenthèses que l&#8217;interpréteur Javascript distingue les variables des fonctions. Nous reviendrons plus en</p>
<p>détail sur les arguments et autres paramètres dans la partie Javascript avancé.</p>
<p>Lorsque une accolade est ouverte, elle doit impérativement, sous peine de message d&#8217;erreur, être refermée.</p>
<p>Prenez la bonne habitude de fermer directement vos accolades et d&#8217;écrire votre code entre elles.</p>
<p>Le fait de définir une fonction n&#8217;entraîne pas l&#8217;exécution des commandes qui la composent. Ce n&#8217;est que lors de</p>
<p>l&#8217;appel de la fonction que le code de programme est exécuté.</p>
<p>9.3 L&#8217;appel d&#8217;une fonction</p>
<p>L&#8217;appel d&#8217;une fonction se fait le plus simplement du monde par le nom de la fonction (avec les parenthèses).</p>
<p>Soit par exemple nom_de_la_fonction();</p>
<p>17</p>
<p>Il faudra veuiller en toute logique (car l&#8217;interpréteur lit votre script de haut vers le bas) que votre fonction soit</p>
<p>bien définie avant d&#8217;être appelée.</p>
<p>9.4 Les fonctions dans &lt;HEAD&gt;&#8230;&lt;HEAD&gt;</p>
<p>Il est donc prudent ou judicieux de placer toutes les déclarations de fonction dans l&#8217;en-tête de votre page c.-à-d</p>
<p>.dans la balise &lt;HEAD&gt; &#8230; &lt;HEAD&gt;. Vous serez ainsi assuré que vos fonctions seront déjà prises en compte</p>
<p>par l&#8217;interpréteur avant qu&#8217;elles soient appelées dans le &lt;BODY&gt;.</p>
<p>9.5 Exemple</p>
<p>Dans cet exemple, on définit dans les balises HEAD, une fonction appelée message() qui affiche le texte</p>
<p>&laquo;&nbsp;Bienvenue à ma page&nbsp;&raquo;. cette fonction sera appelée au chargement de la page voir onLoad=&#8230;. dans le tag</p>
<p>&lt;BODY&gt;.</p>
<p>&lt;HTML&gt;</p>
<p>&lt;HEAD&gt;</p>
<p>&lt;SCRIPT LANGUAGE=&nbsp;&raquo;Javascript&nbsp;&raquo;&gt;</p>
<p>&lt;&#8211;</p>
<p>function message() {</p>
<p>document.write(&laquo;&nbsp;Bienvenue à ma page&nbsp;&raquo;);</p>
<p>}</p>
<p>//&#8211;&gt;</p>
<p>&lt;/SCRIPT&gt;</p>
<p>&lt;/HEAD&gt;</p>
<p>&lt;BODY onLoad=&nbsp;&raquo;message()&nbsp;&raquo;&gt;</p>
<p>&lt;/BODY&gt;</p>
<p>&lt;/HTML&gt;</p>
<p>+9.6 Passer une valeur à une fonction</p>
<p>On peut passer des valeurs ou paramètres aux fonctions Javascript. La valeur ainsi passée sera utilisée par la</p>
<p>fonction.</p>
<p>Pour passer un paramètre à une fonction, on fournit un nom d&#8217;une variable dans la déclaration de la fonction.</p>
<p>Un exemple un peu simplet pour comprendre. J&#8217;écris une fonction qui affiche une boite d&#8217;alerte dont le texte</p>
<p>peut changer.</p>
<p>Dans la déclaration de la fonction, on écrit :</p>
<p>function Exemple(Texte) {</p>
<p>alert(texte);</p>
<p>}</p>
<p>Le nom de la variable est Texte et est définie comme un paramètre de la fonction.</p>
<p>Dans l&#8217;appel de la fonction, on lui fournit le texte :</p>
<p>Exemple(&laquo;&nbsp;Salut à tous&nbsp;&raquo;);</p>
<p>+9.7 Passer plusieurs valeurs à une fonction</p>
<p>On peut passer plusieurs paramètres à une fonction. Comme c&#8217;est souvent le cas en Javascript, on sépare les</p>
<p>paramètres par des virgules.</p>
<p>function nom_de_la_fonction(arg1, arg2, arg3) {</p>
<p>&#8230; code des instructions &#8230;</p>
<p>}</p>
<p>Notre premier exemple devient pour la déclaration de fonction :</p>
<p>function Exemplebis(Texte1, Texte2){&#8230;}</p>
<p>18</p>
<p>et pour l&#8217;appel de la fonction</p>
<p>Exemplebis(&laquo;&nbsp;Salut à tous&nbsp;&raquo;, &laquo;&nbsp;Signé Luc&nbsp;&raquo;)</p>
<p>+9.8 Retourner une valeur</p>
<p>Le principe est simple (la pratique parfois moins). Pour renvoyer un résultat, il suffit d&#8217;écrire le mot clé return</p>
<p>suivi de l&#8217;expression à renvoyer. Notez qu&#8217;il ne faut pas entourer l&#8217;expression de parenthèses. Par exemple :</p>
<p>function cube(nombre) {</p>
<p>var cube = nombre*nombre*nombre</p>
<p>return cube;</p>
<p>}</p>
<p>Précisons que l&#8217;instruction return est facultative et qu&#8217;on peut trouver plusieurs return dans une même fonction.</p>
<p>Pour exploiter cette valeur de la variable retournée par la fonction, on utilise une formulation du type</p>
<p>document.write(cube(5)).</p>
<p>+9.9 Variables locales et variables globales</p>
<p>Avec les fonctions, le bon usage des variables locales et globales prend toute son importance.</p>
<p>Une variable déclarée dans une fonction par le mot clé var aura une portée limitée à cette seule fonction. On ne</p>
<p>pourra donc pas l&#8217;exploiter ailleurs dans le script. On l&#8217;appelle donc variable locale.</p>
<p>function cube(nombre) {</p>
<p>var cube = nombre*nombre*nombre</p>
<p>}</p>
<p>Ainsi la variable cube dans cet exemple est une variable locale. Si vous y faites référence ailleurs dans le script,</p>
<p>cette variable sera inconnue pour l&#8217;interpréteur Javascript (message d&#8217;erreur).</p>
<p>Si la variable est déclarée contextuellement (sans utiliser le mot var), sa portée sera globale &#8212; et pour être tout à</p>
<p>fait précis, une fois que la fonction aura été exécutée&#8211;.</p>
<p>function cube(nombre) {</p>
<p>cube = nombre*nombre*nombre</p>
<p>}</p>
<p>La variable cube déclarée contextuellement sera ici une variable globale.</p>
<p>Les variables déclarées tout au début du script, en dehors et avant toutes fonctions, seront toujours globales,</p>
<p>qu&#8217;elles soient déclarées avec var ou de façon contextuelle.</p>
<p>&lt;SCRIPT LANGUAGE=&nbsp;&raquo;javascript&nbsp;&raquo;&gt;</p>
<p>var cube=1</p>
<p>function cube(nombre) {</p>
<p>var cube = nombre*nombre*nombre</p>
<p>}</p>
<p>&lt;/SCRIPT&gt;</p>
<p>La variable cube sera bien globale.</p>
<p>Pour la facilité de gestion des variables, on ne peut que conseiller de les déclarer en début de script (comme</p>
<p>dans la plupart des langages de programmation). Cette habitude vous met à l&#8217;abri de certaines complications.</p>
<p>19</p>
<p>Chapitre 10 : Les événements</p>
<p>10.1 Généralités</p>
<p>Avec les événements et surtout leur gestion, nous abordons le côté &laquo;&nbsp;magique&nbsp;&raquo; de Javascript.</p>
<p>En Html classique, il y a un événement que vous connaissez bien. C&#8217;est le clic de la souris sur un lien pour vous</p>
<p>transporter sur une autre page Web. Hélas, c&#8217;est à peu près le seul. Heureusement, Javascript va en ajouter une</p>
<p>bonne dizaine, pour votre plus grand plaisir.</p>
<p>Les événements Javascript, associés aux fonctions, aux méthodes et aux formulaires, ouvrent grand la porte</p>
<p>pour une réelle interactivité de vos pages.</p>
<p>10.2 Les événements</p>
<p>Passons en revue différents événements implémentés en Javascript.</p>
<p>Description Evénement</p>
<p>Lorsque l&#8217;utilisateur clique sur un bouton, un lien ou tout autre élément. Clik</p>
<p>Lorsque la page est chargée par le browser ou le navigateur. Load</p>
<p>Lorsque l&#8217;utilisateur quitte la page. Unload</p>
<p>Lorsque l&#8217;utilisateur place le pointeur de la souris sur un lien ou tout autre élément. MouseOver</p>
<p>Lorsque le pointeur de la souris quitte un lien ou tout autre élément.</p>
<p>Attention : Javascript 1.1 (donc pas sous MSIE 3.0 et Netscape 2).</p>
<p>MouseOut</p>
<p>Lorsque un élément de formulaire a le focus c-à-d devient la zone d&#8217;entrée active. Focus</p>
<p>Lorsque un élément de formulaire perd le focus c-à-d que l&#8217;utilisateur clique hors</p>
<p>du champs et que la zone d&#8217;entrée n&#8217;est plus active.</p>
<p>Blur</p>
<p>Lorsque la valeur d&#8217;un champ de formulaire est modifiée. Change</p>
<p>Lorsque l&#8217;utilisateur sélectionne un champ dans un élément de formulaire. Select</p>
<p>Lorsque l&#8217;utilisateur clique sur le bouton Submit pour envoyer un formulaire. Submit</p>
<p>10.3 Les gestionnaires d&#8217;événements</p>
<p>Pour être efficace, il faut qu&#8217;à ces événements soient associées les actions prévues par vous. C&#8217;est le rôle des</p>
<p>gestionnaires d&#8217;événements. La syntaxe est</p>
<p>onévénement=&nbsp;&raquo;fonction()&nbsp;&raquo;</p>
<p>Par exemple, onClick=&nbsp;&raquo;alert(&#8216;Vous avez cliqué sur cet élément&#8217;)&nbsp;&raquo;.</p>
<p>De façon littéraire, au clic de l&#8217;utilisateur, ouvrir une boite d&#8217;alerte avec le message indiqué.</p>
<p>10.3.1 onclick</p>
<p>Evénement classique en informatique, le clic de la souris.</p>
<p>Le code de ceci est :</p>
<p>&lt;FORM&gt;</p>
<p>&lt;INPUT TYPE=&nbsp;&raquo;button&nbsp;&raquo; VALUE=&nbsp;&raquo;Cliquez ici&nbsp;&raquo; onClick=&nbsp;&raquo;alert(&#8216;Vous avez bien cliqué ici&#8217;)&nbsp;&raquo;&gt;</p>
<p>&lt;/FORM&gt;</p>
<p>Nous reviendrons en détail sur les formulaires dans le chapitre suivant.</p>
<p>10.3.2 onLoad et onUnload</p>
<p>L&#8217;événement Load survient lorsque la page a fini de se charger. A l&#8217;inverse, Unload survient lorsque l&#8217;utilisateur</p>
<p>quitte la page.</p>
<p>20</p>
<p>Les événements onLoad et onUnload sont utilisés sous forme d&#8217;attributs de la balise &lt;BODY&gt; ou</p>
<p>&lt;FRAMESET&gt;. On peut ainsi écrire un script pour souhaiter la bienvenue à l&#8217;ouverture d&#8217;une page et un petit</p>
<p>mot d&#8217;au revoir au moment de quitter celle-ci.</p>
<p>&lt;HTML&gt;</p>
<p>&lt;HEAD&gt;</p>
<p>&lt;SCRIPT LANGUAGE=&#8217;Javascript&#8217;&gt;</p>
<p>function bienvenue() {</p>
<p>alert(&laquo;&nbsp;Bienvenue à cette page&nbsp;&raquo;);</p>
<p>}</p>
<p>function au_revoir() {</p>
<p>alert(&laquo;&nbsp;Au revoir&nbsp;&raquo;);</p>
<p>}</p>
<p>&lt;/SCRIPT&gt;</p>
<p>&lt;/HEAD&gt;</p>
<p>&lt;BODY onLoad=&#8217;bienvenue()&#8217; onUnload=&#8217;au_revoir()&#8217;&gt;</p>
<p>Html normal</p>
<p>&lt;/BODY&gt;</p>
<p>&lt;/HTML&gt;</p>
<p>10.3.4 onmouseOver et onmouseOut</p>
<p>L&#8217;événement onmouseOver se produit lorsque le pointeur de la souris passe au dessus (sans cliquer) d&#8217;un lien ou</p>
<p>d&#8217;une image. Cet événement est fort pratique pour, par exemple, afficher des explications soit dans la barre de</p>
<p>statut soit avec une petite fenêtre genre infobulle.</p>
<p>L&#8217;événement onmouseOut, généralement associé à un onmouseOver, se produit lorsque le pointeur quitte la</p>
<p>zone sensible (lien ou image).</p>
<p>Notons qui si onmouseOver est du Javascript 1.0, onmouseOut est du Javascript 1.1.</p>
<p>En clair, onmouseOut ne fonctionne pas avec Netscape 2.0 et Explorer 3.0.</p>
<p>10.3.5 onFocus</p>
<p>L&#8217;événement onFocus survient lorsqu&#8217;un champ de saisie a le focus c.-à-d. quand son emplacement est prêt à</p>
<p>recevoir ce que l&#8217;utilisateur à l&#8217;intention de taper au clavier. C&#8217;est souvent la conséquence d&#8217;un clic de souris ou</p>
<p>de l&#8217;usage de la touche &laquo;&nbsp;Tab&nbsp;&raquo;.</p>
<p>10.3.6 onBlur</p>
<p>L&#8217;événement onBlur a lieu lorsqu&#8217;un champ de formulaire perd le focus. Cela se produit quand l&#8217;utilisateur</p>
<p>ayant terminé la saisie qu&#8217;il effectuait dans une case, clique en dehors du champ ou utilise la touche &laquo;&nbsp;Tab&nbsp;&raquo; pour</p>
<p>passer à un champ. Cet événement sera souvent utilisé pour vérifier la saisie d&#8217;un formulaire.</p>
<p>Le code est :</p>
<p>&lt;FORM&gt;</p>
<p>&lt;INPUT TYPE=text onBlur=&nbsp;&raquo;alert(&#8216;Ceci est un Blur&#8217;)&nbsp;&raquo;&gt;</p>
<p>&lt;/FORM&gt;</p>
<p>10.3.7 onchange</p>
<p>Cet événement s&#8217;apparente à l&#8217;événement onBlur mais avec une petite différence. Non seulement la case du</p>
<p>formulaire doit avoir perdu le focus mais aussi son contenu doit avoir été modifié par l&#8217;utilisateur.</p>
<p>10.3.8 onselect</p>
<p>Cet événement se produit lorsque l&#8217;utilisateur a sélectionné (mis en surbrillance ou en vidéo inverse) tout ou</p>
<p>partie d&#8217;une zone de texte dans une zone de type text ou textarea.</p>
<p>21</p>
<p>+10.4 Gestionnaires d&#8217;événement disponibles en Javascript</p>
<p>Il nous semble utile dans cette partie &laquo;&nbsp;avancée&nbsp;&raquo; de présenter la liste des objets auxquels correspondent des</p>
<p>gestionnaires d&#8217;événement bien déterminés.</p>
<p>Objets Gestionnaires d&#8217;événement disponibles</p>
<p>Fenêtre onLoad, onUnload</p>
<p>Lien hypertexte onClick, onmouseOver, on mouseOut</p>
<p>Elément de texte onBlur, onChange, onFocus, onSelect</p>
<p>Elément de zone de texte onBlur, onChange, onFocus, onSelect</p>
<p>Elément bouton onClick</p>
<p>Case à cocher onClick</p>
<p>Bouton Radio onClick</p>
<p>Liste de sélectionon Blur, onChange, onFocus</p>
<p>Bouton Submit onClick</p>
<p>Bouton Reset onClick</p>
<p>+10.5 La syntaxe de onmouseOver</p>
<p>Le code du gestionnaire d&#8217;événement onmouseOver s&#8217;ajoute aux balises de lien :</p>
<p>&lt;A HREF=&nbsp;&raquo;" onmouseOver=&nbsp;&raquo;action()&nbsp;&raquo;&gt;lien&lt;/A&gt;</p>
<p>Ainsi, lorsque l&#8217;utilisateur passe avec sa souris sur le lien, la fonction action() est appelée. L&#8217;attribut HREF est</p>
<p>indispensable. Il peut contenir l&#8217;adresse d&#8217;une page Web si vous souhaitez que le lien soit actif ou simplement</p>
<p>des guillemets si aucun lien actif n&#8217;est prévu. Nous reviendrons ci-après sur certains désagréments du codage</p>
<p>HREF=&nbsp;&raquo;".</p>
<p>Voici un exemple. Par le survol du lien &laquo;&nbsp;message important&nbsp;&raquo;, une fenêtre d&#8217;alerte s&#8217;ouvre.</p>
<p>Le code est :</p>
<p>&lt;BODY&gt;</p>
<p>&#8230;</p>
<p>&lt;A HREF=&nbsp;&raquo;" onmouseOver=&nbsp;&raquo;alert(&#8216;Coucou&#8217;)&nbsp;&raquo;&gt;message important&lt;/A&gt;</p>
<p>&#8230;</p>
<p>&lt;BODY&gt;</p>
<p>ou si vous préférez utiliser les balises &lt;HEAD&gt;</p>
<p>&lt;HTML&gt;</p>
<p>&lt;HEAD&gt;</p>
<p>&lt;SCRIPT language=&nbsp;&raquo;Javascript&nbsp;&raquo;&gt;</p>
<p>function message(){</p>
<p>alert(&laquo;&nbsp;Coucou&nbsp;&raquo;)</p>
<p>}</p>
<p>&lt;/SCRIPT&gt;</p>
<p>&lt;/HEAD&gt;</p>
<p>&lt;BODY&gt;</p>
<p>&lt;A HREF=&nbsp;&raquo;" onmouseOver=&nbsp;&raquo;message()&nbsp;&raquo;&gt;message important&lt;/A&gt;</p>
<p>&lt;/BODY&gt;</p>
<p>&lt;/HTML&gt;</p>
<p>+10.6 La syntaxe de onmouseOut</p>
<p>Tout à fait similaire à onmouseOver, sauf que l&#8217;événement se produit lorsque le pointeur de la souris quitte le</p>
<p>lien ou la zone sensible.</p>
<p>22</p>
<p>Au risque de nous répéter, si onmouseOver est du Javascript 1.0 et sera donc reconnu par tous les browsers,</p>
<p>onmouseOut est du Javascript 1.1 et ne sera reconnu que par Netscape 3.0 et plus et Explorer 4.0 et plus (et pas</p>
<p>par Netscape 2.0 et Explorer 3.0)</p>
<p>On peut imaginer le code suivant :</p>
<p>&lt;A HREF=&nbsp;&raquo;" onmouseOver=&nbsp;&raquo;alert(&#8216;Coucou&#8217;)&nbsp;&raquo; onmouseOut=&nbsp;&raquo;alert(&#8216;Au revoir&#8217;)&nbsp;&raquo;&gt;message important&lt;/A&gt;</p>
<p>Les puristes devront donc prévoir une version différente selon les versions Javascript.</p>
<p>+10.7 Problème! Et si on clique quand même&#8230;</p>
<p>Vous avez codé votre instruction onmouseOver avec le lien fictif &lt;A HREF=&nbsp;&raquo;"&#8230; &gt;, vous avez même prévu un</p>
<p>petit texte, demandant gentiment à l&#8217;utilisateur de ne pas cliquer sur le lien et comme de bien entendu celui-ci</p>
<p>clique quand même.</p>
<p>Horreur, le browser affiche alors l&#8217;entièreté des répertoires de sa machine ou de votre site). Ce qui est un</p>
<p>résultat non désiré et pour le moins imprévu.</p>
<p>Pour éviter cela, prenez l&#8217;habitude de mettre l&#8217;adresse de la page encours ou plus simplement le signe # (pour un</p>
<p>ancrage) entre les guillemets de HREF. Ainsi, si le lecteur clique quand même sur le lien, au pire, la page</p>
<p>encours sera simplement rechargée et sans perte de temps car elle est déjà dans le cache du navigateur.</p>
<p>Prenez donc l&#8217;habitude de mettre le code suivant &lt;A HREF=&nbsp;&raquo;#&nbsp;&raquo; onmouseOver=&nbsp;&raquo;action()&nbsp;&raquo;&gt; lien &lt;/A&gt;.</p>
<p>+10.8 Changement d&#8217;images</p>
<p>Avec le gestionnaire d&#8217;événement onmouseOver, on peut prévoir qu&#8217;après le survol d&#8217;un image par l&#8217;utilisateur,</p>
<p>une autre image apparaisse (pour autant qu&#8217;elle soit de la même taille).</p>
<p>le code est relativement simple.</p>
<p>&lt;HTML&gt;</p>
<p>&lt;HEAD&gt;</p>
<p>&lt;SCRIPT LANGUAGE=&nbsp;&raquo;Javascript1.1&#8243;&gt;</p>
<p>function lightUp() {</p>
<p>document.images["homeButton"].src=&nbsp;&raquo;button_hot.gif&nbsp;&raquo;</p>
<p>}</p>
<p>function dimDown() {</p>
<p>document.images["homeButton"].src=&nbsp;&raquo;button_dim.gif&nbsp;&raquo;</p>
<p>}</p>
<p>&lt;/SCRIPT&gt;</p>
<p>&lt;/HEAD&gt;</p>
<p>&lt;BODY&gt;</p>
<p>&lt;A HREF=&nbsp;&raquo;#&nbsp;&raquo; onmouseOver=&nbsp;&raquo;lightUp();&nbsp;&raquo; onmouseOut=&nbsp;&raquo;dimDown();&nbsp;&raquo;&gt;</p>
<p>&lt;IMG SRC=&nbsp;&raquo;button_dim.gif&nbsp;&raquo; name=&nbsp;&raquo;homeButton&nbsp;&raquo; width=100 height=50 border=0&gt; &lt;/A&gt;</p>
<p>&lt;/BODY&gt;</p>
<p>&lt;/HTML&gt;</p>
<p>Compléter toujours en Javascript les attributs width=x height=y de vos images.</p>
<p>Il n&#8217;y a pas d&#8217;exemple ici pour la compatibilité avec les lecteurs utilisant explorer 3.0 en effet, non seulement</p>
<p>onmouseOut mais aussi image[] est du Javascript 1.1.</p>
<p>+10.9 L&#8217;image invisible</p>
<p>Ce changement d&#8217;image ne vous donne-t-il pas des idées?&#8230; Petit futé! Et oui, on peut prévoir une image</p>
<p>invisible de la même couleur que l&#8217;arrière plan (même transparente). On la place avec malice sur le chemin de</p>
<p>la souris de l&#8217;utilisateur et son survol peut ,à l&#8217;insu de l&#8217;utilisateur, déclencher un feu d&#8217;artifice d&#8217;actions de votre</p>
<p>choix. Magique le Javascript ?</p>
<p>23</p>
<p>Chapitre 11 : Les conditions</p>
<p>11.1 Si Maman si &#8230;&nbsp;&raquo; ou l&#8217;expression if</p>
<p>A un moment ou à un autre de la programmation, on aura besoin de tester une condition. Ce qui permettra</p>
<p>d&#8217;exécuter ou non une série d&#8217;instructions.</p>
<p>Dans sa formulation la plus simple, l&#8217;expression if se présente comme suit</p>
<p>if (condition vraie) {</p>
<p>une ou plusieurs instructions;</p>
<p>}</p>
<p>Ainsi, si la condition est vérifiée, les instructions s&#8217;exécutent. Si elle ne l&#8217;est pas, les instructions ne s&#8217;exécutent</p>
<p>pas et le programme passe à la commande suivant l&#8217;accolade de fermeture.</p>
<p>De façon un peu plus évoluée, il y a l&#8217;expression if&#8230;else</p>
<p>if (condition vraie) {</p>
<p>instructions1;</p>
<p>}</p>
<p>else {</p>
<p>instructions2;</p>
<p>}</p>
<p>Si la condition est vérifiée (true), le bloc d&#8217;instructions 1 s&#8217;exécute. Si elle ne l&#8217;est pas (false), le bloc</p>
<p>d&#8217;instructions 2 s&#8217;exécute.</p>
<p>Dans le cas où il n&#8217;y a qu&#8217;une instruction, les accolades sont facultatives.</p>
<p>Grâce aux opérateurs logiques &laquo;&nbsp;et&nbsp;&raquo; et &laquo;&nbsp;ou&nbsp;&raquo;, l&#8217;expression de test pourra tester une association de conditions.</p>
<p>Ainsi if ((condition1) &amp;&amp; (condition2)), testera si la condition 1 et la condition 2 est réalisée. Et if</p>
<p>((condition1) || (condition2)), testera si une au moins des conditions est vérifiée.</p>
<p>Pour être complet (et pour ceux qui aiment les écritures concises), il y a aussi :</p>
<p>(expression) ? instruction a : instruction b</p>
<p>Si l&#8217;expression entre parenthèse est vraie, l&#8217;instruction a est exécutée.Si l&#8217;expression entre parenthèses retourne</p>
<p>faux, c&#8217;est l&#8217;instruction b qui est exécutée.</p>
<p>11.2 L&#8217;expression for</p>
<p>L&#8217;expression for permet d&#8217;exécuter un bloc d&#8217;instructions un certain nombre de fois en fonction de la réalisation</p>
<p>d&#8217;un certain critère. Sa syntaxe est :</p>
<p>for (valeur initiale ; condition ; progression) {</p>
<p>instructions;</p>
<p>}</p>
<p>Prenons un exemple concret</p>
<p>for (i=0, i&lt;10, i++) {</p>
<p>document.write(i + &laquo;&nbsp;&lt;BR&gt;&nbsp;&raquo;)</p>
<p>}</p>
<p>24</p>
<p>Au premier passage, la variable i, étant initialisée à 0, vaut bien entendu 0. Elle est bien inférieure à 10. Elle est</p>
<p>donc incrémentée d&#8217;une unité par l&#8217;opérateur d&#8217;incrémentation i++ (i vaut alors 2) et les instructions</p>
<p>s&#8217;exécutent.</p>
<p>A la fin de l&#8217;exécution des instructions, on revient au compteur. La variable i (qui vaut 2) est encore toujours</p>
<p>inférieure à 10. Elle est augmentée de 1 et les instructions sont à nouveau exécutées. Ainsi de suite jusqu&#8217;à ce</p>
<p>que i vaille 10. La variable i ne remplit plus la condition i&lt;10. La boucle s&#8217;interrompt et le programme continue</p>
<p>après l&#8217;accolade de fermeture.</p>
<p>+11.3 While</p>
<p>L&#8217;instruction while permet d&#8217;exécuter une instruction (ou un groupe d&#8217;instructions) un certain nombre de fois.</p>
<p>while (condition vraie){</p>
<p>continuer à faire quelque chose</p>
<p>}</p>
<p>Aussi longtemps que la condition est vérifiée, Javascript continue à exécuter les instructions entre les</p>
<p>accolades. Une fois que la condition n&#8217;est plus vérifiée, la boucle est interrompue et on continue le script.</p>
<p>Prenons un exemple.</p>
<p>compt=1;</p>
<p>while (compt&lt;5) {</p>
<p>document.write (&laquo;&nbsp;ligne : &nbsp;&raquo; + compt + &laquo;&nbsp;&lt;BR&gt;&nbsp;&raquo;);</p>
<p>compt++;</p>
<p>}</p>
<p>document.write(&laquo;&nbsp;fin de la boucle&nbsp;&raquo;);</p>
<p>Voyons comment fonctionne cet exemple. D&#8217;abord la variable qui nous servira de compteur compt est</p>
<p>initialisée à 1. La boucle while démarre donc avec la valeur 1 qui est inférieure à 5. La condition est vérifiée.</p>
<p>On exécute les instructions des accolades. D&#8217;abord, &laquo;&nbsp;ligne : 1&#8243; est affichée et ensuite le compteur est</p>
<p>incrémenté de 1 et prend donc la valeur 2. La condition est encore vérifiée. Les instructions entre les accolades</p>
<p>sont exécutées. Et ce jusqu&#8217;à l&#8217;affichage de la ligne 4. Là, le compteur après l&#8217;incrémentation vaut 5. La</p>
<p>condition n&#8217;étant plus vérifiée, on continue dans le script et c&#8217;est alors fin de boucle qui est affiché.</p>
<p>Attention ! Avec ce système de boucle, le risque existe (si la condition est toujours vérifiée), de faire boucler</p>
<p>indéfiniment l&#8217;instruction. Ce qui à la longue fait misérablement planter le browser !</p>
<p>Ce qui donnerait à l&#8217;écran :</p>
<p>ligne : 1</p>
<p>ligne : 2</p>
<p>ligne : 3</p>
<p>ligne : 4</p>
<p>fin de la boucle</p>
<p>+11.4 Break</p>
<p>L&#8217;instruction break permet d&#8217;interrompre prématurément une boucle for ou while.</p>
<p>Pour illustrer ceci, reprenons notre exemple :</p>
<p>compt=1;</p>
<p>while (compt&lt;5) {</p>
<p>if (compt == 4)</p>
<p>break;</p>
<p>document.write (&laquo;&nbsp;ligne : &nbsp;&raquo; + compt + &laquo;&nbsp;&lt;BR&gt;&nbsp;&raquo;);</p>
<p>25</p>
<p>compt++;</p>
<p>}</p>
<p>document.write(&laquo;&nbsp;fin de la boucle&nbsp;&raquo;);</p>
<p>Le fonctionnement est semblable à l&#8217;exemple précédent sauf lorsque le compteur vaut 4. A ce moment, par le</p>
<p>break, on sort de la boucle et &laquo;&nbsp;fin de boucle&nbsp;&raquo; est affiché.</p>
<p>Ce qui donnerait à l&#8217;écran :</p>
<p>ligne : 1</p>
<p>ligne : 2</p>
<p>ligne : 3</p>
<p>fin de la boucle</p>
<p>+11.5 Continue</p>
<p>L&#8217;instruction continue permet de sauter une instruction dans une boucle for ou while et de continuer ensuite le</p>
<p>bouclage (sans sortir de celui-ci comme le fait break).</p>
<p>Reprenons notre exemple ;</p>
<p>compt=1;</p>
<p>while (compt&lt;5) {</p>
<p>if (compt == 3){</p>
<p>compt++</p>
<p>continue;}</p>
<p>document.write (&laquo;&nbsp;ligne : &nbsp;&raquo; + compt + &laquo;&nbsp;&lt;BR&gt;&nbsp;&raquo;);</p>
<p>compt++;</p>
<p>}</p>
<p>document.write(&laquo;&nbsp;fin de la boucle&nbsp;&raquo;);</p>
<p>Ici, la boucle démarre. Lorsque le compteur vaut 3, par l&#8217;instruction continue, on saute l&#8217;instruction</p>
<p>document.write (ligne : 3 n&#8217;est pas affichée) et on continue la boucle. Notons qu&#8217;on a dû ajouter compt++ avant</p>
<p>continue; pour éviter un bouclage infini et un plantage du navigateur (compt restant à 3).</p>
<p>Ce qui fait à l&#8217;écran :</p>
<p>ligne : 1</p>
<p>ligne : 2</p>
<p>ligne : 4</p>
<p>fin de la boucle</p>
<p>Chapitre 12 : Les formulaires</p>
<p>12.1 Généralités</p>
<p>Avec Javascript, les formulaires Html prennent une toute autre dimension. N&#8217;oublions pas qu&#8217;en Javascript, on</p>
<p>peut accéder à chaque élément d&#8217;un formulaire pour, par exemple, y aller lire ou écrire une valeur, noter un</p>
<p>choix auquel on pourra associer un gestionnaire d&#8217;événement&#8230; Tous ces éléments renforceront grandement les</p>
<p>capacités interactives de vos pages.</p>
<p>Mettons au point le vocabulaire que nous utiliserons. Un formulaire est l&#8217;élément Html déclaré par les balises</p>
<p>&lt;FORM&gt;&lt;/FORM&gt;. Un formulaire contient un ou plusieurs éléments que nous appellerons des contrôles</p>
<p>(widgets). Ces contrôles sont notés par exemple par la balise &lt;INPUT TYPE= &#8230;&gt;.</p>
<p>12.2 Déclaration d&#8217;un formulaire</p>
<p>26</p>
<p>La déclaration d&#8217;un formulaire se fait par les balises &lt;FORM&gt; et &lt;/FORM&gt;. Il faut noter qu&#8217;en Javascript,</p>
<p>l&#8217;attribut NAME=&nbsp;&raquo;nom_du_formulaire&nbsp;&raquo; a toute son importance pour désigner le chemin complet des éléments.</p>
<p>En outre, les attributs ACTION et METHOD sont facultatifs pour autant que vous ne faites pas appel au</p>
<p>serveur.</p>
<p>Une erreur classique en Javascript est, emporté par son élan, d&#8217;oublier de déclarer la fin du formulaire</p>
<p>&lt;/FORM&gt; après avoir incorporé un contrôle.</p>
<p>12.3 Le contrôle ligne de texte</p>
<p>La zone de texte est l&#8217;élément d&#8217;entrée/sortie par excellence de Javascript. La syntaxe Html est &lt;INPUT</p>
<p>TYPE=&nbsp;&raquo;text&nbsp;&raquo; NAME=&nbsp;&raquo;nom&nbsp;&raquo; SIZE=x MAXLENGTH=y&gt; pour un champ de saisie d&#8217;une seule ligne, de</p>
<p>longueur x et de longueur maximale de y.</p>
<p>L&#8217;objet text possède trois propriétés :</p>
<p>Propriété Description</p>
<p>name indique le nom du contrôle par lequel on pourra accéder.</p>
<p>Defaultvalue indique la valeur par défaut qui sera affichée dans la zone de texte.</p>
<p>Value indique la valeur en cours de la zone de texte. Soit celle tapée par l&#8217;utilisateur ou si</p>
<p>celui-ci n&#8217;a rien tapé, la valeur par défaut.</p>
<p>12.3.1 Lire une valeur dans une zone de texte</p>
<p>Voici un exemple que nous détaillerons :</p>
<p>Voici une zone de texte. Entrez une valeur et appuyer sur le bouton pour contrôler celle-ci.</p>
<p>Le script complet est celui-ci :</p>
<p>&lt;HTML&gt;</p>
<p>&lt;HEAD&gt;</p>
<p>&lt;SCRIPT LANGUAGE=&nbsp;&raquo;javascript&nbsp;&raquo;&gt;</p>
<p>function controle(form1) {</p>
<p>var test = document.form1.input.value;</p>
<p>alert(&laquo;&nbsp;Vous avez tapé : &nbsp;&raquo; + test);</p>
<p>}</p>
<p>&lt;/SCRIPT&gt;</p>
<p>&lt;/HEAD&gt;</p>
<p>&lt;BODY&gt;</p>
<p>&lt;FORM NAME=&nbsp;&raquo;form1&#8243;&gt;</p>
<p>&lt;INPUT TYPE=&nbsp;&raquo;text&nbsp;&raquo; NAME=&nbsp;&raquo;input&nbsp;&raquo; VALUE=&nbsp;&raquo;"&gt;&lt;BR&gt;</p>
<p>&lt;INPUT TYPE=&nbsp;&raquo;button&nbsp;&raquo; NAME=&nbsp;&raquo;bouton&nbsp;&raquo; VALUE=&nbsp;&raquo;Contrôler&nbsp;&raquo; onClick=&nbsp;&raquo;controle(form1)&nbsp;&raquo;&gt;</p>
<p>&lt;/FORM&gt;</p>
<p>&lt;/BODY&gt;</p>
<p>&lt;/HTML&gt;</p>
<p>Lorsqu&#8217;on clique le bouton &laquo;&nbsp;contrôler&nbsp;&raquo;, Javascript appelle la fonction controle() à laquelle on passe le</p>
<p>formulaire dont le nom est form1 comme argument.</p>
<p>Cette fonction controle() définie dans les balises &lt;HEAD&gt; prend sous la variable test, la valeur de la zone de</p>
<p>texte. Pour accéder à cette valeur, on note le chemin complet de celle-ci (voir le chapitre &laquo;&nbsp;Un peu de théorie</p>
<p>objet&nbsp;&raquo;). Soit dans le document présent, il y a l&#8217;objet formulaire appelé form1 qui contient le contrôle de texte</p>
<p>nommé input et qui a comme propriété l&#8217;élément de valeur value. Ce qui donne document.form1.input.value.</p>
<p>27</p>
<p>12.3.2 Ecrire une valeur dans une zone de texte</p>
<p>Entrez une valeur quelconque dans la zone de texte d&#8217;entrée. Appuyer sur le bouton pour afficher cette valeur</p>
<p>dans la zone de texte de sortie.</p>
<p>Zone de texte d&#8217;entrée</p>
<p>Zone de texte de sortie</p>
<p>Voici le code :</p>
<p>&lt;HTML&gt;</p>
<p>&lt;HEAD&gt;</p>
<p>&lt;SCRIPT LANGUAGE=&nbsp;&raquo;javascript&nbsp;&raquo;&gt;</p>
<p>function afficher(form2) {</p>
<p>var testin =document. form2.input.value;</p>
<p>document.form2.output.value=testin</p>
<p>}</p>
<p>&lt;/SCRIPT&gt;</p>
<p>&lt;/HEAD&gt;</p>
<p>&lt;BODY&gt;</p>
<p>&lt;FORM NAME=&nbsp;&raquo;form2&#8243;&gt;</p>
<p>&lt;INPUT TYPE=&nbsp;&raquo;text&nbsp;&raquo; NAME=&nbsp;&raquo;input&nbsp;&raquo; VALUE=&nbsp;&raquo;"&gt; Zone de texte d&#8217;entrée &lt;BR&gt;</p>
<p>&lt;INPUT TYPE=&nbsp;&raquo;button&nbsp;&raquo; NAME=&nbsp;&raquo;bouton&nbsp;&raquo; VALUE=&nbsp;&raquo;Afficher&nbsp;&raquo; onClick=&nbsp;&raquo;afficher(form2)&nbsp;&raquo;&gt;&lt;BR&gt;</p>
<p>&lt;INPUT TYPE=&nbsp;&raquo;text&nbsp;&raquo; NAME=&nbsp;&raquo;output&nbsp;&raquo; VALUE=&nbsp;&raquo;"&gt; Zone de texte de sortie</p>
<p>&lt;/FORM&gt;</p>
<p>&lt;/BODY&gt;</p>
<p>&lt;/HTML&gt;</p>
<p>Lorsqu&#8217;on clique le bouton &laquo;&nbsp;Afficher&nbsp;&raquo;, Javascript appelle la fonction afficher() à laquelle on passe le formulaire</p>
<p>dont le nom est cette fois form2 comme argument.</p>
<p>Cette fonction afficher() définie dans les balises &lt;HEAD&gt; prend sous la variable testin, la valeur de la zone de</p>
<p>texte d&#8217;entrée. A l&#8217;instruction suivante, on dit à Javascript que la valeur de la zone de texte output comprise</p>
<p>dans le formulaire nommé form2 est celle de la variable testin. A nouveau, on a utilisé le chemin complet pour</p>
<p>arriver à la propriété valeur de l&#8217;objet souhaité soit en Javascript document.form2.output.value.</p>
<p>12.4 Les boutons radio</p>
<p>Les boutons radio sont utilisés pour noter un choix, et seulement un seul, parmi un ensemble de propositions.</p>
<p>Propriété Description</p>
<p>name indique le nom du contrôle. Tous les boutons portent le même nom.</p>
<p>index l&#8217;index ou le rang du bouton radio en commençant par 0.</p>
<p>checked indique l&#8217;état en cours de l&#8217;élément radio</p>
<p>defaultchecked indique l&#8217;état du bouton sélectionné par défaut.</p>
<p>value indique la valeur de l&#8217;élément radio.</p>
<p>Prenons un exemple :</p>
<p>&lt;HTML&gt;</p>
<p>&lt;HEAD&gt;</p>
<p>&lt;SCRIPT language=&nbsp;&raquo;javascript&nbsp;&raquo;&gt;</p>
<p>function choixprop(form3) {</p>
<p>if (form3.choix[0].checked) { alert(&laquo;&nbsp;Vous avez choisi la proposition &nbsp;&raquo; + form3.choix[0].value) };</p>
<p>if (form3.choix[1].checked) { alert(&laquo;&nbsp;Vous avez choisi la proposition &nbsp;&raquo; + form3.choix[1].value) };</p>
<p>if (form3.choix[2].checked) { alert(&laquo;&nbsp;Vous avez choisi la proposition &nbsp;&raquo; + form3.choix[2].value) };</p>
<p>}</p>
<p>28</p>
<p>&lt;/SCRIPT&gt;</p>
<p>&lt;/HEAD&gt;</p>
<p>&lt;BODY&gt;</p>
<p>Entrez votre choix :</p>
<p>&lt;FORM NAME=&nbsp;&raquo;form3&#8243;&gt;</p>
<p>&lt;INPUT TYPE=&nbsp;&raquo;radio&nbsp;&raquo; NAME=&nbsp;&raquo;choix&nbsp;&raquo; VALUE=&nbsp;&raquo;1&#8243;&gt;Choix numéro 1&lt;BR&gt;</p>
<p>&lt;INPUT TYPE=&nbsp;&raquo;radio&nbsp;&raquo; NAME=&nbsp;&raquo;choix&nbsp;&raquo; VALUE=&nbsp;&raquo;2&#8243;&gt;Choix numéro 2&lt;BR&gt;</p>
<p>&lt;INPUT TYPE=&nbsp;&raquo;radio&nbsp;&raquo; NAME=&nbsp;&raquo;choix&nbsp;&raquo; VALUE=&nbsp;&raquo;3&#8243;&gt;Choix numéro 3&lt;BR&gt;</p>
<p>&lt;INPUT TYPE=&nbsp;&raquo;button&nbsp;&raquo;NAME=&nbsp;&raquo;but&nbsp;&raquo; VALUE=&nbsp;&raquo;Quel et votre choix ?&nbsp;&raquo; onClick=&nbsp;&raquo;choixprop(form3)&nbsp;&raquo;&gt;</p>
<p>&lt;/FORM&gt;</p>
<p>&lt;/BODY&gt;</p>
<p>&lt;/HTML&gt;</p>
<p>PS: Ce programme a été écrit avec un souci didactique. On pourrait l&#8217;écrire avec des codes plus compacts.</p>
<p>Entrez votre choix :</p>
<p>Dans le formulaire nommé form3, on déclare trois boutons radio. Notez que l&#8217;on utilise le même nom pour les</p>
<p>trois boutons. Vient ensuite un bouton qui déclenche la fonction choixprop().</p>
<p>Cette fonction teste quel bouton radio est coché. On accède aux boutons sous forme d&#8217;indice par rapport au nom</p>
<p>des boutons radio soit choix[0], choix[1], choix[2]. On teste la propriété checked du bouton par</p>
<p>if(form3.choix[x].checked). Dans l&#8217;affirmative, une boite d&#8217;alerte s&#8217;affiche. Ce message reprend la valeur</p>
<p>attachée à chaque bouton par le chemin form3.choix[x].value.</p>
<p>12.5 Les boutons case à cocher (checkbox)</p>
<p>Les boutons case à cocher sont utilisés pour noter un ou plusieurs choix (pour rappel avec les boutons radio un</p>
<p>seul choix) parmi un ensemble de propositions. A part cela, sa syntaxe et son usage est tout à fait semblable aux</p>
<p>boutons radio sauf en ce qui concerne l&#8217;attribut name.</p>
<p>Propriété Description</p>
<p>name indique le nom du contrôle. Toutes les cases à cocher portent un nom différent.</p>
<p>checked indique l&#8217;état en cours de l&#8217;élément case à cocher.</p>
<p>defaultchecked indique l&#8217;état du bouton sélectionné par défaut.</p>
<p>value indique la valeur de l&#8217;élément case à cocher.</p>
<p>Entrez votre choix :</p>
<p>Il faut sélectionner les numéros 1,2 et 4 pour avoir la bonne réponse.</p>
<p>&lt;HTML&gt;</p>
<p>&lt;HEAD&gt;</p>
<p>&lt;script language=&nbsp;&raquo;javascript&nbsp;&raquo;&gt;</p>
<p>function reponse(form4) {</p>
<p>29</p>
<p>if ( (form4.check1.checked) == true &amp;&amp; (form4.check2.checked) == true &amp;&amp; (form4.check3.checked) == false</p>
<p>&amp;&amp; (form4.check4.checked) == true)</p>
<p>{ alert(&laquo;&nbsp;C&#8217;est la bonne réponse! &laquo;&nbsp;) }</p>
<p>else</p>
<p>{alert(&laquo;&nbsp;Désolé, continuez à chercher.&nbsp;&raquo;)}</p>
<p>}</p>
<p>&lt;/SCRIPT&gt;</p>
<p>&lt;/HEAD&gt;</p>
<p>&lt;BODY&gt;</p>
<p style="text-align:center;"><strong><span style="color:#ff0000;"><span style="text-decoration:underline;">consulter le reste du document sur la version PDF</span></span></strong></p>
<p>www.ccim.be/ccim328/js/index.htm</p>
<p>Ó copyright 1998</p>
<p>Auteur :</p>
<p>Van Lancker Luc</p>
<p>Rue des Brasseurs, 22</p>
<p>7700 Mouscron Belgium</p>
<p>Vanlancker.Luc@ccim.be</p>
<p>Un mot d&#8217;encouragement ou un compliment fait toujours plaisir.</p>
<p>Critiques et suggestions seront aussi examinées avec attention.</p>
<p><strong>Du même auteur :</strong></p>
<p><strong>Apprendre le langage Html</strong></p>
<p><strong>Maîtriser le langage Html</strong></p>
<p><strong>Apprendre le Vbscript</strong></p>
<p><strong>Apprendre à créer un site</strong></p>
<p><strong>www.ccim.be/ccim328/html/index.htm</strong></p>
<p><strong>www.ccim.be/ccim328/htmlplus/index.htm</strong></p>
<p><strong>www.ccim.be/ccim328/vb/index.htm</strong></p>
<p><strong>www.ccim.be/ccim328/site/index.htm</strong></p>
<p><strong>merci pour :</strong></p>
<p><strong> </strong></p>
<p><strong><em><span style="text-decoration:underline;"><span style="color:#ff0000;">Van Lancker Luc</span></span></em></strong></p>
<p><strong> </strong></p>
<p><em><span style="text-decoration:underline;"><span style="color:#ff0000;">Rue des Brasseurs, 22</span></span></em></p>
<p><em><span style="text-decoration:underline;"><span style="color:#ff0000;">7700 Mouscron Belgium</span></span></em></p>
<p><em><span style="text-decoration:underline;"><span style="color:#ff0000;">Vanlancker.Luc@ccim.be</span></span></em></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/macherif.wordpress.com/39/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/macherif.wordpress.com/39/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/macherif.wordpress.com/39/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/macherif.wordpress.com/39/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/macherif.wordpress.com/39/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/macherif.wordpress.com/39/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/macherif.wordpress.com/39/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/macherif.wordpress.com/39/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/macherif.wordpress.com/39/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/macherif.wordpress.com/39/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/macherif.wordpress.com/39/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/macherif.wordpress.com/39/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/macherif.wordpress.com/39/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/macherif.wordpress.com/39/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=macherif.wordpress.com&amp;blog=11173678&amp;post=39&amp;subd=macherif&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://macherif.wordpress.com/2010/01/28/apprendre-le-javascript/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/472cd39002ff2e03bd10e3b7488c2ee1?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">macherif</media:title>
		</media:content>
	</item>
		<item>
		<title>Home</title>
		<link>http://macherif.wordpress.com/2009/12/30/hello-world/</link>
		<comments>http://macherif.wordpress.com/2009/12/30/hello-world/#comments</comments>
		<pubDate>Wed, 30 Dec 2009 21:32:49 +0000</pubDate>
		<dc:creator>macherif</dc:creator>
				<category><![CDATA[intro]]></category>
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Welcome to my personal blog macherif© by MOHAMED AMINE CHERIF Bienvenu sur mon blog macherif© MOHAMED AMINE CHERIF<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=macherif.wordpress.com&amp;blog=11173678&amp;post=1&amp;subd=macherif&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Welcome to my personal blog macherif© by MOHAMED AMINE CHERIF</p>
<p>Bienvenu sur mon blog macherif©  MOHAMED AMINE CHERIF</p>
<span style='text-align:center;display:block;'><object width='400' height='330' type='application/x-shockwave-flash' data='http://video.google.com/googleplayer.swf?docId=4693364234258034343'><param name='allowScriptAccess' value='never' /><param name='movie' value='http://video.google.com/googleplayer.swf?docId=4693364234258034343'/><param name='quality' value='best'/><param name='bgcolor' value='#ffffff' /><param name='scale' value='noScale' /><param name='wmode' value='opaque' /></object></span>
<span style='text-align:center;display:block;'><object width='400' height='330' type='application/x-shockwave-flash' data='http://video.google.com/googleplayer.swf?docId=6501759503098709191'><param name='allowScriptAccess' value='never' /><param name='movie' value='http://video.google.com/googleplayer.swf?docId=6501759503098709191'/><param name='quality' value='best'/><param name='bgcolor' value='#ffffff' /><param name='scale' value='noScale' /><param name='wmode' value='opaque' /></object></span>
<div class="wp-caption aligncenter" style="width: 140px"><img title="EXTJS" src="http://images.google.com/url?source=imgres&amp;ct=tbn&amp;q=http://www.objis.com/formation-java/IMG/gif/ext_logo.gif&amp;usg=AFQjCNHvlrQfpv9z1laLL57dLAZLszCQ7w" alt="" width="130" height="130" /><p class="wp-caption-text">EXTJS</p></div>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/macherif.wordpress.com/1/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/macherif.wordpress.com/1/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/macherif.wordpress.com/1/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/macherif.wordpress.com/1/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/macherif.wordpress.com/1/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/macherif.wordpress.com/1/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/macherif.wordpress.com/1/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/macherif.wordpress.com/1/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/macherif.wordpress.com/1/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/macherif.wordpress.com/1/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/macherif.wordpress.com/1/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/macherif.wordpress.com/1/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/macherif.wordpress.com/1/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/macherif.wordpress.com/1/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=macherif.wordpress.com&amp;blog=11173678&amp;post=1&amp;subd=macherif&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://macherif.wordpress.com/2009/12/30/hello-world/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/472cd39002ff2e03bd10e3b7488c2ee1?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">macherif</media:title>
		</media:content>

		<media:content url="http://images.google.com/url?source=imgres&#38;ct=tbn&#38;q=http://www.objis.com/formation-java/IMG/gif/ext_logo.gif&#38;usg=AFQjCNHvlrQfpv9z1laLL57dLAZLszCQ7w" medium="image">
			<media:title type="html">EXTJS</media:title>
		</media:content>
	</item>
	</channel>
</rss>
