<?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/"
	>

<channel>
	<title>Cours développement Web</title>
	<atom:link href="http://www.estsurinternet.com/cours_web/?feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://www.estsurinternet.com/cours_web</link>
	<description>par Didier 'Matt Murdock' Deléglise</description>
	<pubDate>Wed, 18 Apr 2012 13:51:02 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.7</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>POP3 : Post Office Protocol</title>
		<link>http://www.estsurinternet.com/cours_web/?p=282</link>
		<comments>http://www.estsurinternet.com/cours_web/?p=282#comments</comments>
		<pubDate>Fri, 22 May 2009 15:12:57 +0000</pubDate>
		<dc:creator>idupe</dc:creator>
		
		<category><![CDATA[I - Protocoles réseau]]></category>

		<guid isPermaLink="false">http://www.estsurinternet.com/cours_web/?p=282</guid>
		<description><![CDATA[PROPRIETES
Protocole de récupération du courrier.
Version 3 de POP.
Le plus répandu.
Décrit de manière détaillée dans la RFC 1939.
Comme il a été dit SMTP ne s&#8217;intéresse qu&#8217;au transfert des messages et fonctionne bien à la condition que le destinataire soit connecté à Internet. En cas d&#8217;échec, les courriers ne sont pas transmis. C&#8217;est pourquoi, de manière générale, le [...]]]></description>
			<content:encoded><![CDATA[<h1>PROPRIETES</h1>
<p>Protocole de récupération du courrier.</p>
<p>Version 3 de POP.</p>
<p>Le plus répandu.</p>
<p>Décrit de manière détaillée dans la RFC 1939.</p>
<p>Comme il a été dit SMTP ne s&#8217;intéresse qu&#8217;au transfert des messages et fonctionne bien à la condition que le destinataire soit connecté à Internet. En cas d&#8217;échec, les courriers ne sont pas transmis. C&#8217;est pourquoi, de manière générale, le transfert de courriers se fait en deux phases et met en jeu plusieurs protocoles. SMTP est exécuté sur des ordinateurs toujours connectés à Internet qui servent de relai à l&#8217;échange de courriers entre les ordinateurs destinataires. Un autre protocole sera exécuté pour l&#8217;acheminement du courrier vers l&#8217;ordinateur de l&#8217;utilisateur final. Deux  protocoles prennent en charge cette dernière fonction : POP3 et IMAP4 qui sera vu dans un autre chapître.</p>
<h1>MODE OPERATOIRE</h1>
<ol>
<li>Le client POP3 érablit une connexion TCT vers le serveur POP3 où sont stockées les boites à lettres.</li>
<li>L&#8217;utilisateur s&#8217;authentifie par un nom d&#8217;utilisateur (login) et mot de passe.</li>
<li>Une fois l&#8217;identification validée, le client POP3  commande le retrait des messages de la boite aux lettres.</li>
<li>Le serveur transfère les messages au client sous forme de fichiers texte au format standard.</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://www.estsurinternet.com/cours_web/?feed=rss2&amp;p=282</wfw:commentRss>
		</item>
		<item>
		<title>SMTP : Protocole simple de transfert de messages</title>
		<link>http://www.estsurinternet.com/cours_web/?p=279</link>
		<comments>http://www.estsurinternet.com/cours_web/?p=279#comments</comments>
		<pubDate>Fri, 22 May 2009 14:52:09 +0000</pubDate>
		<dc:creator>idupe</dc:creator>
		
		<category><![CDATA[I - Protocoles réseau]]></category>

		<guid isPermaLink="false">http://www.estsurinternet.com/cours_web/?p=279</guid>
		<description><![CDATA[Propriétés
Simple Message Transfert Protocol
Protocole d&#8217;échange de messages entre ordinateurs. Fonctionne en mode connecté. Utilise par défaut le port 25.
S&#8217;intéresse au transfert des messages envoyés par un client à un serveur.
Décrit de manière détaillée dans la RFC 2821.
Les échanges entre le client et le serveur se font sous forme de texte.
De plus,SMTP permet au serveur d&#8217;informer le [...]]]></description>
			<content:encoded><![CDATA[<h1>Propriétés</h1>
<p>Simple Message Transfert Protocol</p>
<p>Protocole d&#8217;échange de messages entre ordinateurs. Fonctionne en mode connecté. Utilise par défaut le port 25.</p>
<p>S&#8217;intéresse au transfert des messages envoyés par un client à un serveur.</p>
<p>Décrit de manière détaillée dans la RFC 2821.</p>
<p>Les échanges entre le client et le serveur se font sous forme de texte.</p>
<p>De plus,SMTP permet au serveur d&#8217;informer le client d&#8217;un changement d&#8217;adresse de l&#8217;utilisateur et permet aussi de re-diriger le client vers la nouvelle adresse.</p>
<p>En revanche, SMTP ne gère pas les erreurs de diffusion du courrier, c&#8217;est au client de décider s&#8217;il interrompt l&#8217;échange ou bien s&#8217;il le poursuit en signalant les erreurs. En général, les erreurs sont signalées à l&#8217;émetteur par le courreir électronique.</p>
<p> </p>
<h1>MODE OPERATOIRE</h1>
<ol>
<li>Le client établit  la connexion</li>
<li>Dès qu&#8217;il est prêt, le serveur répond : 220 READY FOR MAIL (prêt pour l&#8217;échange de mail)</li>
<li>Le client répond : EHLO. </li>
<li>Le serveur se présente.</li>
<li>La communication est établie.</li>
<li>Le client peut alors envoyer ou recevoir des messages ou bien fermer la connexion.</li>
</ol>
<p>Chaque message reçu doit être acquitté.</p>
<h1>LES COMMANDES SMTP D&#8217;UN ECHANGE DE COURRIER</h1>
<ul>
<li>MAIL FROM : identifie l&#8217;expéditeur du message et donne l&#8217;adresse où seront envoyées les erreurs.</li>
</ul>
<pre>Illustration : MAIL FROM <a href="mailto:DD@free.fr">DD@free.fr</a></pre>
<ul>
<li>250 OK  : le destinataire répond à la commande MAIL que tout va bien.</li>
<li>RCPT TO : identifie le destinataire du courrier.</li>
</ul>
<pre>Illustration : RCPT TO <a href="mailto:marie@free.fr">marie@free.fr</a></pre>
<p>La commande RCPT vient après une émission réussie de la commande  MAIL réussie. L&#8217;expéditeur du message peut envoyer plusieurs RCPT par courrier.</p>
<p>Pour chaque commande RCPT envoyée, le destinataire doit accuser réception en répondant 250 OK (utilisateur connu) ou bien 550 No such user here (utilisateur inconnu).</p>
<p>Après réception de tous les accusés,</p>
<ul>
<li>DATA  : l&#8217;expéditeur indique au destinataire qu&#8217;il est prêt à transmettre le message. Le destinataire répond par un 354 Start mail input (début de la réception du message) et précise la séquence de caractères à utiliser pour signaler la fin des messages.</li>
<li>L&#8217;échange se termine avec la séquence suivante : CR (retour chariot), LF (saut de ligne), . (point), CR et LF</li>
<li>QUIT : ferme la communication.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.estsurinternet.com/cours_web/?feed=rss2&amp;p=279</wfw:commentRss>
		</item>
		<item>
		<title>Exemple d&#8217;utilisation du protocole HTTP</title>
		<link>http://www.estsurinternet.com/cours_web/?p=251</link>
		<comments>http://www.estsurinternet.com/cours_web/?p=251#comments</comments>
		<pubDate>Sun, 03 May 2009 19:01:25 +0000</pubDate>
		<dc:creator>idupe</dc:creator>
		
		<category><![CDATA[I - Protocoles réseau]]></category>

		<guid isPermaLink="false">http://www.estsurinternet.com/cours_web/?p=251</guid>
		<description><![CDATA[
Installer un serveur HTTP, WAMP par exemple, à télécharger sur Internet
Créer un dossier appelé MONDOSSIER dans le sous-répertoire  www du répertoire wamp
Recopier le code ci-après  dans un fichier texte nommé monfichier.html

&#60;BODY&#62;
&#60;HEAD&#62;
&#60;H1&#62;Voici un exemple d&#8217;utilisation du protocole HTTP&#60;/H1&#62;
&#60;/HEAD&#62;
&#60;p&#62;
&#60;a href=&#8221;http://fr.wikipedia.org/wiki/marseille&#8221; title=&#8221;Article très complet sur Wikipedia&#8221;&#62;Ici un lien vers un article sur wikipedia&#60;/a&#62;
&#60;/p&#62;
&#60;p&#62;
&#60;a href=&#8221;marseille.jpg&#8221; title=&#8221;Ici un lien vers [...]]]></description>
			<content:encoded><![CDATA[<ol>
<li>Installer un serveur HTTP, WAMP par exemple, à télécharger sur Internet</li>
<li>Créer un dossier appelé MONDOSSIER dans le sous-répertoire  www du répertoire wamp</li>
<li>Recopier le code ci-après  dans un fichier texte nommé monfichier.html</li>
</ol>
<p>&lt;BODY&gt;<br />
&lt;HEAD&gt;<br />
&lt;H1&gt;Voici un exemple d&#8217;utilisation du protocole HTTP&lt;/H1&gt;<br />
&lt;/HEAD&gt;<br />
&lt;p&gt;<br />
&lt;a href=&#8221;http://fr.wikipedia.org/wiki/marseille&#8221; title=&#8221;Article très complet sur Wikipedia&#8221;&gt;Ici un lien vers un article sur wikipedia&lt;/a&gt;<br />
&lt;/p&gt;<br />
&lt;p&gt;<br />
&lt;a href=&#8221;marseille.jpg&#8221; title=&#8221;Ici un lien vers une image sur le répertoire courant&#8221;&gt;Découvrez Marseille&lt;/a&gt;<br />
&lt;/p&gt;<br />
&lt;p&gt;et pour<br />
&lt;a href=&#8221;mailto:dd@dd.com?subject=contact&#8221;&gt;<br />
envoyer un mail<br />
&lt;/a&gt;&lt;/p&gt;<br />
&lt;p&gt;une image externe sur le site a DD,<br />
dans le répertoire &#8216;uploads&#8217; en http :<br />
&lt;a href=&#8221;http://dd.estsurinternet.com/wp-content/uploads/1.jpg&#8221;&gt;<br />
la<br />
&lt;/a&gt;&lt;/p&gt;<br />
&lt;/BODY&gt;</p>
<ol>
<li>Appelons maintenant ce fichier depuis  le navigateur de votre choix (Internet Explorer ou Mozilla Firefox) en recopiant l&#8217;URL suivante :</li>
</ol>
<p>http://localhost/MONDOSSIER/monfichier.html</p>
<ol>
<li>Allons voir dans le répertoire C:wamplogs le contenu du fichier access, on y trouve le message reçu par le serveur HTTP à notre requête précédente :</li>
</ol>
<p>&#8220;GET /DOSSIERTEST/TEST.html HTTP/1.1&#8243; 200 733</p>
<p>&#8220;GET /images/marseille.jpg HTTP/1.1&#8243; 200 23829</p>
<p>Le code retour 200  indique que le document a bien été trouvé.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.estsurinternet.com/cours_web/?feed=rss2&amp;p=251</wfw:commentRss>
		</item>
		<item>
		<title>En-têtes HTTP 1.1</title>
		<link>http://www.estsurinternet.com/cours_web/?p=236</link>
		<comments>http://www.estsurinternet.com/cours_web/?p=236#comments</comments>
		<pubDate>Wed, 29 Apr 2009 15:35:05 +0000</pubDate>
		<dc:creator>idupe</dc:creator>
		
		<category><![CDATA[I - Protocoles réseau]]></category>

		<guid isPermaLink="false">http://www.estsurinternet.com/cours_web/?p=236</guid>
		<description><![CDATA[Accept
est utilisé pour spécifier les types de media acceptés dans la réponse.
Exemple :
Accept: text/html; q=1.0, text/*; q=0.8, image/gif; q=0.6, image/jpeg; q=0.6, image/*; q=0.5, */*; q=0.1
L&#8217;asterisque &#8220;*&#8221; est utilisée pour regrouper les types de media, &#8220;*/*&#8221; indique tous les types de media et &#8220;type/*&#8221; indique tous les sous-types de ce type.
Chaque type peut être associé à [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Accept</strong><br />
est utilisé pour spécifier les types de media acceptés dans la réponse.<br />
Exemple :<br />
Accept: text/html; q=1.0, text/*; q=0.8, image/gif; q=0.6, image/jpeg; q=0.6, image/*; q=0.5, */*; q=0.1<br />
L&#8217;asterisque &#8220;*&#8221; est utilisée pour regrouper les types de media, &#8220;*/*&#8221; indique tous les types de media et &#8220;type/*&#8221; indique tous les sous-types de ce type.<br />
Chaque type peut être associé à un facteur de préférence noté  &#8220;q&#8221; ,  sur une échelle de 0 à 1. La valeur par défaut est 1.<br />
Dans l&#8217;exemple, le navigateur prend en charge divers types de media texte et html en préférant le html au texte et les images de type jpeg et gif aux autres types.</p>
<p>Accept-Charset<br />
est utilisé pour indiquer quels jeux de caractères sont acceptables par la réponse<br />
Exemple :   Accept-Charset: iso-8859-5, unicode-1-1;q=0.8</p>
<p>La valeur particulière &#8220;*&#8221;, si elle est présente dans le champ Accept-Charset inclut n&#8217;importe quel jeu de caractères (y compris  ISO-8859-1). Si aucune &#8220;*&#8221; n&#8217;est présente dans le champ Accept-Charset, alors les caractères non mentionnés de manière explicite ont une préférence à 0, excepté ISO-8859-1, qui a une préférence à 1 par défaut.</p>
<p>En l&#8217;absence d&#8217;entête Accept-Charset, tout jeu de caracère est acceptable par défaut.<br />
En présence d&#8217;une entête  Accept-Charset, et si le serveur ne peut répondre conformément, alors il se peut que le serveur renvoie le code retour 406 (not acceptable) en réponse à la requête.</p>
<p><strong>Accept-Encoding</strong></p>
<p>permet d&#8217;indiquer que le navigateur accepte les données compressées.</p>
<p>Exemple :</p>
<p>Accept-Encoding: compress;q=0.5, gzip;q=1.0</p>
<p>Dans cet exemple, le navigateur prend en charge le format  gzip de préférence, mais également le format compress.</p>
<p><strong>Accept-Language</strong><br />
restreint le jeu de langages acceptés pour la réponse<br />
Exemple :<br />
Accept-Language: fr, en-gb;q=0.8, en;q=0.7</p>
<p>signifie je préfère le français mais j&#8217;accepte également l&#8217;anglais.A language-range matches a language-tag if it exactly equals the tag, or if it exactly equals a prefix of the tag such that the first tag character following the prefix is &#8220;-&#8221;. The special range &#8220;*&#8221;, if present in the Accept-Language field, matches every tag not matched by any other range present in the Accept-Language field.</p>
<p><strong>Accept-Ranges</strong></p>
<p>permet au serveur de spécifier le type de requête acceptable pour une ressource<br />
Accept-Ranges: bytes</p>
<p>Accept-Ranges : none</p>
<p><strong>Age</strong></p>
<p>indique au cache la &#8220;fraîcheur &#8221; du document, c&#8217;est une valeur exprimée en secondes.<strong><br />
</strong></p>
<p><strong>Allow</strong><br />
indique les méthodes supportées par la ressource spécifiée à l&#8217;URI.<br />
En cas de méthode non autorisée, le serveur enverra un code retour 405(Method Not Allowed).</p>
<p>Exemple :</p>
<p>Allow: GET, HEAD, PUT</p>
<p><strong><br />
Authorization</strong><br />
Un utilisateur qui veut s&#8217;identifier auprès d&#8217;un serveur, dans le cas d&#8217;un code retour 401 par exemple, le fait en incluant un en-tête Authorization à la requête.</p>
<p><strong>Cache-Control</strong></p>
<p>Le navigateur ou le serveur peuvent donner des directives à un cache.<br />
L&#8217;en-tête Cache-Control a pour valeur une liste de directives, séparées par des virgules.</p>
<p>Note : L&#8217;en-tête Cache-Control n&#8217;est pas implémentée sous HTTP 1.0, la seule directive prise en charge est Pragma: no-cache.</p>
<p>Exemple :</p>
<pre>Cache-Control: max-stale=3600
La ressource devra être rafraîchie au-delà de 3600 secondes soit 1 heure.
Cache-Control: max-stale=0
La ressource devra être constamment rafraîchie.

Les valeurs possibles sont :
public:La réponse HTTP peut être mise en cache par n'importe quel cache.
private:La réponse est destinée à un client unique et ne doit pas être mise en cache par un cache partagé.
no-cache:aucune mise en cache de la ressource n'est autorisée.
no-store:Empêche le stockage sur disque de la donnée.
no-transform:indique au cache qu'il ne doit pas transformer le corps du message qu'il reçoit.
max-age:âge maximum d'une ressource-exprimé en seconde.
max-stale: précise le temps de mise en cache de l'élément-exprimé en secondes.
must-revalidate:force une reconnexion au serveur avec un If-Modified-Since et doit provoquer une erreur 505 si la page a disparu.

<strong>Connection</strong>
Cet en-tête peut être envoyé par le client ou le serveur et contient une liste de noms spécifiant les options à utiliser avec la connexion actuelle.
Si une option possède des paramètres ceux-ci sont spécifiés par l'en-tête portant le même nom que l'option
Connection: keep-alive
indique que la connexion reste ouverte, on dit qu'elle est persistante.
Connection: close
indique que la connexion doit être fermée après traitement de la requête en cours.

<strong>Content-Encoding</strong>
Permet d'indiquer le type de codage du corps de la requête.
Content-Encoding: gzip

<strong>Content-Language</strong>
Permet d'indiquer la lutilisée dans le document
Exemple :
Content-Language: fr

<strong>Content-Length</strong>
Permet d'indiquer la taille du corps du document, exprimé en nombre d'octets.
Exemple :
       Content-Length: 3495

<strong>Content-Location
</strong>permet de définir un emplacement de contenu.<strong>
Exemple :
</strong>Content-Location : http://www.domain.com/Default.htm

<strong>Content-Type</strong>
permet de définir le type de contenu du message.
Exemple :
Content-Type: text/html; charset=ISO-8859-4
Parmi les types de contenu, citons : - text/plain (texte uniquement) - text/HTML (texte plus html) - multipart/mixed - multipart/alternative

<strong>Date </strong>
Indique la date et l'heure à laquelle le message a été généré.
Exemple :
Date: Fri, 01 May 2009 20:00:31 GMT

<strong>Expires
</strong>indique la date et l'heure à partir de laquelle le message doit être considéré comme obsolète.<strong>
</strong>Exemple :
Expires: Fri, 01 May 2009 20:10:00 GMT
Les applications ne doivent pas enregistrer ces entités dans leur cache après la date spécifiée.
Pour autant, la présence d'un champ Expires ne signifie pas que la ressource originale n'a pas changé ou n'existe plus après cette date.

<strong>From</strong>
peut contenir l' adresse e-mail de l'utilisateur émetteur de la requête en respectant les spécifications définies dans la RFC 822 [9] modifiée par  RFC 1123 [8]:
Exemple :
      From: webmaster@w3.org

<strong>Host</strong>
spécifie le site et le numéro de port de la ressouce demandée.
Par défaut le port est 80 en HTTP.
Exemple :
GET /pub/WWW/ HTTP/1.1
       Host: www.w3.org
Cet en-tête est obligatoire pour toute requête HTTP.

<strong>If-Modified-Since</strong>
est utilisé avec une méthode pour la rendre conditionnelle.
Exemple :
If-Modified-Since: Sat, 29 Oct 2009 19:43:31 GMT

Si la ressource n'a pas été modifiée depuis le temps indiquée, elle ne sera pas renvoyée par le serveur. A la place, un code retour 304 (not modified)
sera retourné.
L'intérêt de cet en-tête est d'optimiser les informations en cache, en réduisant au maximum les transactions réseau.

<strong>Last-Modified</strong>

Indique la date et l'heure à laquelle le serveur pense que la ressource a été modifiée.
Exemple :
       Last-Modified: Fri, 01 May 2009 20:00:31 GMT

<strong>Location</strong>
est utilisé dans le cas de la re-direction d'une ressource.
Exemple :
Location: http://www.w3.org/pub/WWW/People.html
Le champ d'en-tête Location (réponse) renvoie la localisation exacte de la ressource identifiée par l'URI-visée de la requête.
Pour des réponses 3xx, ce champ indique l'URL "de préférence" donnée par le serveur pour la fonction de redirection automatique.
Une seule URI absolue peut être mentionnée à la fois.</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.estsurinternet.com/cours_web/?feed=rss2&amp;p=236</wfw:commentRss>
		</item>
		<item>
		<title>Codes retour HTTP</title>
		<link>http://www.estsurinternet.com/cours_web/?p=222</link>
		<comments>http://www.estsurinternet.com/cours_web/?p=222#comments</comments>
		<pubDate>Mon, 27 Apr 2009 14:32:23 +0000</pubDate>
		<dc:creator>idupe</dc:creator>
		
		<category><![CDATA[A- Introduction à  Internet]]></category>

		<category><![CDATA[I - Protocoles réseau]]></category>

		<guid isPermaLink="false">http://www.estsurinternet.com/cours_web/?p=222</guid>
		<description><![CDATA[


Code
Message
Détail ou action


 1XX

Codes d&#8217;information




100
Continue
Attendre la suite de la requête


101
Switching protocol
Le serveur a accepté le changement de protocole


 2XX
 Succès



200
OK
Requête traitée avec succès


201
Created
Requête traitée avec succès et création d&#8217;un document


202
Accepted
Requête traitée avec succès mais sans garantie de résultat


203
Non-authoritative information
Information retournée mais générée par une source non certifiée


204
No Content
Requête traitée avec succès mais pas d&#8217;information à [...]]]></description>
			<content:encoded><![CDATA[<table border="0" cellspacing="20" frame="border" align="left">
<tbody>
<tr>
<td>Code</td>
<td>Message</td>
<td>Détail ou action</td>
</tr>
<tr>
<td><strong> 1XX<br />
</strong></td>
<td><strong>Codes d&#8217;information<br />
</strong></td>
<td></td>
</tr>
<tr>
<td>100</td>
<td>Continue</td>
<td>Attendre la suite de la requête</td>
</tr>
<tr>
<td>101</td>
<td>Switching protocol</td>
<td>Le serveur a accepté le changement de protocole</td>
</tr>
<tr>
<td><strong> 2XX</strong></td>
<td><strong> Succès</strong></td>
<td></td>
</tr>
<tr>
<td>200</td>
<td>OK</td>
<td>Requête traitée avec succès</td>
</tr>
<tr>
<td>201</td>
<td>Created</td>
<td>Requête traitée avec succès et création d&#8217;un document</td>
</tr>
<tr>
<td>202</td>
<td>Accepted</td>
<td>Requête traitée avec succès mais sans garantie de résultat</td>
</tr>
<tr>
<td>203</td>
<td>Non-authoritative information</td>
<td>Information retournée mais générée par une source non certifiée</td>
</tr>
<tr>
<td>204</td>
<td>No Content</td>
<td>Requête traitée avec succès mais pas d&#8217;information à renvoyer</td>
</tr>
<tr>
<td>205</td>
<td>Reset Content</td>
<td>Requête traitée avec succès, la page courante peut être effacée</td>
</tr>
<tr>
<td>206</td>
<td>Partial Content</td>
<td>Une partie seulement de la requête a été transmise</td>
</tr>
<tr>
<td><strong>3XX </strong></td>
<td><strong>Redirection </strong></td>
<td></td>
</tr>
<tr>
<td>300</td>
<td>Multiple Choices</td>
<td>L&#8217;URI demandée se rapporte à plusieurs ressources</td>
</tr>
<tr>
<td>301</td>
<td>Moved Permanently</td>
<td>Document déplacé de façon permanente</td>
</tr>
<tr>
<td>302</td>
<td>Moved Temporarily</td>
<td>Document déplacé de façon temporaire</td>
</tr>
<tr>
<td>303</td>
<td>See Other</td>
<td>La réponse à cette requête est ailleurs</td>
</tr>
<tr>
<td>304</td>
<td>Not Modified</td>
<td>Document non-modifié depuis la dernière requête</td>
</tr>
<tr>
<td>305</td>
<td>Use Proxy</td>
<td>La requête doit être ré-adressée au proxy</td>
</tr>
<tr>
<td>307</td>
<td>Temporary Redirect</td>
<td>La requête doit être redirigée temporairement vers l&#8217;URI spécifiée</td>
</tr>
<tr>
<td><strong>4XX</strong></td>
<td><strong>Erreur du client</strong></td>
<td></td>
</tr>
<tr>
<td>400</td>
<td>Bad Request</td>
<td>La syntaxe de la requête est erronée</td>
</tr>
<tr>
<td>401</td>
<td>Unauthorized</td>
<td>Accès à la ressource refusé</td>
</tr>
<tr>
<td>402</td>
<td>Payment Required</td>
<td>Paiement requis pour accéder à la ressource (non utilisé)</td>
</tr>
<tr>
<td>403</td>
<td>Forbidden</td>
<td>Refus de traitement de la requête</td>
</tr>
<tr>
<td>404</td>
<td>Not Found</td>
<td>Document non trouvé</td>
</tr>
<tr>
<td>405</td>
<td>Method Not Allowed</td>
<td>Méthode de requête non autorisée</td>
</tr>
<tr>
<td>406</td>
<td>Not Acceptable</td>
<td>Toutes les réponses possibles seront refusées.</td>
</tr>
<tr>
<td>407</td>
<td>Proxy Authentication Required</td>
<td>Accès à la ressource autorisé par identification avec le proxy</td>
</tr>
<tr>
<td>408</td>
<td>Request Time-out</td>
<td>Temps d&#8217;attente d&#8217;une réponse du serveur écoulé</td>
</tr>
<tr>
<td>409</td>
<td>Conflict</td>
<td>La requête ne peut être traitée à l&#8217;état actuel</td>
</tr>
<tr>
<td>410</td>
<td>Gone</td>
<td>La ressource est indisponible et aucune adresse de redirection n&#8217;est connue</td>
</tr>
<tr>
<td>411</td>
<td>Length Required</td>
<td>La longueur de la requête n&#8217;a pas été précisée</td>
</tr>
<tr>
<td>412</td>
<td>Precondition Failed</td>
<td>Préconditions envoyées par la requête non-vérifiées</td>
</tr>
<tr>
<td>413</td>
<td>Request Entity Too Large</td>
<td>Traitement abandonné dû à une requête trop importante</td>
</tr>
<tr>
<td>414</td>
<td>Request-URI Too Long</td>
<td>URI trop longue</td>
</tr>
<tr>
<td>415</td>
<td>Unsupported Media Type</td>
<td>Format de requête non-supportée pour une méthode et une ressource données</td>
</tr>
<tr>
<td>416</td>
<td>Requested range unsatisfiable</td>
<td>Champs d&#8217;en-tête de requête &#8216;range&#8217; incorrect.</td>
</tr>
<tr>
<td>417</td>
<td>Expectation failed</td>
<td>Comportement attendu et défini dans l&#8217;en-tête de la requête insatisfaisable</td>
</tr>
<tr>
<td><strong>5XX</strong></td>
<td><strong>Erreur du serveur</strong></td>
<td></td>
</tr>
<tr>
<td>500</td>
<td>Internal Server Error</td>
<td>Erreur interne du serveur</td>
</tr>
<tr>
<td>501</td>
<td>Not Implemented</td>
<td>Fonctionnalité réclamée non supportée par le serveur</td>
</tr>
<tr>
<td>502</td>
<td>Bad Gateway ou Proxy Error</td>
<td>Mauvaise réponse envoyée à un serveur intermédiaire par un autre serveur.</td>
</tr>
<tr>
<td>503</td>
<td>Service Unavailable</td>
<td>Service indisponible</td>
</tr>
<tr>
<td>504</td>
<td>Gateway Time-out</td>
<td>Temps d&#8217;attente d&#8217;une réponse d&#8217;un serveur à un serveur intermédiaire écoulé</td>
</tr>
<tr>
<td>505</td>
<td>HTTP Version not supported</td>
<td>Version HTTP non gérée par le serveur</td>
</tr>
<tr>
<td>509</td>
<td>Bandwidth Limit Exceeded</td>
<td>Code non officiel utilisé par de nombreux serveurs pour indiquer un dépassement de quota</td>
</tr>
<tr>
<td></td>
<td></td>
<td></td>
</tr>
</tbody>
</table>
]]></content:encoded>
			<wfw:commentRss>http://www.estsurinternet.com/cours_web/?feed=rss2&amp;p=222</wfw:commentRss>
		</item>
		<item>
		<title>Protocole HTTP</title>
		<link>http://www.estsurinternet.com/cours_web/?p=206</link>
		<comments>http://www.estsurinternet.com/cours_web/?p=206#comments</comments>
		<pubDate>Mon, 06 Apr 2009 11:18:01 +0000</pubDate>
		<dc:creator>idupe</dc:creator>
		
		<category><![CDATA[I - Protocoles réseau]]></category>

		<guid isPermaLink="false">http://www.estsurinternet.com/cours_web/?p=206</guid>
		<description><![CDATA[Propriétés
HTTP : Hyper Text Transfert Protocol, protocole de transfert hypertexte.
Mis au point en même temps qu’ HTML par Tim Berners Lee en 1990.
S’appuie (comme les autres protocoles du Net) sur TCP/IP.
Permet l&#8217;échange de document HYPERTEXTE entre un serveur HTTP et un client HTTP sur le World Wide Web.
Par défaut le port utilisé sur ce type [...]]]></description>
			<content:encoded><![CDATA[<h2>Propriétés</h2>
<p>HTTP : Hyper Text Transfert Protocol, protocole de transfert hypertexte.</p>
<p>Mis au point en même temps qu’ HTML par Tim Berners Lee en 1990.<br />
S’appuie (comme les autres protocoles du Net) sur TCP/IP.<br />
Permet l&#8217;échange de document HYPERTEXTE entre un serveur HTTP et un client HTTP sur le World Wide Web.</p>
<p>Par défaut le port utilisé sur ce type de requête sera 80.</p>
<p>Les versions actuellement utilisées sont la 1.0 et la 1.1</p>
<p>Voir la RFC 2616 du W3C pour la description complète du protocole, et notamment les paragraphes REQUEST et RESPONSE.</p>
<p>Le protocole le plus utilisé sur le NET.</p>
<pre>Exemple :</pre>
<pre>Quand je tape l'adresse : http://fr.wikipedia.org/wiki/Accueil sur mon navigateur Mozilla ou bien Internet Explorer, je demande au serveur Wikipedia de transférer la page d'accueil de l'encyclopédie à mon navigateur, en utilisant le protocole HTTP.</pre>
<pre>En guise de réponse, le serveur enverra le document à ma machine et mon navigateur l'affichera sous forme de page au format HTML.</pre>
<h2>Les phases du dialogue HTTP</h2>
<p>Le dialogue HTTP consiste en un échange de messages entre le client et le serveur, il s&#8217;effectue en plusieurs phases.</p>
<p><span style="text-decoration: underline;">Coté client :</span></p>
<ol>
<li> Ouverture de la connexion vers le serveur HTTP, et formulation de la requête HTTP</li>
<li> Envoi d’une entête précisant les caractéristiques du demandeur</li>
</ol>
<p><span style="text-decoration: underline;">Coté serveur :</span></p>
<ol>
<li> Traitement de la requête,</li>
<li>Précision des caractéristiques du serveur et de l’information demandée</li>
<li>Envoi de la réponse HTTP,  en général il s&#8217;agit du document</li>
</ol>
<h2>Construction d&#8217;une requête HTTP</h2>
<p>Une requête HTTP est une séquence de lignes envoyées au serveur par le client. Elle peut comprendre jusqu&#8217;à trois éléments :</p>
<ol>
<li>une ligne de requête elle-même composée de :
<ul>
<li>la <strong>méthode </strong>à utiliser :  elle indique le type de requête.</li>
<li>l&#8217;adresse de la ressource demandée :  l&#8217;<strong>URL</strong></li>
<li>la <strong>version du protocole</strong> utilisée par le client : HTTP 1.0 ou HTTP 1.1</li>
</ul>
</li>
<li>une ou plusieurs lignes d&#8217;<strong>en-tête</strong> :  facultatives, elles peuvent préciser les caractéristiques du navigateur, le type de contenu, l&#8217;adresse mel du client &#8230;</li>
<li>une ou plusieurs lignes constituant le <strong>corps de la requête</strong> : facultatives également,  elles doivent être séparées des lignes précédentes par une ligne vide (un retour chariot+1ligne blanche). Elles vont contenir par exemple les données d&#8217;un formulaire, dans le cas de la méthode POST.</li>
</ol>
<p>En résumé, une requête HTTP aura la forme suivante ,  sachant que les caractères rn insèrent un retour chariot et saut de ligne.</p>
<p>METHODE URL VERSION rn<br />
EN-TETE 1 : Valeur rn<br />
EN-TETE  2: Valeur rn</p>
<p>EN-TETE  N: Valeur rn</p>
<p>CORPS DE LA REQUETE</p>
<h3>Les METHODES</h3>
<p>GET et PUT sont les plus utilisées.</p>
<p>Les méthodes prises en charge par HTTP 1.0 sont les suivantes :</p>
<ul>
<li> GET : demande de ressource (document simple ou programme CGI ou Script Server qui renvoie des informations).</li>
</ul>
<ul>
<li> HEAD : demande d’information sur le document : peut servir pour le cache (test de la date), pour évaluer le type et la taille du document, etc.</li>
</ul>
<ul>
<li> POST : envoi de données , via un formulaire en général.</li>
</ul>
<p>Les paramètres sont transmis dans le corps de la requête, en général au format URL-encoded (param1=val&amp;param2=val2)</p>
<ul>
<li> PUT : stocke un document sur le serveur</li>
</ul>
<ul>
<li> DELETE : supprime un document du serveur (peu ou pas autorisé)</li>
</ul>
<ul>
<li> TRACE : demande de débogage (trace des serveurs proxy utilisés)</li>
</ul>
<ul>
<li> CONNECT : pour les connexions sécurisées HTTPS</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.estsurinternet.com/cours_web/?feed=rss2&amp;p=206</wfw:commentRss>
		</item>
		<item>
		<title>Introduction</title>
		<link>http://www.estsurinternet.com/cours_web/?p=185</link>
		<comments>http://www.estsurinternet.com/cours_web/?p=185#comments</comments>
		<pubDate>Tue, 31 Mar 2009 12:12:38 +0000</pubDate>
		<dc:creator>idupe</dc:creator>
		
		<category><![CDATA[I - Protocoles réseau]]></category>

		<guid isPermaLink="false">http://www.estsurinternet.com/cours_web/?p=185</guid>
		<description><![CDATA[Un protocole est un mode opératoire STANDARD permettant à des machines identifiées par leur adresse de communiquer à travers des réseaux informatiques et de télécommunications.
Il se présente comme un ensemble de règles, destinées à structurer le dialogue, formater les messages, séquencer les opérations, coder l&#8217;information, régler la transmission, tout comme un langage permet à des [...]]]></description>
			<content:encoded><![CDATA[<p>Un protocole est un mode opératoire STANDARD permettant à des machines identifiées par leur adresse de communiquer à travers des réseaux informatiques et de télécommunications.</p>
<p>Il se présente comme un ensemble de règles, destinées à structurer le dialogue, formater les messages, séquencer les opérations, coder l&#8217;information, régler la transmission, tout comme un langage permet à des personnes de communiquer à l&#8217;aide de mots et de règles de grammaires.</p>
<p>Un protocole est exécuté par un programme (logiciel de communication) installé sur les équipements qui communiquent.</p>
<p>Chaque protocole est décrit de manière détaillée dans une RFC (Requests For Comment) au W3C (source des standards du NET) .<br />
Le protocole le plus utilisé sur le Net est HTTP, le protocole de communication pour le transfert hypertexte.</p>
<p>Il est décrit dans le RFC 2616. Vous l&#8217;utilisez chaque fois que vous tapez une adresse du type &#8220;HTTP://www&#8230;.&#8221; sur la toile.<br />
Autre protocole communément utilisé : SMTP, pour envoyer et recevoir des messages à travers le Net.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.estsurinternet.com/cours_web/?feed=rss2&amp;p=185</wfw:commentRss>
		</item>
		<item>
		<title>CSS3 - guide de référence</title>
		<link>http://www.estsurinternet.com/cours_web/?p=182</link>
		<comments>http://www.estsurinternet.com/cours_web/?p=182#comments</comments>
		<pubDate>Mon, 27 Oct 2008 15:21:09 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[D - Feuilles de style CSS]]></category>

		<guid isPermaLink="false">http://moncours.estsurinternet.com/coursweb/?p=182</guid>
		<description><![CDATA[La table qui suit résume la syntaxe des sélecteurs W3C :


Séquence
Signification


*
tout élément


E
tout élément de type E


E[foo]
tout élément E portant l&#8217;attribut &#8220;foo&#8221;


E[foo="bar"]
tout élément E portant l&#8217;attribut&#8221; foo&#8221; et dont la valeur
de cet attribut est exactement &#8220;bar&#8221;


E[foo~="bar"]
tout élément E dont l&#8217;attribut &#8220;foo&#8221; contient une liste
de valeurs séparées par des espaces, l&#8217;une de ces valeurs étant exactement
égale à [...]]]></description>
			<content:encoded><![CDATA[<p>La table qui suit résume la syntaxe des sélecteurs W3C :</p>
<table border="1" width="400">
<tr>
<th class="pattern" height="47" width="27%">Séquence</th>
<th class="meaning" height="47" width="73%">Signification</th>
</tr>
<tr>
<td>*</td>
<td>tout élément</td>
</tr>
<tr>
<td>E</td>
<td>tout élément de type E</td>
</tr>
<tr>
<td>E[foo]</td>
<td>tout élément E portant l&#8217;attribut &#8220;foo&#8221;</td>
</tr>
<tr>
<td>E[foo="bar"]</td>
<td>tout élément E portant l&#8217;attribut&#8221; foo&#8221; et dont la valeur<br />
de cet attribut est exactement &#8220;bar&#8221;</td>
</tr>
<tr>
<td>E[foo~="bar"]</td>
<td>tout élément E dont l&#8217;attribut &#8220;foo&#8221; contient une liste<br />
de valeurs séparées par des espaces, l&#8217;une de ces valeurs étant exactement<br />
égale à &#8220;bar&#8221;</td>
</tr>
<tr>
<td>E[foo^="bar"]</td>
<td>tout élément E dont la valeur de l&#8217;attribut &#8220;foo&#8221; commence<br />
exactement par la chaîne &#8220;bar&#8221;</td>
</tr>
<tr>
<td>E[foo$="bar"]</td>
<td>tout élément E dont la valeur de l&#8217;attribut &#8220;foo&#8221; finit<br />
exactement par la chaîne &#8220;bar&#8221;</td>
</tr>
<tr>
<td>E[foo*="bar"]</td>
<td>tout élément E dont la valeur de l&#8217;attribut &#8220;foo&#8221; contient<br />
la sous-chaîne &#8220;bar&#8221;</td>
</tr>
<tr>
<td>E[lang|="en"]</td>
<td>tout élément E dont l&#8217;attribut &#8216;lang&#8221; est une liste<br />
de valeurs séparées par des tirets et commençant (à gauche) par &#8220;en&#8221;</td>
</tr>
<tr>
<td>E:root</td>
<td>un élément E, racine du document</td>
</tr>
<tr>
<td>E:nth-child(n)</td>
<td>un élément E qui est le n-ième enfant de son parent</td>
</tr>
<tr>
<td>E:nth-last-child(n)</td>
<td>un élément E qui est le n-ième enfant de son parent<br />
en comptant depuis le dernier enfant</td>
</tr>
<tr>
<td>E:nth-of-type(n)</td>
<td>un élément E qui est le n-ième enfant de son parent<br />
et de ce type</td>
</tr>
<tr>
<td>E:nth-last-of-type(n)</td>
<td>un élément E qui est le n-ième enfant de son parent<br />
et de ce type en comptant depuis le dernier enfant</td>
</tr>
<tr>
<td>E:first-child</td>
<td>un élément E, premier enfant de son parent</td>
</tr>
<tr>
<td>E:last-child</td>
<td>un élément E, dernier enfant de son parent</td>
</tr>
<tr>
<td>E:first-of-type</td>
<td>un élément E, premier enfant de son type</td>
</tr>
<tr>
<td>E:last-of-type</td>
<td>un élément E, dernier enfant de son type</td>
</tr>
<tr>
<td height="19">E:only-child</td>
<td height="19">un élément E, seul enfant de son parent</td>
</tr>
<tr>
<td>E:only-of-type</td>
<td>un élément E, seul enfant de son type</td>
</tr>
<tr>
<td>E:empty</td>
<td>un élément E qui n&#8217;a aucun enfant (y compris noeuds<br />
textuels purs)</td>
</tr>
<tr>
<td>E:link</p>
<p>E:visited</td>
<td>un élément E qui est la source d&#8217;un hyperlien dont la<br />
cible n&#8217;a pas encore été visitée (:link) ou a déjà été visitée (:visited)</td>
</tr>
<tr>
<td>E:active</p>
<p>E:hover</p>
<p>E:focus</td>
<td>un élément E pendant certaines actions de l&#8217;usager</td>
</tr>
<tr>
<td>E:target</td>
<td>un élément E qui est la cible de l&#8217;URL d&#8217;origine contenant<br />
lui-même un fragment identifiant.</td>
</tr>
<tr>
<td>E:lang(c)</td>
<td>un élément E dont le langage (humain) est c (le langage<br />
du document spécifie comment le langage humain est déterminé)</td>
</tr>
<tr>
<td>E:enabled</p>
<p>E:disabled</td>
<td>un élément d&#8217;interface utilisateur E qui est actif ou<br />
inactif.</td>
</tr>
<tr>
<td>E:checked</p>
<p>E:indeterminate</td>
<td>un élément d&#8217;interface utilisateur E qui est coché ou<br />
dont l&#8217;état est indéterminé (par exemple un bouton-radio ou une case à<br />
cocher)</td>
</tr>
<tr>
<td>E:contains(&#8221;foo&#8221;)</td>
<td>un élément E dont le contenu textuel concaténé contient<br />
la sous-chaîne &#8220;foo&#8221;</td>
</tr>
<tr>
<td>E::first-line</td>
<td>la première ligne formatée d&#8217;un élément E</td>
</tr>
<tr>
<td>E::first-letter</td>
<td>le premier caractère formaté d&#8217;un élément E</td>
</tr>
<tr>
<td>E::selection</td>
<td>la partie d&#8217;un élément E qui est actuellement sélectionnée/mise<br />
en exergue par l&#8217;usager</td>
</tr>
<tr>
<td>E::before</td>
<td>le contenu généré avant un élément E</td>
</tr>
<tr>
<td>E::after</td>
<td>le contenu généré après un élément E</td>
</tr>
<tr>
<td>E.warning</td>
<td><em>Uniquement en HTML</em>. Identique à E[class~="warning"].</td>
</tr>
<tr>
<td>E#myid</td>
<td>un élément E dont l&#8217;ID est égal à &#8220;myid&#8221;.</td>
</tr>
<tr>
<td>E:not(s)</td>
<td>un élément E qui n&#8217;est pas représenté par le sélecteur<br />
simple s</td>
</tr>
<tr>
<td>E F</td>
<td>un élément F qui est le descendant d&#8217;un élément E</td>
</tr>
<tr>
<td>E &gt; F</td>
<td>un élément F qui est le fils d&#8217;un élément E</td>
</tr>
<tr>
<td>E + F</td>
<td>un élément F immédiatement précédé par un élément E</td>
</tr>
<tr>
<td>E ~ F</td>
<td>un élément F précédé par un élément E</td>
</tr>
</table>
]]></content:encoded>
			<wfw:commentRss>http://www.estsurinternet.com/cours_web/?feed=rss2&amp;p=182</wfw:commentRss>
		</item>
		<item>
		<title>Positionnement en CSS</title>
		<link>http://www.estsurinternet.com/cours_web/?p=175</link>
		<comments>http://www.estsurinternet.com/cours_web/?p=175#comments</comments>
		<pubDate>Fri, 24 Oct 2008 12:24:36 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[D - Feuilles de style CSS]]></category>

		<guid isPermaLink="false">http://moncours.estsurinternet.com/coursweb/?p=175</guid>
		<description><![CDATA[Il est possible avec CSS de placer un élément ou l&#8217;on souhaite, dans une page.
Et de réaliser ainsi une mise en page évoluée, bien au dela de la simple présentation de contenu.
Pour positionner un élément dans une page on utilisera les propriétés :

position
left
right
top
bottom

Les positions se mesurent généralement en pixels. L&#8217;origine du repère (coordonnées 0,0) est [...]]]></description>
			<content:encoded><![CDATA[<p>Il est possible avec CSS de placer un élément ou l&#8217;on souhaite, dans une page.<br />
Et de réaliser ainsi une mise en page évoluée, bien au dela de la simple présentation de contenu.<br />
Pour positionner un élément dans une page on utilisera les propriétés :</p>
<ul>
<li>position</li>
<li>left</li>
<li>right</li>
<li>top</li>
<li>bottom</li>
</ul>
<p>Les positions se mesurent généralement en pixels. L&#8217;origine du repère (coordonnées 0,0) est en haut à gauche.</p>
<h3>Le Positionnement absolu</h3>
<p>Les positions des éléments seront repérées dans la fenêtre du navigateur, par la distance par rapport aux bords de la fenêtre.<br />
Ainsi pour mettre un élément à 30 pixel du bord en haut a gauche on écrira :</p>
<blockquote><p>h1 {<br />
position:absolute;<br />
top: 30px;<br />
left: 30px;<br />
}</p></blockquote>
<p>et pour le mettre en bas à droite (toujours à 30 pixels du coin) :</p>
<blockquote><p>h1 {<br />
position:absolute;<br />
bottom: 30px;<br />
right: 30px;<br />
}</p></blockquote>
<p>L&#8217;affichage de l&#8217;élement est ABSOLU et donc indépendant du contenu de la page, notamment des élément qui apparaissenet &#8216;avant&#8217; ou &#8216;après&#8217; dans le document MySQL.<br />
Ceci sera plus clair sur un exemple, soit le code suivant, qui réutilise notre positionnement absolu à 30 pixels :</p>
<blockquote><p>Avant titre Avant titre Avant titre<br />
Avant titre Avant titre Avant titre<br />
&lt;h1 style=&#8221;position:absolute; top: 30px; left: 30px;&#8221;&gt;<br />
Titre 1<br />
&lt;/h1&gt;<br />
Apres titre Apres titre Apres titre<br />
Apres titre Apres titre Apres titre</p></blockquote>
<p>cela donne à l&#8217;écran :</p>
<p><img src="http://moncours.estsurinternet.com/coursweb/wp-content/uploads/pos_abs.jpg" alt="pos_abs.jpg" /></p>
<p>Lorsque les éléments sont dans des boites, on positionnera&#8230;la boite.<br />
Ceci est possible de manière relative ou de manière absolue.</p>
<h3>Le positionnement relatif</h3>
<p>La valeur de la propriété position est &#8220;relative&#8221;.<br />
La différence avec précédemment est que la position est calculée.par rapport au contenu,<br />
qui précède ou qui suit l&#8217;élément et non plus indépendaemment.<br />
Reprenons l&#8217;exemple précédent en changeant simplement la propriété &#8216;position&#8217;.</p>
<blockquote><p>Avant titre Avant titre Avant titre<br />
Avant titre Avant titre Avant titre<br />
&lt;h1 style=&#8221;position:relative; top: 30px; left: 30px;&#8221;&gt;<br />
Titre 1<br />
&lt;/h1&gt;<br />
Apres titre Apres titre Apres titre<br />
Apres titre Apres titre Apres titre</p></blockquote>
<p>Cela nous donne désormais à l&#8217;écran :</p>
<p><img src="http://moncours.estsurinternet.com/coursweb/wp-content/uploads/pos_rel.jpg" alt="pos_rel.jpg" /></p>
<h3>Recouvrement et z-index</h3>
<p>Si l&#8217;on utilise les positions absolues, en décalant légèrement les uns par rapport aux autres il est facilement possible de faire des recouvrements.<br />
Sur une image (un magnifique Daredevil original de Johnny Romita !) par exemple :</p>
<blockquote><p>&lt;span style=&#8221;position:absolute; top: 0px; left: 0px; &#8220;&gt;<br />
&lt;img width=200 height=200 src=dd.jpg&gt;<br />
&lt;/span&gt;<br />
&lt;span style=&#8221;position:absolute; top: 60px; left: 60px;&#8221;&gt;<br />
&lt;img width=200 height=200 src=dd.jpg&gt;<br />
&lt;/span&gt;<br />
&lt;span style=&#8221;position:absolute; top: 120px; left: 120px;&#8221;&gt;<br />
&lt;img width=200 height=200 src=dd.jpg&gt;<br />
&lt;/span&gt;</p></blockquote>
<p>nous donnerait à l&#8217;écran :</p>
<p><img src="http://moncours.estsurinternet.com/coursweb/wp-content/uploads/3_daredevils.jpg" alt="3_daredevils.jpg" /></p>
<p>les images s&#8217;empilent naturellement, DANS L&#8217;ORDRE les unes sur les autres.</p>
<p>La propriété supplémentaire &#8216;z-index&#8217; va nous permettre de modifier l&#8217;ordre des couches !<br />
ET le code suivant :</p>
<blockquote><p>&lt;span style=&#8221;position:absolute; top: 0px; left: 0px; z-index:3;&#8221;&gt;<br />
&lt;img width=200 height=200 src=dd.jpg&gt;<br />
&lt;/span&gt;<br />
&lt;span style=&#8221;position:absolute; top: 60px; left: 60px; z-index:2;&#8221;&gt;<br />
&lt;img width=200 height=200 src=dd.jpg&gt;<br />
&lt;/span&gt;<br />
&lt;span style=&#8221;position:absolute; top: 120px; left: 120px; z-index:1;&#8221;&gt;<br />
&lt;img width=200 height=200 src=dd.jpg&gt;<br />
&lt;/span&gt;</p></blockquote>
<p>donnera :</p>
<p><img src="http://moncours.estsurinternet.com/coursweb/wp-content/uploads/3_daredevil_2.jpg" alt="3_daredevil_2.jpg" /></p>
<h3>Positionnement flottant</h3>
<p>Il est possible grace à la propriété &#8216;float&#8217; de positionner des éléments de la page, les uns à coté des autres, au lieu de les avoir les uns dessous les autres, par défaut.</p>
<h4>Texte multi colonnes</h4>
<p>On peut grace à cela envisager de mettre du texte sur plusieurs colonnes verticales, et faire une mise en page de type Journal. Les colonnes &#8216;flottant&#8217; les unes à coté des autres.<br />
Soit le code HTML suivant, sans Style particulier les 2 colonnes seront l&#8217;une à la suite de l&#8217;autre&#8230;</p>
<blockquote><p>&lt;div id=&#8221;colonne1&#8243;&gt;<br />
&lt;h2&gt; Colonne 1 &lt;/h2&gt;<br />
&lt;p&gt;et du texte a cote, encore du texte, toujours du texte, et du texte a cote,<br />
encore du texte, toujours du texte, et du texte a cote, encore du texte,<br />
toujours du texte, et du texte a cote, encore du texte, toujours du texte&lt;/p&gt;<br />
&lt;/div&gt;<br />
&lt;div id=&#8221;colonne2&#8243;&gt;<br />
&lt;h2&gt; Colonne 2 &lt;/h2&gt;<br />
&lt;p&gt;et du texte a cote, encore du texte, toujours du texte,<br />
et du texte a cote, encore du texte, toujours du texte,<br />
et du texte a cote, encore du texte, toujours du texte, et du texte a cote&lt;/p&gt;<br />
&lt;/div&gt;</p></blockquote>
<p>Mais en fixant la largeur à 150 pixels et mettant un attribut &#8216;float&#8217; left, puis en rajoutant  quelques fioritures sur le texte (police, justification et marges) comme ceci :</p>
<blockquote><p>&lt;style&gt;<br />
div {<br />
font-family: courier;<br />
margin:20px;<br />
text-align:justify;<br />
font-size:10px;<br />
}<br />
#colonne1 { float:left;<br />
width: 150px; }<br />
#colonne2 { float:left;<br />
width: 150px; }<br />
&lt;/style&gt;</p></blockquote>
<p>On obtiendra le résultat escompté :</p>
<p><img src="http://moncours.estsurinternet.com/coursweb/wp-content/uploads/multicol.gif" alt="multicol.gif" /></p>
<h4>Texte entourant une image</h4>
<p>Voyons par exemple, le code suivant qui affichera une image, puis dessous (sur une nouvelle ligne) du texte.</p>
<blockquote><p>&lt;div id=&#8221;photo&#8221;&gt;<br />
&lt;img src=&#8221;dd.jpg&#8221; alt=&#8221;Daredevil&#8221;&gt;<br />
&lt;/div&gt;<br />
&lt;p&gt;et du texte a cote, encore du texte, toujours du texte, et du texte a cote, encore du texte, toujours du texte, et du texte a cote, encore du texte, toujours du texte, et du texte a cote, encore du texte, toujours du texte, et du texte a cote, encore du texte, toujours du texte, et du texte a cote, encore du texte&#8230;&lt;/p&gt;</p></blockquote>
<p>Pour que l&#8217;image soit à gauche et que le texte l&#8217;entoure, il suffit de définir la largeur de la boîte contenant l&#8217;image, et d&#8217;utiliser la propriété float avec la valeur &#8220;left&#8221; :</p>
<p>Ainsi donc le code  suivant</p>
<blockquote><p>&lt;html&gt;<br />
&lt;head&gt;<br />
&lt;style&gt;<br />
body {font-size:12px;}<br />
#photo {<br />
float:left;<br />
width: 80px;<br />
}<br />
&lt;/style&gt;<br />
&lt;/head&gt;<br />
&lt;body&gt;<br />
&lt;div id=&#8221;photo&#8221;&gt;<br />
&lt;img src=&#8221;dd.gif&#8221; alt=&#8221;Daredevil&#8221;&gt;<br />
&lt;/div&gt;<br />
&lt;p&gt;et du texte a cote, encore du texte, toujours du texte,<br />
et du texte a cote, encore du texte, toujours du texte,<br />
et du texte a cote, encore du texte, toujours du texte,<br />
et du texte a cote, encore du texte, toujours du texte,<br />
et du texte a cote, encore du texte, toujours du texte,<br />
&lt;/p&gt;<br />
&lt;/body&gt;<br />
&lt;/html&gt;</p></blockquote>
<p>donnera :</p>
<div style="text-align: center"><img src="http://moncours.estsurinternet.com/coursweb/wp-content/uploads/img_float.gif" alt="img_float.gif" /></div>
<h4>Un template classique avec bandeau, sommaire et contenu</h4>
<p>Soit le code HTML suivant :</p>
<blockquote><p>&lt;body&gt;<br />
&lt;div id=&#8221;bandeau&#8221;&gt;&lt;h1&gt;bandeau bandeau bandeau bandeau&lt;/h1&gt;&lt;/div&gt;<br />
&lt;div id=&#8221;sommaire&#8221;&gt;<br />
&lt;ul&gt;<br />
&lt;li&gt; Chapitre 1 &lt;/li&gt;<br />
&lt;li&gt; Chapitre 2 &lt;/li&gt;<br />
&lt;li&gt; Chapitre 3 &lt;/li&gt;<br />
&lt;li&gt; Chapitre 4 &lt;/li&gt;<br />
&lt;/ul&gt;<br />
&lt;/div&gt;<br />
&lt;div id=&#8221;page&#8221;&gt;<br />
et du texte a cote, encore du texte, toujours du texte, et du texte a cote,<br />
encore du texte, toujours du texte, et du texte a cote, encore du texte,<br />
toujours du texte, et du texte a cote, encore du texte, toujours du texte,<br />
et du texte a cote, encore du texte, toujours du texte, et du texte a cote,<br />
encore du texte, toujours du texte, et du texte a cote, encore du texte,<br />
toujours du texte, et du texte a cote, encore du texte, toujours du texte,<br />
et du texte a cote, encore du texte, toujours du texte, et du texte a cote&#8230;<br />
&lt;/p&gt;<br />
&lt;/div&gt;<br />
&lt;/body&gt;<br />
&lt;/html&gt;</p></blockquote>
<p>Il apparait par défaut séquentiellement, encore une fois :</p>
<p><img src="http://moncours.estsurinternet.com/coursweb/wp-content/uploads/template1.gif" alt="template1.gif" /></p>
<p>Avec le style suivant, cela prend forme &#8230;</p>
<blockquote><p>&lt;STYLE&gt;<br />
div { text-align:justify; }<br />
#bandeau {<br />
width:500px;<br />
height:50px;<br />
background-color:#999999;<br />
}<br />
#sommaire {<br />
float:left;<br />
width:150px;<br />
height:300px;<br />
color:#FFFFFF;<br />
background-color:#000000;<br />
}<br />
#page {<br />
float:left;<br />
width:350px;<br />
height:300px;<br />
background-color:#EEEEEE;<br />
}<br />
&lt;/STYLE&gt;<br />
&lt;/head&gt;</p></blockquote>
<p>et on aura à l&#8217;écran :</p>
<p><img src="http://moncours.estsurinternet.com/coursweb/wp-content/uploads/template.gif" alt="template.gif" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.estsurinternet.com/cours_web/?feed=rss2&amp;p=175</wfw:commentRss>
		</item>
		<item>
		<title>Corrigés Annuaire PHP</title>
		<link>http://www.estsurinternet.com/cours_web/?p=143</link>
		<comments>http://www.estsurinternet.com/cours_web/?p=143#comments</comments>
		<pubDate>Wed, 30 Jan 2008 14:46:58 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[F - PHP]]></category>

		<category><![CDATA[Z - Corrigés]]></category>

		<guid isPermaLink="false">http://moncours.estsurinternet.com/coursweb/?p=143</guid>
		<description><![CDATA[Utilisation de chaînes de caractères
Voici un exemple de code affichant le résultat escompté :
&#60;?php
// anuaire1.php
$nom =&#8221;Deléglise&#8221;;
$prenom = &#8220;Didier&#8221;;
$tel= &#8220;0102030405&#8243;;
$message = &#8220;Bonjour &#8220;. $prenom.&#8221; &#8220;.$nom. &#8220;! &#60;BR&#62;&#8221;;
$message .= &#8220;Votre téléphone est le &#8220;. $tel;
print (&#8221;$message&#8221;);
?&#62;
rem : on a utilisé l&#8217;opérateur &#8216;.=&#8217; qui rajoute le contenu de la ligne à ce que contenait $message précédemment. On aurait [...]]]></description>
			<content:encoded><![CDATA[<h3>Utilisation de chaînes de caractères</h3>
<p>Voici un exemple de code affichant le résultat escompté :</p>
<blockquote><p>&lt;?php<br />
// anuaire1.php</p>
<p>$nom =&#8221;Deléglise&#8221;;<br />
$prenom = &#8220;Didier&#8221;;<br />
$tel= &#8220;0102030405&#8243;;<br />
$message = &#8220;Bonjour &#8220;. $prenom.&#8221; &#8220;.$nom. &#8220;! &lt;BR&gt;&#8221;;<br />
$message .= &#8220;Votre téléphone est le &#8220;. $tel;<br />
print (&#8221;$message&#8221;);<br />
?&gt;</p></blockquote>
<p>rem : on a utilisé l&#8217;opérateur &#8216;.=&#8217; qui rajoute le contenu de la ligne à ce que contenait $message précédemment. On aurait pu n&#8217;utiliser q&#8217; une seule occurence de la variable $message et tout concaténer sur une seule ligne, comme ceci :</p>
<blockquote><p>$message = &#8220;Bonjour &#8220;. $prenom.&#8221; &#8220;.$nom. &#8220;! &lt;BR&gt; Votre téléphone est le &#8220;. $tel;</p></blockquote>
<h3>Utilisation de tableaux</h3>
<blockquote><p>&lt;?php<br />
// anuaire2.php</p>
<p>// remplissage simple</p>
<p>$prenom = &#8220;Didier&#8221;;<br />
$nom =&#8221;Deléglise&#8221;;<br />
$tel= &#8220;0102030405&#8243;;</p>
<p>$ligne_annu[0]= $prenom;<br />
$ligne_annu[1]= $nom;<br />
$ligne_annu[2]= $tel;</p>
<p>print (&#8221;Prénom : &#8220;.$ligne_annu[0].&#8221;&lt;BR&gt;&#8221;);<br />
print (&#8221;Nom : &#8220;.$ligne_annu[1].&#8221; &lt;BR&gt;&#8221;);<br />
print (&#8221;No tel : &#8220;.$ligne_annu[2].&#8221; &lt;BR&gt;&#8221;);</p>
<p>// déclaration explicite de tableau<br />
// et remplissage avec indice&#8230;<br />
// on peut donc le faire dans n&#8217;importe quel ordre</p>
<p>$ligne_annu = Array(1=&gt;&#8221;Deléglise&#8221;, 0=&gt;&#8221;Didier&#8221;,2=&gt; &#8220;0102030405&#8243;);<br />
print (&#8221;Prénom : &#8220;.$ligne_annu[0].&#8221;&lt;BR&gt;&#8221;);<br />
print (&#8221;Nom : &#8220;.$ligne_annu[1].&#8221; &lt;BR&gt;&#8221;);<br />
print (&#8221;No tel : &#8220;.$ligne_annu[2].&#8221; &lt;BR&gt;&#8221;);</p>
<p>// et la sans indice, c&#8217;est + court<br />
// mais &#8230;l&#8217;ordre est important</p>
<p>$ligne_annu = Array(&#8221;Didier&#8221;, &#8220;Deléglise&#8221;, &#8220;0102030405&#8243;);<br />
print (&#8221;Prénom : &#8220;.$ligne_annu[0].&#8221;&lt;BR&gt;&#8221;);<br />
print (&#8221;Nom : &#8220;.$ligne_annu[1].&#8221; &lt;BR&gt;&#8221;);<br />
print (&#8221;No tel : &#8220;.$ligne_annu[2].&#8221; &lt;BR&gt;&#8221;);</p>
<p>?&gt;</p></blockquote>
<h3>Utilisation de fichiers</h3>
<blockquote><p> &lt;?php</p>
<p>// annuaire3.php</p>
<p>// recup des donnéesdu formulaire dans les variables<br />
// &#8230; &#8230;<br />
$prenom=&#8221;Didier&#8221; ; $nom=&#8221;Deleglise&#8221;; $tel=&#8221;0102030405&#8243;;</p>
<p>// preparation de la ligne<br />
$ligne = $prenom.&#8221;;&#8221;.$nom.&#8221;;&#8221;.$tel;</p>
<p>/* ouverture du fichier en écriture */<br />
$fp = fopen(&#8217;annuaire.txt&#8217;,'a&#8217;);<br />
fputs($fp, $ligne);<br />
fclose($fp);<br />
print (&#8221;Ecriture terminée&#8230;&#8221;);</p>
<p>?&gt;</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.estsurinternet.com/cours_web/?feed=rss2&amp;p=143</wfw:commentRss>
		</item>
		<item>
		<title>Exercice PHP : des  Annuaires …</title>
		<link>http://www.estsurinternet.com/cours_web/?p=142</link>
		<comments>http://www.estsurinternet.com/cours_web/?p=142#comments</comments>
		<pubDate>Tue, 29 Jan 2008 12:48:28 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[F - PHP]]></category>

		<category><![CDATA[Y - Exercices]]></category>

		<guid isPermaLink="false">http://moncours.estsurinternet.com/coursweb/?p=142</guid>
		<description><![CDATA[Le but de cet exercice est de réviser l&#8217;essentiel de PHP : les chaînes, les tableaux, les boucles, les fichiers, les formulaires et pour finir l&#8217;accès aux bases de données&#8230;et cela de manère très progressive.
Vous pourrez vous aider du cours et de la documentation officielle sur http://www.php.net/manual/fr
Dans tous les exercices on utilisera plus ou moins [...]]]></description>
			<content:encoded><![CDATA[<p>Le but de cet exercice est de réviser l&#8217;essentiel de PHP : les chaînes, les tableaux, les boucles, les fichiers, les formulaires et pour finir l&#8217;accès aux bases de données&#8230;et cela de manère très progressive.</p>
<p>Vous pourrez vous aider du cours et de la documentation officielle sur <a href="http://www.php.net/manual/fr" target="_blank">http://www.php.net/manual/fr</a><br />
Dans tous les exercices on utilisera plus ou moins les mêmes variables pour constituer l&#8217;annuaire :</p>
<ul>
<li>un nom (chaine de 25 caractères maxi</li>
<li>un prénom (chaine de 20 caractères maxi)</li>
<li>un no de téléphone fice (nombre de 10 chiffres)</li>
<li>un no de téléphone fice (nombre de 10 chiffres)</li>
<li>une adresse e-mail (chaine de 50 caractères maxi)</li>
</ul>
<p>remarque : les tailles maximums précisées ici, ne seront pas utilisées par le PHP, mais serviront de contraintes d&#8217;intégrité dans la base de données (Ainsi cette limite sera prise en compte quelque soit le programme (PHP ou non) qui insère des données&#8230;)</p>
<h3>1) utilisation de  chaînes de caractères</h3>
<p>Déclarez 4 variables pour les nom, prénom et no de téléphone fixe, plus une variable message.<br />
et donnez  une valeur à chacune.<br />
Affichez ensuite le message : &#8220;Bonjour  valeur_prenom valeur_nom !<br />
puis sur la ligne suivante : &#8220;Votre téléphone est le valeur_no_tel&#8221;</p>
<p>Utilisez des noms de variables clairs, sans espace, sans accents.<br />
Utilisez l&#8217;opérateur &#8216;.&#8217;  ou &#8216;.=&#8217; pour concaténer (ajouter) les chaînes de caractères les unes aux autres et constituer le message.</p>
<h3> 2) utilisation des tableaux</h3>
<p>Avec les mêmes variables que précédemment, déclarez en plus un tableau &#8216;ligne_annu&#8217; de 3 cases, et rangez chaque valeur dans une case du tableau. Ensuite affichez le message en lisant les cases du tableau no 0, 1 et 2.</p>
<p>Dans un deuxième temps créez un tableau  &#8216;annuaire&#8217; qui contiendra des &#8216;ligne_annu&#8217; (un tableau de tableaux en somme !).<br />
Remplissez 2 ou 3 lignes avec des valeurs, puis affichez les 3 lignes avec leur prénom, nom et no de tel, en utilisant une boucle &#8216;for&#8217; simple, avec un compteur allant de de 0 à 2, puis ensuite le même affichage avec une boucle &#8216;foreach&#8217;.</p>
<h3>3) récupération des données à partir d&#8217;un formulaire</h3>
<p>Ecrivez un formulaire HTML simple &#8216;form_annu.htm&#8217;, avec 5 champs texte à saisir : nom, prénom , nos de téléphones fixe et mobile et e-mail.<br />
Vous pourrez utiliser un éditeur HTML pour vous simplifier la vie, comme Dreawweaver par exemple.<br />
Attention à utiliser des noms de champs simples et à les retenir.<br />
Ce formulaire appelera un programme PHP &#8216;affiche_annu.php&#8217;, avec la méthode POST (rappel : c&#8217;est l&#8217;attribut &#8216;ACTION=&#8217; de la balise &lt;FORM&gt; du formulaure qui donne le nom du programme PHP et l&#8217;attribut &#8216;METHOD=POST&#8217;  qui précisera la méthode d&#8217;appel)</p>
<p>Ecrivez ensuite le programme PHP qui récupère les données du formulaire, les range dans un tableau et affiche les valeurs</p>
<h3>4) récupération des données et écriture dans un fichier sur le serveur</h3>
<p>Dans votre programme créez un fichier &#8216;annuaire.txt&#8217; sur le serveur et écrivez dedans la ligne contenant les infos récupérées du formulaire. On utilisera notamment les fonctions fopen() et fputs()</p>
<h3>5) récupération des données et insertion dans une table &#8216;annuaire&#8217; de MySQL</h3>
<p>Si elle n&#8217;existe pas créez une base de données nommée &#8216;TEST&#8221; , avec PHPMyAdmin par exemple.</p>
<p>Avec un éditeur de texte écrivez un script de création de table (ordre SQL &#8216;CREATE TABLE&#8217;)<br />
Sauvegardez ce script avec le nom &#8216;cr_table_annu.sql&#8217; puis exécutez le script avec un  client Mysql quelconque (mysql, PHPmyAdmin ou SQLdevelopper)  pour créer la table dans la base TEST.<br />
Insérez une ligne dans la table, avec vos coordonnées grace à PHPMyAdmin.</p>
<p>Modifiez ensuite le programme précédent pour remplacer l&#8217;écriture dans le fichier par uen insertion d&#8217;une 2eme ligne dans la table annuaire&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.estsurinternet.com/cours_web/?feed=rss2&amp;p=142</wfw:commentRss>
		</item>
		<item>
		<title>corrigé fonctions utilisateur</title>
		<link>http://www.estsurinternet.com/cours_web/?p=158</link>
		<comments>http://www.estsurinternet.com/cours_web/?p=158#comments</comments>
		<pubDate>Sun, 27 Jan 2008 23:24:11 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[F - PHP]]></category>

		<category><![CDATA[Z - Corrigés]]></category>

		<guid isPermaLink="false">http://moncours.estsurinternet.com/coursweb/?p=158</guid>
		<description><![CDATA[reprenons le code utilisé dans l&#8217;exercice précédent, et définissons d&#8217;abord une fonction avec ce code.
Nous appellerons ensuite en lui passant un paramètre &#8230;
&#60;?php
function majuscule ($ch) {
$res = strtoupper(substr($ch,0,1));
$res .= strtolower(substr($ch,1,strlen($ch)-1));
return $res;
}
$chaine =&#8221;bonjour LES aMis&#8221;;
print(majuscule($chaine));
?&#62;
]]></description>
			<content:encoded><![CDATA[<p>reprenons le code utilisé dans l&#8217;exercice précédent, et définissons d&#8217;abord une fonction avec ce code.<br />
Nous appellerons ensuite en lui passant un paramètre &#8230;</p>
<blockquote><p>&lt;?php</p>
<p>function majuscule ($ch) {<br />
$res = strtoupper(substr($ch,0,1));<br />
$res .= strtolower(substr($ch,1,strlen($ch)-1));<br />
return $res;<br />
}</p>
<p>$chaine =&#8221;bonjour LES aMis&#8221;;<br />
print(majuscule($chaine));</p>
<p>?&gt;</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.estsurinternet.com/cours_web/?feed=rss2&amp;p=158</wfw:commentRss>
		</item>
		<item>
		<title>exercice PHP - fonctions utilisateur</title>
		<link>http://www.estsurinternet.com/cours_web/?p=163</link>
		<comments>http://www.estsurinternet.com/cours_web/?p=163#comments</comments>
		<pubDate>Fri, 25 Jan 2008 16:09:27 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[F - PHP]]></category>

		<category><![CDATA[Y - Exercices]]></category>

		<guid isPermaLink="false">http://moncours.estsurinternet.com/coursweb/?p=163</guid>
		<description><![CDATA[reprendre le code PHP qui transforme une chaine avec une initiale en Majuscule et en faire une vraie fonction, avec un parametre et une valeur de retour, qu&#8217;on appellera par exemple &#8216;majuscule&#8217;.
]]></description>
			<content:encoded><![CDATA[<p>reprendre le code PHP qui transforme une chaine avec une initiale en Majuscule et en faire une vraie fonction, avec un parametre et une valeur de retour, qu&#8217;on appellera par exemple &#8216;majuscule&#8217;.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.estsurinternet.com/cours_web/?feed=rss2&amp;p=163</wfw:commentRss>
		</item>
		<item>
		<title>Opérateurs SQL de MySQL</title>
		<link>http://www.estsurinternet.com/cours_web/?p=150</link>
		<comments>http://www.estsurinternet.com/cours_web/?p=150#comments</comments>
		<pubDate>Wed, 23 Jan 2008 17:51:44 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[G - MySQL]]></category>

		<guid isPermaLink="false">http://moncours.estsurinternet.com/coursweb/?p=150</guid>
		<description><![CDATA[ Le tableau suivant décrit sommairement les principaux opérateurs utilisables dans le SQL de MySQL.
Ces opérateurs peuvent être utilisés en lieu et place des colonnes dans un ordre  SQL. Dans lal liste de colonne d&#8217;un SELECT, dans sa clause WHERE, etc.


:=
affectation de valeur


-, +, /, *, ^



DIV, %, MOD



&#124;&#124;, OR, XOR, &#124;, &#38;, &#38;&#38;, AND, NOT, [...]]]></description>
			<content:encoded><![CDATA[<p> Le tableau suivant décrit sommairement les principaux opérateurs utilisables dans le SQL de MySQL.<br />
Ces opérateurs peuvent être utilisés en lieu et place des colonnes dans un ordre  SQL. Dans lal liste de colonne d&#8217;un SELECT, dans sa clause WHERE, etc.</p>
<table border="1">
<tr>
<td>:=</td>
<td>affectation de valeur</td>
</tr>
<tr>
<td>-, +, /, *, ^</td>
<td></td>
</tr>
<tr>
<td>DIV, %, MOD</td>
<td></td>
</tr>
<tr>
<td>||, OR, XOR, |, &amp;, &amp;&amp;, AND, NOT, !</td>
<td></td>
</tr>
<tr>
<td>BETWEEN</td>
<td></td>
</tr>
<tr>
<td>CASE, WHEN, THEN, ELSE</td>
<td></td>
</tr>
<tr>
<td>=, &lt;=&gt;, &gt;=, &gt;, &lt;=, &lt;, &lt;&gt;, !=</td>
<td></td>
</tr>
<tr>
<td>IS, LIKE, REGEXP, IN</td>
<td></td>
</tr>
<tr>
<td>&lt;&lt;, &gt;&gt;</td>
<td></td>
</tr>
<tr>
<td>- (unary minus), ~ (unary bit inversion)</td>
<td></td>
</tr>
<tr>
<td>BINARY, COLLATE</td>
<td>&nbsp;</td>
</tr>
</table>
]]></content:encoded>
			<wfw:commentRss>http://www.estsurinternet.com/cours_web/?feed=rss2&amp;p=150</wfw:commentRss>
		</item>
		<item>
		<title>corrigé fonctions chaine et numériques</title>
		<link>http://www.estsurinternet.com/cours_web/?p=159</link>
		<comments>http://www.estsurinternet.com/cours_web/?p=159#comments</comments>
		<pubDate>Tue, 22 Jan 2008 23:26:12 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[F - PHP]]></category>

		<category><![CDATA[Z - Corrigés]]></category>

		<guid isPermaLink="false">http://moncours.estsurinternet.com/coursweb/?p=159</guid>
		<description><![CDATA[Voici la transformation de chaine:
&#60;?php
// initialisation
$ch =&#8221;bonjour LES aMis&#8221;;
// 1er caractere en majuscule
$res = strtoupper(substr($ch,0,1));
// les n-1 caracteres restant en minuscule
// et on concatene
$res .= strtolower(substr($ch,1,strlen($ch)-1));
print(&#8221;resultat ; $res&#8221;);
?&#62;
et pour le calcul de PI :
Avec une boucle connue à l&#8217;avance cela donne :
&#60;?php
$limite = 1000;
for ( $i=1; $i &#60; $limite ; $i++) {
$pi_sur_4 += -(pow(-1,$i)) * [...]]]></description>
			<content:encoded><![CDATA[<p>Voici la transformation de chaine:</p>
<blockquote><p>&lt;?php<br />
// initialisation<br />
$ch =&#8221;bonjour LES aMis&#8221;;<br />
// 1er caractere en majuscule<br />
$res = strtoupper(substr($ch,0,1));<br />
// les n-1 caracteres restant en minuscule<br />
// et on concatene<br />
$res .= strtolower(substr($ch,1,strlen($ch)-1));</p>
<p>print(&#8221;resultat ; $res&#8221;);<br />
?&gt;</p></blockquote>
<p>et pour le calcul de PI :</p>
<p>Avec une boucle connue à l&#8217;avance cela donne :</p>
<blockquote><p>&lt;?php<br />
$limite = 1000;<br />
for ( $i=1; $i &lt; $limite ; $i++) {<br />
$pi_sur_4 += -(pow(-1,$i)) *  1/(2*$i-1);<br />
// on affiche toutes les valeurs intermédiaires&#8230;<br />
// derriere le compteur de boucle<br />
print (&#8221;$i : &#8220;. 4*$pi_sur_4.&#8221;&lt;br&gt;&#8221;);<br />
}<br />
?&gt;</p></blockquote>
<p>Si l&#8217;on veut faire une boucle WHILE tant qu&#8217;on n&#8217;a pas atteint une certaine précision, on peut faire le code suivant :</p>
<blockquote><p>&lt;?php<br />
$i=0;<br />
do {<br />
$precedent = $pi;<br />
$i++;<br />
$pi_sur_4 += -(pow(-1,$i)) *  1/(2*$i-1);<br />
$pi = 4*$pi_sur_4;<br />
print (&#8221;$i : &#8220;. $pi.&#8221;&lt;br&gt;&#8221;);<br />
$differentiel = floor($pi*1000) - floor($precedent*1000);<br />
} while ($differentiel != 0)<br />
?&gt;</p></blockquote>
<p>Note : ce code n&#8217;est pas optimisé, on a rajouté volontairement des variables intermédiaires pour le rendre + lisible. On n&#8217;est pas non plus obligé de calculer PI à chaque boucle, PI/4 suffirait largement avec une multiplication par 4 unique à la fin&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.estsurinternet.com/cours_web/?feed=rss2&amp;p=159</wfw:commentRss>
		</item>
		<item>
		<title>Corrigé PDO - ordre SQL paramétré</title>
		<link>http://www.estsurinternet.com/cours_web/?p=147</link>
		<comments>http://www.estsurinternet.com/cours_web/?p=147#comments</comments>
		<pubDate>Tue, 22 Jan 2008 15:33:56 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[H - PHP et MySQL]]></category>

		<category><![CDATA[Z - Corrigés]]></category>

		<guid isPermaLink="false">http://moncours.estsurinternet.com/coursweb/?p=147</guid>
		<description><![CDATA[Voici un exemple de solution :
&#60;?php
// recup du parametre d&#8217;entree (URL ou formulaire)
$no_dep =$_GET['no_dep'];
// variable du programme
$chaine_sql =&#8217;SELECT ename, sal FROM emp WHERE deptno =:no_dep&#8217;;
$user=&#8217;DD&#8217;; $mdp=&#8217;DD&#8217;;
try {
$connexion = new PDO(&#8217;mysql:host=localhost;dbname=test&#8217;, $user, $mdp);
$ordre_sql = $connexion-&#62;prepare($chaine_sql);
// association param d&#8217;entree SQL et var PHP (bind)
$ordre_sql-&#62;bindParam(&#8217;:no_dep&#8217;, $no_dep, PDO::PARAM_INT);
// execution de l&#8217;ordre
$ordre_sql-&#62;execute();
print (&#8221;&#60;PRE&#62;&#8221;);
// boucle de fetch
while ($ligne = $ordre_sql-&#62;fetch(PDO::FETCH_NUM, PDO::FETCH_ORI_NEXT)) [...]]]></description>
			<content:encoded><![CDATA[<p>Voici un exemple de solution :</p>
<blockquote><p>&lt;?php</p>
<p>// recup du parametre d&#8217;entree (URL ou formulaire)<br />
$no_dep =$_GET['no_dep'];</p>
<p>// variable du programme<br />
$chaine_sql =&#8217;SELECT ename, sal FROM emp WHERE deptno =:no_dep&#8217;;<br />
$user=&#8217;DD&#8217;; $mdp=&#8217;DD&#8217;;</p>
<p>try {</p>
<p>$connexion = new PDO(&#8217;mysql:host=localhost;dbname=test&#8217;, $user, $mdp);</p>
<p>$ordre_sql = $connexion-&gt;prepare($chaine_sql);<br />
// association param d&#8217;entree SQL et var PHP (bind)<br />
$ordre_sql-&gt;bindParam(&#8217;:no_dep&#8217;, $no_dep, PDO::PARAM_INT);</p>
<p>// execution de l&#8217;ordre<br />
$ordre_sql-&gt;execute();<br />
print (&#8221;&lt;PRE&gt;&#8221;);</p>
<p>// boucle de fetch<br />
while ($ligne = $ordre_sql-&gt;fetch(PDO::FETCH_NUM, PDO::FETCH_ORI_NEXT)) {<br />
$data = $ligne[0] . &#8220;\t\t&#8221; . $ligne[1] . &#8220;\n&#8221;;<br />
print $data;<br />
}<br />
print (&#8221;&lt;/PRE&gt;&#8221;);</p>
<p>// fermenure de la connexion<br />
$connexion = null;</p>
<p>} catch (PDOException $e) {<br />
print &#8220;Erreur!: &#8221; . $e-&gt;getMessage() . &#8220;&lt;br/&gt;&#8221;;<br />
die();<br />
}</p>
<p>?&gt;</p></blockquote>
<p>Le résultat aura l&#8217;allure suivante :</p>
<blockquote>
<pre>Employes et salaires du departement 30

ALLEN		2342.56
WARD		2512.5
MARTIN		1512.5
BLAKE		3448.5
TURNER		1815
JAMES		1149.5</pre>
</blockquote>
<p>On aurait pu rajouter les nom de colonnes en utilisant la fonction <span class="methodname"><strong><strong>getColumnMeta, </strong></strong>mais </span> celle ci est assez mal supportée pour le moment, d&#8217;après la doc&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.estsurinternet.com/cours_web/?feed=rss2&amp;p=147</wfw:commentRss>
		</item>
		<item>
		<title>Exercice PHP / PDO - ordre SQL paramétré</title>
		<link>http://www.estsurinternet.com/cours_web/?p=146</link>
		<comments>http://www.estsurinternet.com/cours_web/?p=146#comments</comments>
		<pubDate>Mon, 21 Jan 2008 14:20:41 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[H - PHP et MySQL]]></category>

		<category><![CDATA[Y - Exercices]]></category>

		<guid isPermaLink="false">http://moncours.estsurinternet.com/coursweb/?p=146</guid>
		<description><![CDATA[Ecrire un programme PHP, utilisant l&#8217;extension PDO pour MySQL, qui lit les noms et salaires des employes d&#8217;un departement passé en paramètre.
Ce no de département  sera à la fois un paramètre du  programme PHP (passé dans l&#8217;URL par exemple) et un paramètre de l&#8217;ordre SELECT.
On utilisera un boucle de fetch simple, et on se limitera [...]]]></description>
			<content:encoded><![CDATA[<p>Ecrire un programme PHP, utilisant l&#8217;extension PDO pour MySQL, qui lit les noms et salaires des employes d&#8217;un departement passé en paramètre.</p>
<p>Ce no de département  sera à la fois un paramètre du  programme PHP (passé dans l&#8217;URL par exemple) et un paramètre de l&#8217;ordre SELECT.<br />
On utilisera un boucle de fetch simple, et on se limitera aux 2 colonnes demandées.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.estsurinternet.com/cours_web/?feed=rss2&amp;p=146</wfw:commentRss>
		</item>
		<item>
		<title>exercice PHP - fonctions chaine et numériques</title>
		<link>http://www.estsurinternet.com/cours_web/?p=162</link>
		<comments>http://www.estsurinternet.com/cours_web/?p=162#comments</comments>
		<pubDate>Sun, 20 Jan 2008 16:05:44 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[F - PHP]]></category>

		<category><![CDATA[Y - Exercices]]></category>

		<guid isPermaLink="false">http://moncours.estsurinternet.com/coursweb/?p=162</guid>
		<description><![CDATA[Transformation d&#8217;une chaine, avec une seule lettre capitale
Ecrivez le code PHP qui tranforme une chaine de caratère de plusieurs mots, en passant le 1er caractère en Majuscule et tout le reste en minuscules.
On utilisera pour ce faire les fonctions &#8217;str&#8230;&#8217; et l&#8217;opérateur de concaténation &#8216;.&#8217;
Calcul de PI avec des fonctions numériques et une boucle&#8230;
PI est [...]]]></description>
			<content:encoded><![CDATA[<h3>Transformation d&#8217;une chaine, avec une seule lettre capitale</h3>
<p>Ecrivez le code PHP qui tranforme une chaine de caratère de plusieurs mots, en passant le 1er caractère en Majuscule et tout le reste en minuscules.<br />
On utilisera pour ce faire les fonctions &#8217;str&#8230;&#8217; et l&#8217;opérateur de concaténation &#8216;.&#8217;</p>
<h3>Calcul de PI avec des fonctions numériques et une boucle&#8230;</h3>
<p>PI est un nombre formidable, et est la limite de suites de nombre assez simples.<br />
Par exemple PI/4 est limite de la somme des inverses des nombre entiers impairs (avec un signe + et - alterné sinon ce serait trop facile).</p>
<p>En d&#8217;autres termes</p>
<blockquote><p>PI/4 = 1-1/3+1/5-1/7+1/9-1/11+1/13 &#8230;</p></blockquote>
<p>Calculez pi/4&#8230;et donc Pi avec une boucle for  de 100, 1000 et 10000 chiffres<br />
Faites ensuite une boucle WHILE qui s&#8217;arrete quand on a 2 decimales de pi constantes.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.estsurinternet.com/cours_web/?feed=rss2&amp;p=162</wfw:commentRss>
		</item>
		<item>
		<title>Select simple PDO/Mysql</title>
		<link>http://www.estsurinternet.com/cours_web/?p=172</link>
		<comments>http://www.estsurinternet.com/cours_web/?p=172#comments</comments>
		<pubDate>Tue, 15 Jan 2008 16:30:19 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[G - MySQL]]></category>

		<category><![CDATA[H - PHP et MySQL]]></category>

		<guid isPermaLink="false">http://moncours.estsurinternet.com/coursweb/?p=172</guid>
		<description><![CDATA[Voici le code :
&#60;?php
// select simple avec PDO, vers MySQL
print (&#8217;&#60;link rel=&#8221;stylesheet&#8221; href=&#8221;gris.css&#8221;&#62;&#8217;);
try {
$db=&#8217;test&#8217;; $user=&#8217;dd&#8217;; $mdp=&#8217;dd&#8217;;
$pdo = new PDO(&#8221;mysql:host=localhost;dbname=$db&#8221;, $user, $mdp);
$ordre = $pdo-&#62;query(&#8217;SELECT * FROM employes&#8217;);
$nbcol = $ordre-&#62;columnCount();
//lecture entetes - non supportee ??
// $nomcol= $ordre&#62;getColumnMeta(&#8221;name&#8221;);
// print(&#8221;nom: $nomcol&#8221;);
print(&#8221;&#60;table&#62;&#8221;);
// lecture lignes
while ($row = $ordre-&#62;fetch(PDO::FETCH_NUM)){
print(&#8221;&#60;tr&#62;&#8221;);
// lecture colonnes
for ($j=0;$j &#60; $nbcol;$j++)  {
print (&#8221;&#60;td&#62; $row[$j] &#60;/td&#62;&#8221;);
}
print(&#8221;&#60;/tr&#62;&#8221;);
}
print(&#8221;&#60;/table&#62;&#8221;);
} catch (PDOException $e) [...]]]></description>
			<content:encoded><![CDATA[<p>Voici le code :</p>
<blockquote><p>&lt;?php<br />
// select simple avec PDO, vers MySQL<br />
print (&#8217;&lt;link rel=&#8221;stylesheet&#8221; href=&#8221;gris.css&#8221;&gt;&#8217;);</p>
<p>try {<br />
$db=&#8217;test&#8217;; $user=&#8217;dd&#8217;; $mdp=&#8217;dd&#8217;;<br />
$pdo = new PDO(&#8221;mysql:host=localhost;dbname=$db&#8221;, $user, $mdp);</p>
<p>$ordre = $pdo-&gt;query(&#8217;SELECT * FROM employes&#8217;);<br />
$nbcol = $ordre-&gt;columnCount();</p>
<p>//lecture entetes - non supportee ??<br />
// $nomcol= $ordre&gt;getColumnMeta(&#8221;name&#8221;);<br />
// print(&#8221;nom: $nomcol&#8221;);</p>
<p>print(&#8221;&lt;table&gt;&#8221;);<br />
// lecture lignes<br />
while ($row = $ordre-&gt;fetch(PDO::FETCH_NUM)){<br />
print(&#8221;&lt;tr&gt;&#8221;);<br />
// lecture colonnes<br />
for ($j=0;$j &lt; $nbcol;$j++)  {<br />
print (&#8221;&lt;td&gt; $row[$j] &lt;/td&gt;&#8221;);<br />
}<br />
print(&#8221;&lt;/tr&gt;&#8221;);<br />
}<br />
print(&#8221;&lt;/table&gt;&#8221;);<br />
} catch (PDOException $e) {<br />
echo &#8220;Pb !! : &#8221; . $e-&gt;getMessage() . &#8220;n&#8221;;<br />
exit;<br />
}</p>
<p>?&gt;</p></blockquote>
<p>note : apparemment &#8216;getColumnMeta&#8217; n&#8217;est pas supporte par le driver MySQL livré avec Wampserver 5&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.estsurinternet.com/cours_web/?feed=rss2&amp;p=172</wfw:commentRss>
		</item>
		<item>
		<title>Exercices MySQL - fonctions et procédures stockées</title>
		<link>http://www.estsurinternet.com/cours_web/?p=144</link>
		<comments>http://www.estsurinternet.com/cours_web/?p=144#comments</comments>
		<pubDate>Tue, 15 Jan 2008 10:49:11 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[G - MySQL]]></category>

		<guid isPermaLink="false">http://moncours.estsurinternet.com/coursweb/?p=144</guid>
		<description><![CDATA[Fonction stockée MySQL
Ecrire une fonction stockée SQL qui transforme en majuscule le 1er caractère d&#8217;une phrase passée en paramètre et force tout le reste en minuscule.
&#8220;salut LES GARS&#8221; deviendra donc &#8220;Salut les gars&#8221;.
On utilisera avec  profit les fonctions de traitement de chaînes de caractères de MySQL qui sont documentées ici : 
http://dev.mysql.com/doc/refman/5.0/en/string-functions.html
ou ici
http://www.toutestfacile.com/sql/cours/functstring_0.php5
Question subsidiaire [...]]]></description>
			<content:encoded><![CDATA[<h3>Fonction stockée MySQL</h3>
<p>Ecrire une fonction stockée SQL qui transforme en majuscule le 1er caractère d&#8217;une phrase passée en paramètre et force tout le reste en minuscule.<br />
&#8220;salut LES GARS&#8221; deviendra donc &#8220;Salut les gars&#8221;.<br />
On utilisera avec  profit les fonctions de traitement de chaînes de caractères de MySQL qui sont documentées ici : <a href="http://dev.mysql.com/doc/refman/5.0/en/string-functions.html" target="_blank"><br />
http://dev.mysql.com/doc/refman/5.0/en/string-functions.html</a><br />
ou ici<br />
<a href="http://www.toutestfacile.com/sql/cours/functstring_0.php5" target="_blank">http://www.toutestfacile.com/sql/cours/functstring_0.php5</a></p>
<p>Question subsidiaire : quelle différence avec la fonction initcap() ?</p>
<h3>Procédure stockée MySQL</h3>
<p>Ecrire une procédure stockée MySQL qui augmente les salaires d&#8217;un employé de n%. Le no de l&#8217;employé et le taux n sont des paramètres d&#8217;entrée.<br />
Si l&#8217;employé est commercial (SALESMAN) on integrera  simplement sa commission dans son salaire, sans autre augmentation&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.estsurinternet.com/cours_web/?feed=rss2&amp;p=144</wfw:commentRss>
		</item>
	</channel>
</rss>

