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

<channel>
	<title>Flashxpress &#187; Dreamweaver dynamique</title>
	<atom:link href="http://www.flashxpress.net/category/ressources-dreamweaver/dreamweaver-dynamique/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.flashxpress.net</link>
	<description>Ressources pour la création et les technologies du web</description>
	<lastBuildDate>Thu, 09 Feb 2012 01:00:04 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Supprimer plusieurs enregistrements</title>
		<link>http://www.flashxpress.net/ressources-dreamweaver/comportement-serveur-supprimer-plusieurs-enregistrements/</link>
		<comments>http://www.flashxpress.net/ressources-dreamweaver/comportement-serveur-supprimer-plusieurs-enregistrements/#comments</comments>
		<pubDate>Sun, 27 Jul 2008 18:44:09 +0000</pubDate>
		<dc:creator>Bertrand Gac</dc:creator>
				<category><![CDATA[Dreamweaver dynamique]]></category>
		<category><![CDATA[Dreamweaver extensions]]></category>
		<category><![CDATA[Tutoriels Dreamweaver]]></category>
		<category><![CDATA[comportements serveur]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.flashxpress.net/ressources-dreamweaver/comportement-serveur-supprimer-plusieurs-enregistrements/</guid>
		<description><![CDATA[Dreamweaver MX possède par défaut un comportement serveur Supprimer un enregistrement. En voici un qui permet de supprimer non pas un mais plusieurs enregistrements à la fois : utile quand on a besoin de faire du ménage rapidement dans une table&#8230; Exemple d&#8217;utilisation Supposons que nous avons une table actualite, qui sert à stocker et [...]]]></description>
			<content:encoded><![CDATA[<p>Dreamweaver MX possède par défaut un comportement serveur <span class="italique">Supprimer un enregistrement</span>.</p>
<p>En voici un qui permet de supprimer non pas un mais plusieurs enregistrements à la fois : utile quand on a besoin de faire du ménage rapidement dans une table&#8230;</p>
<p align="center"><img src="/images/r_dream/comport_serveur/supmul/SupMult.gif" border="0" alt="" width="514" height="255" /></p>
<h2>Exemple d&#8217;utilisation</h2>
<p>Supposons que nous avons une table <span class="script">actualite</span>, qui sert à stocker et présenter des actus sur un site. Afin de garder cette table de dimension raisonnable, on décide de supprimer sélectivement de temps à autre des actualités qui ont plus de 3 mois.</p>
<p>Voici la structure et le contenu de la table. Elle a été simplifiée et réduite pour plus de clarté :</p>
<p align="center"><img src="/images/r_dream/comport_serveur/supmul/sme01.gif" border="0" alt="" width="402" height="231" /></p>
<blockquote class="source"><p><span class="sourceRouge">#<br />
# Structure de la table `actu`<br />
# </span></p>
<p><span class="sourceViolet">DROP TABLE IF EXISTS actu;<br />
CREATE TABLE actu (<br />
idActu tinyint(3) unsigned NOT NULL auto_increment,<br />
titre varchar(150) NOT NULL default &nbsp;&raquo;,<br />
date date NOT NULL default &#8217;0000-00-00&#8242;,<br />
PRIMARY KEY (idActu),<br />
UNIQUE KEY date (date)<br />
); </span></p>
<p class="sourceComment">#<br />
# Contenu de la table `actu`<br />
#</p>
<p class="sourceViolet">INSERT INTO actu VALUES (1, &#8216;Viva Cuba!&#8217;, &#8217;2004-01-28&#8242;),<br />
(2, &#8216;Jacques Brel : le coffret du 25e anniversaire&#8217;, &#8217;2003-08-27&#8242;),<br />
(3, &#8216;David Bowie, Reality&#8217;, &#8217;2003-07-25&#8242;),<br />
(4, &#8216;Le violon dans tous ses états&#8217;, &#8217;2004-02-03&#8242;),<br />
(5, &#8216;Je ne suis qu&#8217;une chanson&#8217;, &#8217;2003-04-28&#8242;),<br />
(6, &#8216;Herbie Hancock, My Point Of View&#8217;, &#8217;2003-12-08&#8242;);</p></blockquote>
<p class="sourceComment">
<p>Si vous souhaitez suivre ce tutorial, vous pouvez télécharger le fichier SQL qui crée la table et insère quelques enregistrements.</p>
<p><a title="actu.zip" name="file" href="images/r_dream/comport_serveur/supmul/actu.zip" target="_self"><img src="mambots/editors/mosce/jscripts/tiny_mce/plugins/filemanager/InsertFile/img/ext/zip_small.gif" border="0" alt="actu.zip" align="middle" /> actu.zip (<span id="672 bytes,null" style="font-size: 80%;">672 bytes)</span></a></p>
<h2>Le jeu d&#8217;enregistrements</h2>
<p>Créez un jeu d&#8217;enregistrements portant sur les données que nous voulons détruire, à savoir toutes les actus qui ont plus de 3 mois, et de trier ces données par ordre décroissant.:</p>
<blockquote class="source"><p>SELECT *<br />
FROM actu<br />
WHERE date &lt; DATE_SUB(NOW(), INTERVAL 90 DAY)<br />
ORDER BY date DESC</p></blockquote>
<p>Brève explication sur la clause <span class="script">WHERE</span> utilisée ici :<br />
Nous prenons la date d&#8217;aujourd&#8217;hui (NOW) à laquelle nous soustrayons (DATE_SUB) 90 jours (INTERVAL 90 DAY) et le résultat est comparé avec la colonne date de la table.</p>
<h2>Le formulaire</h2>
<p>Iinsérez un formulaire dans votre document, puis créez une région répétée dans ce formulaire de façon à afficher les données :</p>
<p align="center"><img src="/images/r_dream/comport_serveur/supmul/sme02.gif" border="0" alt="" width="428" height="96" /></p>
<p>Rajoutez une colonne à droite du tableau, insérez une case à cocher, nommez-la et donnez lui une valeur dynamique qui correspondra à la valeur de la clé primaire idActu. Pour cela, sélectionnez la case à cocher, allez dans le panneau <span class="italique">Applications &gt; onglet Liaisons</span>, déroulez le jeu d&#8217;enregistrements et glissez/déposez le texte dynamique idActu sur la case.</p>
<p align="center"><img src="/images/r_dream/comport_serveur/supmul/sme04.gif" border="0" alt="" width="352" height="79" /></p>
<blockquote class="source"><p>&lt;input name=&nbsp;&raquo;supp&nbsp;&raquo; type=&nbsp;&raquo;checkbox&nbsp;&raquo; id=&nbsp;&raquo;supp&nbsp;&raquo; value=&nbsp;&raquo;&lt;?php echo $row_rsActus3mois['idActu']; ?&gt;&nbsp;&raquo;&gt;</p></blockquote>
<p>Puis ajoutez un bouton Supprimer. Attention : ce bouton ne doit pas être dans la région répétée! (Ici j&#8217;e l&#8217;ai simplement mis dans un autre tableau, sous le premier mais en dehors de la région répétée)</p>
<p align="center"><img src="/images/r_dream/comport_serveur/supmul/sme03.gif" border="0" alt="" width="482" height="140" /></p>
<h2>Le comportement</h2>
<p>Appliquez le comportement. Sélectionnez les différents paramètres demandés, rentrez le nom de la case à cocher ainsi que l&#8217;URL de redirection quand la suppression est terminée.</p>
<p>Une fois appliqué, ce comportement a effectué deux opérations : outre le code PHP qui a été inséré en début de fichier, il a également renommé la case à cocher en lui rajoutant à la fin deux crochets : <span class="script">supp[]</span>.<br />
Cette notation est nécessaire : elle signifie pour PHP qu&#8217;il est en présence d&#8217;une variable de type tableau, ce qui permett de stocker les différentes valeurs que peut prendre la clé primaire, selon les actualités affichées. En l&#8217;absence de ces crochets, supp serait une simple variable dont la valeur serait écrasée à chaque fois par la précédente.</p>
<p>Le code PHP tient en quelques lignes :</p>
<p align="center"><img src="/images/r_dream/comport_serveur/supmul/sme05.gif" border="0" alt="" width="595" height="136" /></p>
<ul>
<li>Ligne 12 : on vérifie que le tableau supp n&#8217;est pas vide.</li>
<li> Ligne 13 : on parcourt le tableau avec une boucle foreach</li>
<li> Ligne 15 : on exécute la requête autant de fois qu&#8217;il y a d&#8217;éléments dans le tableau .</li>
<li> Ligne 17 : redirection quand les suppressions sont terminées.</li>
</ul>
<p align="center"><a title="SuppMultEnr.mxp" name="file" href="images/r_dream/comport_serveur/supmul/SuppMultEnr.mxp" target="_self"><img src="mambots/editors/mosce/jscripts/tiny_mce/plugins/filemanager/InsertFile/img/ext/mxp.gif" border="0" alt="SuppMultEnr.mxp" align="middle" /> SuppMultEnr.mxp (<span id="6.97 KB,null" style="font-size: 80%;">6.97 KB)</span></a></p>
<p><span id="more-497"></span><!--more--></p>
]]></content:encoded>
			<wfw:commentRss>http://www.flashxpress.net/ressources-dreamweaver/comportement-serveur-supprimer-plusieurs-enregistrements/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Jointure de tables avec Dreamweaver</title>
		<link>http://www.flashxpress.net/ressources-dreamweaver/jointure-de-tables-avec-dreamweaver-mx/</link>
		<comments>http://www.flashxpress.net/ressources-dreamweaver/jointure-de-tables-avec-dreamweaver-mx/#comments</comments>
		<pubDate>Tue, 27 May 2008 15:31:17 +0000</pubDate>
		<dc:creator>Bertrand Gac</dc:creator>
				<category><![CDATA[Dreamweaver dynamique]]></category>
		<category><![CDATA[Tutoriels Dreamweaver]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.flashxpress.net/2005/07/27/jointure-de-tables-avec-dreamweaver-mx/</guid>
		<description><![CDATA[Proposé par Nadine Dans les bases de données un peu complexe, il est souvent nécessaire de faire des jointures de table quand on se retrouve avec une relation de 1 à n. Ce système permet de relier plusieurs tables par leurs id afin d&#8217;éviter d&#8217;alourdir inutilement la base de données. Nous allons voir comment Dreamweaver [...]]]></description>
			<content:encoded><![CDATA[<p>Proposé par Nadine</p>
<p>Dans les bases de données un peu complexe, il est souvent nécessaire de faire des jointures de table quand on se retrouve avec une relation de 1 à n. Ce système permet de relier plusieurs tables par leurs id afin d&#8217;éviter d&#8217;alourdir inutilement la base de données.</p>
<p>Nous allons voir comment Dreamweaver permet de créer une jointure de tables très facilement, pratiquement sans taper de code.</p>
<p><span id="more-517"></span></p>
<h2>Principe des jointures de tables</h2>
<p>Prenons le cas d&#8217;un catalogue de livres où l&#8217;on veut rentrer les renseignements suivants : titre du livre, nom et prénom de l&#8217;auteur, collection à laquelle appartient le livre</p>
<p>Le premier réflexe quand on ne connait pas les bases de données serait de créer une seule table contenant toutes ces informations :</p>
<table class="classTable" cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr align="center">
<td width="11%">id_livre</td>
<td width="27%">titre_livre</td>
<td width="23%">nom_auteur</td>
<td width="16%">prenom_auteur</td>
<td width="23%">collection</td>
</tr>
<tr align="center">
<td>1</td>
<td>Les fourmis</td>
<td>Werber</td>
<td>Bernard</td>
<td>Le livre de poche</td>
</tr>
<tr align="center">
<td>2</td>
<td>Mercure</td>
<td>Nothomb</td>
<td>Amélie</td>
<td>Le livre de poche</td>
</tr>
<tr align="center">
<td>3</td>
<td>Robert des noms propres</td>
<td>Nothomb</td>
<td>Amélie</td>
<td>Albin Michel</td>
</tr>
<tr align="center">
<td>4</td>
<td>Sans feu ni lieu</td>
<td>Vargas</td>
<td>Fred</td>
<td>J&#8217;ai lu</td>
</tr>
<tr align="center">
<td>5</td>
<td>Debout les morts</td>
<td>Vargas</td>
<td>Fred</td>
<td>J&#8217;ai lu</td>
</tr>
<tr align="center">
<td>6</td>
<td>Le jour des fourmis</td>
<td>Werber</td>
<td>Bernard</td>
<td>Albin Michel</td>
</tr>
</tbody>
</table>
<p><span class="grasRouge">CE N&#8217;EST PAS LA BONNE SOLUTION !</span></p>
<p>En effet, on voit que les informations concernant les auteurs et la collection sont dupliquées et alourdissent inutilement la base. Pour 5 livres du même auteur, on rentre 5 fois les informations concernant son nom et son prénom, avec tous les risques de faute de frappe que cela représente&#8230;</p>
<p>Avec la méthode Merise, on crée 3 tables :</p>
<ul class="classListePuce">
<li> une table pour les collections,</li>
<li> une table pour les auteurs,</li>
<li> une table livres dans laquelle on ajoute seulement l&#8217;identifiant correspondant à l&#8217;auteur et celui correspondant à la collection.</li>
</ul>
<p>TABLE AUTEURS</p>
<table class="classTable" cellspacing="0" cellpadding="0" width="378">
<tbody>
<tr align="center">
<td width="84">id_auteur</td>
<td width="168">nom_auteur</td>
<td width="118">prenom_auteur</td>
</tr>
<tr align="center">
<td>1</td>
<td>Werber</td>
<td>Bernard</td>
</tr>
<tr align="center">
<td>2</td>
<td>Nothomb</td>
<td>Amélie</td>
</tr>
<tr align="center">
<td>3</td>
<td>Vargas</td>
<td>Fred</td>
</tr>
</tbody>
</table>
<p>TABLE COLLECTIONS</p>
<table class="classTable" cellspacing="0" cellpadding="0" width="238">
<tbody>
<tr align="center">
<td width="96">id_collection</td>
<td width="136">collection</td>
</tr>
<tr align="center">
<td>1</td>
<td>Le livre de poche</td>
</tr>
<tr align="center">
<td>2</td>
<td>Albin Michel</td>
</tr>
<tr align="center">
<td>3</td>
<td>J&#8217;ai lu</td>
</tr>
</tbody>
</table>
<p>TABLE LIVRES</p>
<table class="classTable" cellspacing="0" cellpadding="0" width="609">
<tbody>
<tr align="center">
<td width="84">id_livre</td>
<td width="199">titre_livre</td>
<td width="168">id_auteur</td>
<td width="148">id_collection</td>
</tr>
<tr align="center">
<td>1</td>
<td>Les fourmis</td>
<td>1</td>
<td>1</td>
</tr>
<tr align="center">
<td>2</td>
<td>Mercure</td>
<td>2</td>
<td>1</td>
</tr>
<tr align="center">
<td>3</td>
<td>Robert des noms propres</td>
<td>2</td>
<td>2</td>
</tr>
<tr align="center">
<td>4</td>
<td>Sans feu ni lieu</td>
<td>3</td>
<td>3</td>
</tr>
<tr align="center">
<td>5</td>
<td>Debout les morts</td>
<td>3</td>
<td>3</td>
</tr>
<tr align="center">
<td>6</td>
<td>Le jour des fourmis</td>
<td>1</td>
<td>2</td>
</tr>
</tbody>
</table>
<h2>Création des tables</h2>
<p>On crée une base &laquo;&nbsp;bouquins&nbsp;&raquo; et on crée la structure de ces 3 tables avec phpMyAdmin.</p>
<blockquote class="source"><p>#</p>
<p># Structure de la table `auteurs`</p>
<p>#</p>
<p class="source">CREATE TABLE auteurs (</p>
<p>id_auteur int(11) NOT NULL auto_increment,</p>
<p>nom_auteur varchar(255) NOT NULL default &nbsp;&raquo;,</p>
<p>prenom_auteur varchar(255) NOT NULL default &nbsp;&raquo;,</p>
<p>PRIMARY KEY (id_auteur)</p>
<p>) TYPE=MyISAM;</p>
<p># &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;</p>
<p class="source">#</p>
<p># Structure de la table `collections`</p>
<p>#</p>
<p class="source">CREATE TABLE collections (</p>
<p>id_collection int(11) NOT NULL auto_increment,</p>
<p>collection varchar(255) NOT NULL default &nbsp;&raquo;,</p>
<p>PRIMARY KEY (id_collection)</p>
<p>) TYPE=MyISAM;</p>
<p># &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;</p>
<p class="source">#</p>
<p># Structure de la table `livres`</p>
<p>#</p>
<p class="source">CREATE TABLE livres (</p>
<p>id_livre int(11) NOT NULL auto_increment,</p>
<p>titre_livre varchar(255) NOT NULL default &nbsp;&raquo;,</p>
<p>id_auteur int(11) NOT NULL default &#8217;0&#8242;,</p>
<p>id_collection int(11) NOT NULL default &#8217;0&#8242;,</p>
<p>PRIMARY KEY (id_livre)</p>
<p>) TYPE=MyISAM;</p></blockquote>
<p>On insère les noms et prénoms de nos trois auteurs et les noms des collections dans leurs tables respectives (On verra ensuite comment utiliser un formulaire d&#8217;insertion pour insérer d&#8217;autres enregistrements).</p>
<p>Par contre, on laisse la table livres totalement vide. On remplira cette table directement avec un formulaire d&#8217;insertion.{mospagebreak }</p>
<h2>Formulaires d&#8217;insertion</h2>
<p>Après avoir créé la structure des tables, on revient dans Dreamweaver MX. On définit un site, on configure le serveur d&#8217;évaluation, puis on crée une page insertion_livres.php et on établit une connexion MySQL avec la base de données (voir le tutorial <a href="content/category/5/197/66/">Application dynamique avec Dreamweaver MX</a>).</p>
<p>On crée deux jeux d&#8217;enregistrements : jeu_auteurs et jeu_collections qui sélectionnent tous les enregistrements triés par ordre alphabétique par rapport au nom des auteurs et à l&#8217;intitulé des collections.</p>
<p align="center"><img title="jeu_auteur.gif" src="images/r_dream/dynamique/bdd_jointure/jeu_auteur.gif" border="0" alt="jeu_auteur.gif" width="455" height="313" align="middle" /></p>
<p align="center"><img title="jeu_collection.gif" src="images/r_dream/dynamique/bdd_jointure/jeu_collection.gif" border="0" alt="jeu_collection.gif" width="453" height="314" align="middle" /></p>
<p>Dans la page insertion_livre.php, on insère ensuite un formulaire d&#8217;insertion d&#8217;enregistrement un peu particulier, comme suit :</p>
<p>On met le champ id_livre en champ masqué sans indiquer de valeur puisqu&#8217;il s&#8217;auto-incrémente (on aurait pu d&#8217;ailleurs le supprimer tout simplement, cela revient au même).</p>
<p>On laisse le champ titre_livre en champ de texte.</p>
<p>Pour le champ id_auteur, on demande <span class="italique">Afficher en tant que menu</span> et on clique sur <span class="italique">Propriétés</span>.</p>
<p align="center"><img title="insertionlivre1.gif" src="images/r_dream/dynamique/bdd_jointure/insertionlivre1.gif" border="0" alt="insertionlivre1.gif" width="600" height="372" align="middle" /></p>
<p>On coche <span class="italique">Charger les éléments du menu depuis la base de données</span>, et on précise les options ci-dessous :</p>
<p align="center"><img title="insertionlivre2.gif" src="images/r_dream/dynamique/bdd_jointure/insertionlivre2.gif" border="0" alt="insertionlivre2.gif" width="562" height="306" align="middle" /></p>
<p>On procède de même avec le champ id_collection. (On demande <span class="italique">Afficher en tant que menu</span>, on clique sur <span class="italique">Propriétés</span>, <span class="italique">Charger les éléments du menu</span> <span class="italique">depuis la base de données</span>, et on demande d&#8217;afficher le nom de la collection dans l&#8217;étiquette et l&#8217;id de la collection dans les valeurs).</p>
<p>On déplace ensuite le champ titre_livre en dernière position avec la flèche noire <span class="italique">Déplacer l&#8217;élément vers le bas de la liste</span>.</p>
<p align="center"><img title="insertionlivre4.gif" src="images/r_dream/dynamique/bdd_jointure/insertionlivre4.gif" border="0" alt="insertionlivre4.gif" width="558" height="414" align="middle" /></p>
<p>Tester la page. On doit voir dans les menus déroulants la liste des auteurs et la liste des collections.</p>
<p>Insérer le nom des 6 livres de la table. Vérifier en affichant ensuite la table dans phpMyAdmin qu&#8217;elle correspond à ce qui était indiqué dans la rubrique &laquo;&nbsp;Principe des jointures de table&nbsp;&raquo;.</p>
<p>Il nous reste à régler le cas où l&#8217;auteur ou la collection n&#8217;existe pas encore dans la table correspondante. La solution la plus simple est de créer deux pages &laquo;&nbsp;insertion_auteur.php&nbsp;&raquo; et &laquo;&nbsp;insertion_collection.php&nbsp;&raquo; dans lesquelles on va insérer des formulaires d&#8217;insertion simples avec un retour sur la page &laquo;&nbsp;insertion_livre.php&nbsp;&raquo;.</p>
<p align="center"><img title="insertionauteur.gif" src="images/r_dream/dynamique/bdd_jointure/insertionauteur.gif" border="0" alt="insertionauteur.gif" width="554" height="413" align="middle" /></p>
<p>Ensuite dans la page insertion_livre.php, on crée deux liens hypertextes vers ces deux pages à côté des deux menus déroulants.</p>
<p align="center"><img title="insertionlivrefin.gif" src="images/r_dream/dynamique/bdd_jointure/insertionlivrefin.gif" border="0" alt="insertionlivrefin.gif" width="600" height="306" align="middle" /></p>
<p>Changer le texte HTML généré automatiquement par Dreamweaver (id_auteur, id_collection et titre_livre) par des appellations plus lisibles. Par exemple, renommer &laquo;&nbsp;id_auteur&nbsp;&raquo; en &laquo;&nbsp;auteur&nbsp;&raquo;, &laquo;&nbsp;id_collection&nbsp;&raquo; en &laquo;&nbsp;collection&nbsp;&raquo; et &laquo;&nbsp;titre_livre&nbsp;&raquo; en&nbsp;&raquo; titre du livre&nbsp;&raquo;.</p>
<p>Tester en ajoutant un livre avec un nouvel auteur et une nouvelle collection (ex : Un merveilleux malheur de Boris Cyrulnik aux éditions odile jacob).{mospagebreak }</p>
<h2>Création d&#8217;un jeu d&#8217;enregistrement &laquo;&nbsp;avancé&nbsp;&raquo;</h2>
<p>Il va falloir maintenant créer une page affichant un tableau avec la liste des livres, leurs auteurs et leur collection (page &laquo;&nbsp;liste_livres.php&nbsp;&raquo;).</p>
<p>Pour cela, il faut créer un jeu d&#8217;enregistrements en utilisant l&#8217;option <span class="italique">Avancé</span>, pour lancer une requête SQL faisant la jointure des 3 tables.</p>
<p class="italique">pour créer la ligne &laquo;&nbsp;FROM auteurs,collections,livres&nbsp;&raquo;, il faut cliquer sur chacune des tables puis sur SELECT.</p>
<p align="center"><img title="jointure1.gif" src="images/r_dream/dynamique/bdd_jointure/jointure1.gif" border="0" alt="jointure1.gif" width="600" height="370" align="middle" /></p>
<p class="italique">Pour créer la ligne &laquo;&nbsp;WHERE auteurs.id_auteur&nbsp;&raquo;, il faut cliquer sur l&#8217;id_auteur dans la table auteurs puis sur WHERE.</p>
<p align="center"><img title="jointure2.gif" src="images/r_dream/dynamique/bdd_jointure/jointure2.gif" border="0" alt="jointure2.gif" width="600" height="369" align="middle" /></p>
<p class="italique">Pour créer la ligne &laquo;&nbsp;ORDER BY livres.titre_livre&nbsp;&raquo;, il faut cliquer sur le champ qui va vous servir à trier les enregistrements puis sur ORDER BY.</p>
<p align="center"><img title="jointure3.gif" src="images/r_dream/dynamique/bdd_jointure/jointure3.gif" border="0" alt="jointure3.gif" width="600" height="376" align="middle" /></p>
<p>Cliquer sur ok après avoir tapé (ou généré) le code suivant :</p>
<p class="sourceRouge">SELECT * FROM auteurs, collections, livres WHERE auteurs.id_auteur=livres.id_auteur AND collections.id_collection=livres.id_collection ORDER BY livres.titre_livre</p>
<p>Vous devez obtenir un jeu d&#8217;enregistrement comprenant tous les champs des 3 tables.</p>
<h2>Affichage d&#8217;une liste.</h2>
<p>Il nous reste maintenant à créer une page affichant un tableau avec la liste des livres, leurs auteurs et leur collection (page &laquo;&nbsp;liste_livres.php&nbsp;&raquo;).</p>
<p>Insérer un tableau de 3 colonnes et 2 rangées et transformer la première rangée en cellules d&#8217;entête. Faire un cliquer/glisser dans les cellules du tableau pour insérer les éléments correspondant du jeu d&#8217;enregistrement :</p>
<p align="center"><img title="listelivre1.gif" src="images/r_dream/dynamique/bdd_jointure/listelivre1.gif" border="0" alt="listelivre1.gif" width="600" height="205" align="middle" /></p>
<p>Sélectionner ensuite la deuxième rangée (de &lt;tr&gt; à &lt;/tr&gt;) et demander une <span class="italique">Région répétée</span> en affichant tous les enregistrements.</p>
<p>Vos livres sont désormais affichés par ordre alphabétique. N&#8217;oubliez pas d&#8217;ajouter une feuille de style pour améliorer la présentation.</p>
<p align="center"><img title="resultat_listelivre.gif" src="images/r_dream/dynamique/bdd_jointure/resultat_listelivre.gif" border="1" alt="resultat_listelivre.gif" width="600" height="172" align="middle" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.flashxpress.net/ressources-dreamweaver/jointure-de-tables-avec-dreamweaver-mx/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>PhpMyAdmin : Importer les bases de données</title>
		<link>http://www.flashxpress.net/ressources-dreamweaver/phpmyadmin-importer-les-bases-de-donnees/</link>
		<comments>http://www.flashxpress.net/ressources-dreamweaver/phpmyadmin-importer-les-bases-de-donnees/#comments</comments>
		<pubDate>Fri, 29 Jul 2005 10:56:44 +0000</pubDate>
		<dc:creator>Jean-Luc</dc:creator>
				<category><![CDATA[Dreamweaver dynamique]]></category>
		<category><![CDATA[Tutoriels Dreamweaver]]></category>
		<category><![CDATA[MySQL]]></category>

		<guid isPermaLink="false">http://www.flashxpress.net/ressources-dreamweaver/phpmyadmin-importer-les-bases-de-donnees/</guid>
		<description><![CDATA[phpMyAdmin nous permet d&#8217;importer les bases de données présentes sur le serveur de manière simple et avec différents paramètres, nous allons voir dans ce tutorial comment procéder. La version utilisé dans ce tutorial est la 2.2.1, vous pouvez trouver plus d&#8217;infos et télécharger la dernière version sur le site officiel. Index de phpMyAdmin Sur la page [...]]]></description>
			<content:encoded><![CDATA[<p>phpMyAdmin nous permet d&#8217;importer les bases de données présentes sur le serveur de manière simple et avec différents paramètres, nous allons voir dans ce tutorial comment procéder.</p>
<p>La version utilisé dans ce tutorial est la 2.2.1, vous pouvez trouver plus d&#8217;infos et télécharger la dernière version sur le <a href="http://www.phpmyadmin.net/" target="_blank">site officiel</a>.</p>
<p><span id="more-543"></span></p>
<h2>Index de phpMyAdmin</h2>
<p>Sur la page index de phpMyAdmin s&#8217;affiche dans la frame de gauche le nom de la base de données et les tables déjà présentes.</p>
<p align="center"><img title="index.gif" src="images/r_dream/dynamique/bdd_import/index.gif" border="0" alt="index.gif" width="450" height="129" /></p>
<h2>Insertion d&#8217;une table</h2>
<p>En cliquant sur le nom de la base de données, on accède à l&#8217;interface permettant d&#8217;exécuter des requêtes sur la base ou d&#8217;importer des fichiers afin d&#8217;insérer la structure et les données d&#8217;une table, ces fichiers pouvant être dans différents formats texte, le format par défaut de MySql étant le .sql.</p>
<p align="center"><img src="images/r_dream/dynamique/bdd_import/import.gif" border="0" alt="" width="420" height="250" /></p>
<p>En cliquant sur <span class="italique">Parcourir</span>, on accède à l&#8217;arborescence du disque dur, afin de choisir le fichier concerné, puis en faisant <span class="italique">Exécuter</span>, on insère les infos dans la base de données.</p>
<h2>Résultat de l&#8217;insertion</h2>
<p>La nouvelle page qui s&#8217;ouvre suite à l&#8217;insertion des données affiche la requête qui vient d&#8217;être exécutée.</p>
<p align="center"><img src="images/r_dream/dynamique/bdd_import/result_import.gif" border="0" alt="" width="250" height="371" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.flashxpress.net/ressources-dreamweaver/phpmyadmin-importer-les-bases-de-donnees/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Mot de passe oublié</title>
		<link>http://www.flashxpress.net/ressources-dreamweaver/comportement-serveur-mot-de-passe-oublie/</link>
		<comments>http://www.flashxpress.net/ressources-dreamweaver/comportement-serveur-mot-de-passe-oublie/#comments</comments>
		<pubDate>Wed, 27 Jul 2005 18:44:59 +0000</pubDate>
		<dc:creator>Bertrand Gac</dc:creator>
				<category><![CDATA[Dreamweaver dynamique]]></category>
		<category><![CDATA[Tutoriels Dreamweaver]]></category>
		<category><![CDATA[authentification]]></category>
		<category><![CDATA[comportements serveur]]></category>
		<category><![CDATA[Dreamweaver extensions]]></category>

		<guid isPermaLink="false">http://www.flashxpress.net/ressources-dreamweaver/comportement-serveur-mot-de-passe-oublie/</guid>
		<description><![CDATA[Avant toute chose, une précision importante. Malgré son nom, cette extension ne permet pas de récupérer un mot de passe&#8230; Dans le cas des mots de passe cryptés avec md5 ou password, il est quasiment impossible de retrouver la chaîne originale rentrée par le visiteur (à moins d&#8217;avoir du temps&#8230;.beaucoup de temps devant soi). Et [...]]]></description>
			<content:encoded><![CDATA[<p>Avant toute chose, une précision importante. Malgré son nom, cette extension ne permet pas de récupérer un mot de passe&#8230; Dans le cas des mots de passe cryptés avec md5 ou password, il est quasiment impossible de retrouver la chaîne originale rentrée par le visiteur (à moins d&#8217;avoir du temps&#8230;.beaucoup de temps devant soi). Et puis après tout si votre visiteur a oublié son mot de passe, qu&#8217;est ce que ça peut lui faire qu&#8217;on ne lui redonne pas l&#8217;original&#8230;puisqu&#8217;il l&#8217;a oublié&#8230;</p>
<p>Bref&#8230;<br />
Ce que fait cette extension :</p>
<ul>
<li> Si aucune méthode de cryptage n&#8217;est utilisée, le mot de passe est récupéré dans la base de données puis envoyer à la personne.</li>
<li>Si un cryptage est utilisé, un nouveau mot de passe est généré, il est crypté selon la méthode utilisée (md5 ou password), la table est mise à jour avec ce nouveau mot de passe crypté, un mail est envoyé avec le mot de passe généré auparavant (non crypté).</li>
</ul>
<p>NOTES :</p>
<ol>
<li><span class="grasRouge">Windows uniquement (en fait cette extension fonctionne aussi sous Mac, le seul problème sur cette plate-forme est l&#8217;interface du comportement qui peut apparaitre différemment, avec en particulier des champs inaccessibles&#8230;ou presque. Tout retour d&#8217;utilisateur de Mac sur ce sujet serait le bienvenu&#8230;).<br />
</span></li>
<li><span class="grasRouge">Tester ces extensions en réel, c&#8217;est-à-dire chez votre hébergeur ! Je n&#8217;utilise pas EasyPhp&#8230;.et votre hébergeur non plus&#8230; </span></li>
</ol>
<h2>Créer le formulaire</h2>
<p>Le principe de fonctionnement est le suivant : sur une page créez un formulaire avec un simple champ demandant l&#8217;email de la personne. Nommez ce champ en fonction de celui que vous utilisez dans votre table MySQL.</p>
<p>Exemple :</p>
<blockquote class="source"><p>&lt;form name=&nbsp;&raquo;form1&#8243; id=&nbsp;&raquo;form1&#8243; method=&nbsp;&raquo;post&nbsp;&raquo; action=&nbsp;&raquo;"&gt;<br />
&lt;input name=&nbsp;&raquo;email&nbsp;&raquo; type=&nbsp;&raquo;text&nbsp;&raquo; id=&nbsp;&raquo;email&nbsp;&raquo; value=&nbsp;&raquo;" /&gt;<br />
&lt;input type=&nbsp;&raquo;submit&nbsp;&raquo; name=&nbsp;&raquo;Submit&nbsp;&raquo; value=&nbsp;&raquo;Envoyer&nbsp;&raquo; id=&nbsp;&raquo;Submit&nbsp;&raquo; /&gt;<br />
&lt;/form&gt;</p></blockquote>
<p align="center"><img title="Formulaire d'email" src="/images/r_dream/comport_serveur/passoubli/images/form1.gif" border="0" alt="Créer le formulaire" width="306" height="89" /></p>
<h2>Créer le jeu d&#8217;enregistrements</h2>
<p>Créez un jeu d&#8217;enregistrements basé sur la valeur du champ de formulaire.<br />
Utilisez pour cela le champ <span class="italique">Filtre</span> du comportement<span class="italique"> Jeu d&#8217;enregistrements</span>, et sélectionnez la colonne désirée. Puis sélectionnez l&#8217;option <span class="italique">Variable de formulaire</span>, égale au nom  du champ dans le formulaire.</p>
<p align="center"><img title="Jeu d'enregistrements" src="/images/r_dream/comport_serveur/passoubli/images/recordset.gif" border="0" alt="Créer le jeu d'enregistrements" width="481" height="327" /></p>
<h2>Utiliser l&#8217;extension</h2>
<p>Lancer l&#8217;extension <span class="italique">Mot de passe oublié</span>, disponible via le panneau <span class="italique">Application &gt; Comportements serveur &gt; FlashXpress &gt; Gestion utilisateurs</span>.<br />
Elle est constituée de trois onglets :</p>
<p align="center">Onglet <span class="italiqueGras">Base </span></p>
<p align="center"><img title="Onglet Base" src="/images/r_dream/comport_serveur/passoubli/images/pass_1.gif" border="0" alt="" width="587" height="474" /></p>
<ul>
<li>Formulaire<br />
Choisissez ici le formulaire utilisé, au cas où il y en ait plusieurs sur la page, et le champ texte adéquat.</li>
<li>Après l&#8217;envoi ou en cas d&#8217;erreur<br />
Indiquez l&#8217;URL de la page de redirection. Dans cette page, vous pouvez faire afficher les messages d&#8217;erreur renvoyés par le script PHP. Voir la section Construire la page de redirection</li>
</ul>
<p align="center">Onglet <span class="italique">Mail</span></p>
<p align="center"><img title="Onglet Mail" src="/images/r_dream/comport_serveur/passoubli/images/pass_2.gif" border="0" alt="" width="587" height="474" /></p>
<ul>
<li>Données du mail<br />
Spécifiez ici le sujet du message, ainsi que le texte qui constituera le corps du message. Pour pouvoir afficher le mot de passe, la variable PHP à utiliser doit impérativement être : <span class="source">$pass</span></li>
<li>Sélectionnez une méthode de cryptage si besoin est.</li>
</ul>
<p align="center">Onglet <span class="italique">Options</span></p>
<p align="center"><img title="Onglet Options" src="/images/r_dream/comport_serveur/passoubli/images/pass_3.gif" border="0" alt="" width="587" height="474" /></p>
<p>Toutes ces options sont facultatives, mais il est conseillé de remplir au moins les champs <span class="italique">Expéditeur</span> et <span class="italique">Adresse de l&#8217;expéditeur</span>.<br />
Ces mentions sont celles qui apparaissent en clair dans le logiciel de courriel et renseignent le destinataire sur la provenance du mail. Si vous ne les remplissez pas, ils sont remplis automatiquement par le serveur, et ce n&#8217;est généralement pas très beau, ni très explicite.</p>
<p>Les options <span class="italique">Répondre à</span> et <span class="italique">Adresse de réponse</span> ne se justifient que si l&#8217;adresse de réponse doit être différente de celle de l&#8217;expéditeur.</p>
<h2>Le fichier Include</h2>
<p>Quand le comportement est appliqué pour la première fois, un nouveau dossier <span class="italique">FXP_Include</span> est créé à la racine de votre site.<br />
Ce dossier contient un fichier PHP <span class="script">FXP_Mail.php</span>. Le but de l&#8217;utilisation d&#8217;un fichier externe est d&#8217;alléger la page principale, de ne pas l&#8217;encombrer si possible avec trop de code &laquo;&nbsp;parasite&nbsp;&raquo;.</p>
<p align="center"><img title="Fichier Include dans l'arborescence" src="/images/r_dream/comport_serveur/passoubli/images/site.gif" border="0" alt="" width="236" height="78" /></p>
<p>Dans ce fichier PHP, vous pouvez gérer les messages renvoyés par le script. Ils sont au nombre de 3 :</p>
<ul>
<li>Message si l&#8217;adresse mentionnée dans le formulaire n&#8217;a pas été trouvé .</li>
<li>Message si l&#8217;envoi du mail a échoué</li>
<li>Message si l&#8217;envoi a réussi</li>
</ul>
<p>Si vous modifiez ces messages, prenez simplement garde de ne pas faire sauter par inadvertance une ponctuation quelconque, guillemets d&#8217;ouverture ou de fermeture, point-virgule, etc.<br />
<span class="grasRouge">Et bien sûr, vous devez absolument penser à télécharger ce dossier sur votre serveur. </span></p>
<h2>Construire la page de redirection</h2>
<p>Ouvrez la page dans laquelle vous voulez afficher les messages. Passez en mode Code et tapez cette ligne en tout début de fichier :</p>
<blockquote class="source"><p>&lt;?php session_start(); ?&gt;</p></blockquote>
<p>Puis, dans le corps de votre document, à l&#8217;endroit où vous souhaitez faire apparaitre les messages , tapez ce code :</p>
<blockquote class="source"><p>&lt;?php<br />
if (!empty($_SESSION ['Message'])) {<br />
echo $_SESSION ['Message'];<br />
}<br />
?&gt;</p></blockquote>
<p>C&#8217;est tout.</p>
<p align="center"><a title="FXPOubliPas.mxp" name="file" href="images/r_dream/comport_serveur/passoubli/FXPOubliPas.mxp" target="_self"><img src="mambots/editors/mosce/jscripts/tiny_mce/plugins/filemanager/InsertFile/img/ext/mxp.gif" border="0" alt="FXPOubliPas.mxp" align="middle" /> FXPOubliPas.mxp (<span id="20.53 KB,null" style="font-size: 80%;">20.53 KB)</span></a></p>
<p><span id="more-498"></span></p>
]]></content:encoded>
			<wfw:commentRss>http://www.flashxpress.net/ressources-dreamweaver/comportement-serveur-mot-de-passe-oublie/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Authentification HTTP avec MySql</title>
		<link>http://www.flashxpress.net/ressources-dreamweaver/comportement-serveur-authentification-http-avec-mysql/</link>
		<comments>http://www.flashxpress.net/ressources-dreamweaver/comportement-serveur-authentification-http-avec-mysql/#comments</comments>
		<pubDate>Wed, 27 Jul 2005 13:28:15 +0000</pubDate>
		<dc:creator>Bertrand Gac</dc:creator>
				<category><![CDATA[Dreamweaver dynamique]]></category>
		<category><![CDATA[Dreamweaver extensions]]></category>
		<category><![CDATA[Tutoriels Dreamweaver]]></category>
		<category><![CDATA[authentification]]></category>
		<category><![CDATA[comportements serveur]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.flashxpress.net/ressources-dreamweaver/comportement-serveur-authentification-http-avec-mysql/</guid>
		<description><![CDATA[Ce comportment utilise la fonction header() de PHP pour demander une authentification au client, générant ainsi l&#8217;apparition d&#8217;une fenêtre de demande d&#8217;utilisateur et de mot de passe. Une fois que les champs ont été remplis, l&#8217;URL sera de nouveau appelée, avec les variables $PHP_AUTH_USER, $PHP_AUTH_PW contenant respectivement le nom d&#8217;utilisateur et le mot de passe. [...]]]></description>
			<content:encoded><![CDATA[<p>Ce comportment utilise la fonction header() de PHP pour demander une authentification au client, générant ainsi l&#8217;apparition d&#8217;une fenêtre de demande d&#8217;utilisateur et de mot de passe. Une fois que les champs ont été remplis, l&#8217;URL sera de nouveau appelée, avec les variables $PHP_AUTH_USER, $PHP_AUTH_PW contenant respectivement le nom d&#8217;utilisateur et le mot de passe. Ceux-ci sont ensuite comparées aux valeurs trouvées dans la table MySql.</p>
<h2>Avertissement</h2>
<p class="grasRouge">Les fonctions d&#8217;authentification HTTP de PHP ne sont disponibles que si PHP est exécuté comme module Apache, et non pas sous la forme d&#8217;un CGI.</p>
<p>Vous pouvez déterminer cela en faisant un fichier de      test PHP avec la fonction <span class="script">phpinfo()</span> chez votre hébergeur.<br />
Si dans le résultat, en début de fichier, vous ne voyez pas apparaitre      cette mention <strong>Server API Apache</strong> mais à la      place <strong>Server API CGI</strong>, vous ne pourrez pas utiliser      ce comportement (valable pour Apache 1.3x, pas testé sous Apache 2.4x)</p>
<p>La comparaison du mot de passe s&#8217;effectue à l&#8217;aide      de la fonction PHP <span class="script">md5()</span>.<br />
Il est donc impératif qu&#8217;au moment de l&#8217;enregistrement de ce visiteur, ce mot de passe ait été rentré à l&#8217;aide de la même fonction! (Voir le comportement &laquo;&nbsp;Crypter un mot de passe&nbsp;&raquo;).</p>
<h2>Exemple de fenêtre d&#8217;authentification</h2>
<p align="center"><img title="Fenêtre d 'authentification" src="/images/r_dream/comport_serveur/auth/authhttp1/fenauth.gif" border="0" alt="" width="326" height="289" /></p>
<h2>L&#8217;interface du comportement</h2>
<p align="center"><img title="Interface du comportement" src="/images/r_dream/comport_serveur/auth/authhttp1/AutthHTTP1.gif" border="0" alt="" width="493" height="511" /></p>
<p>Dans le champ <span class="italique">Texte à afficher</span>, vous pouvez      rentrer du HTML comme ci-dessous, proposant, en cas de refus, un nouvel essai      :</p>
<blockquote class="source"><p>&lt;p align=&nbsp;&raquo;center&nbsp;&raquo;&gt;Acc&amp;egrave;s refus&amp;eacute;&lt;/p&gt;<br />
&lt;p align=&nbsp;&raquo;center&nbsp;&raquo;&gt;&lt;a href=&nbsp;&raquo;&lt;?php $_SERVER['PHP_SELF']?&gt;&nbsp;&raquo;&gt;Nouvel          essai&lt;/a&gt;&lt;/p&gt;</p></blockquote>
<p align="center"><a title="AuthHTTPSql.mxp" name="file" href="images/r_dream/comport_serveur/auth/authhttp1/AuthHTTPSql.mxp" target="_self"><img src="mambots/editors/mosce/jscripts/tiny_mce/plugins/filemanager/InsertFile/img/ext/mxp.gif" border="0" alt="AuthHTTPSql.mxp" align="middle" /> AuthHTTPSql.mxp (<span id="11.24 KB,null" style="font-size: 80%;">11.24 KB)</span></a></p>
<p><span id="more-495"></span></p>
]]></content:encoded>
			<wfw:commentRss>http://www.flashxpress.net/ressources-dreamweaver/comportement-serveur-authentification-http-avec-mysql/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Authentification PHP et MySql</title>
		<link>http://www.flashxpress.net/ressources-dreamweaver/comportement-serveur-authentification-php-et-mysql/</link>
		<comments>http://www.flashxpress.net/ressources-dreamweaver/comportement-serveur-authentification-php-et-mysql/#comments</comments>
		<pubDate>Wed, 27 Jul 2005 13:24:12 +0000</pubDate>
		<dc:creator>Bertrand Gac</dc:creator>
				<category><![CDATA[Dreamweaver dynamique]]></category>
		<category><![CDATA[Dreamweaver extensions]]></category>
		<category><![CDATA[Tutoriels Dreamweaver]]></category>
		<category><![CDATA[authentification]]></category>
		<category><![CDATA[comportements serveur]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.flashxpress.net/ressources-dreamweaver/comportement-serveur-authentification-php-et-mysql/</guid>
		<description><![CDATA[Les extensions présentes sur cette page font partie d&#8217;un ensemble appelé Gestion utilisateurs, disponible via le panneau Applications &#62; Comportements de serveur &#62; Flashxpress &#62; Gestion utilisateurs . Ce groupe d&#8217;extensions comprend aussi les deux suivantes : Mot de passe oublié et Crypter un mot de passe Md5. NOTES : Dreamweaver MX 2004 et Windows [...]]]></description>
			<content:encoded><![CDATA[<p>Les extensions présentes sur cette page font partie d&#8217;un ensemble appelé <span class="italique">Gestion utilisateurs</span>, disponible via le panneau <span class="italique">Applications &gt; Comportements de serveur &gt; Flashxpress &gt; Gestion utilisateurs</span> . Ce groupe d&#8217;extensions comprend aussi les deux suivantes :</p>
<ul>
<li> <a title="Extension Mot de passe oublié" href="content/view/72/66/" target="_blank">Mot de passe oublié</a> et</li>
<li> <a title="Extension Crypter un mot de passe" href="content/view/68/66/" target="_blank">Crypter un mot de passe Md5</a>.</li>
</ul>
<p align="center"><img title="Accès au groupe d'extension Gestion utilisateurs" src="/images/r_dream/comport_serveur/auth/authmysql/images/1.gif" border="0" alt="" width="424" height="116" /></p>
<p>NOTES :</p>
<ol>
<li><span class="grasRouge">Dreamweaver MX 2004 et Windows uniquement (en fait cette extension fonctionne aussi sous Mac, le seul problème sur cette plate-forme est l&#8217;interface du comportement qui peut apparaitre différemment, avec en particulier des champs inaccessibles&#8230;ou presque. Tout retour d&#8217;utilisateur de Mac sur ce sujet serait le bienvenu&#8230;).<br />
</span></li>
<li><span class="grasRouge">Tester ces extensions en réel, c&#8217;est-à-dire chez votre hébergeur ! Je n&#8217;utilise pas EasyPhp&#8230;.et votre hébergeur non plus&#8230;<br />
</span></li>
<li>Si vous aviez installé la version précédente de cette extension, il faut impérativement la désinstaller.</li>
</ol>
<p><span id="more-493"></span></p>
<h2>Exemple de formulaire d&#8217;authentification</h2>
<p>C&#8217;est un formulaire basique, comportant deux champs textes et une case à cocher.<br />
Donnez aux champs de formulaires le même nom que celui des colonnes correspondantes dans votre table MySQL.<br />
Ici le champ <span class="italique">Email</span> s&#8217;appelle&#8230;email et le champ <span class="italique">Mot de passe</span> s&#8217;appelle pass. Le nom et la valeur de la case à cocher n&#8217;ont pas d&#8217;importance.<br />
Notez qu&#8217;aucune action n&#8217;est mentionnée dans la balise <span class="script">&lt;form&gt;</span>.</p>
<blockquote class="source"><p>&lt;form name=&nbsp;&raquo;form1&#8243; id=&nbsp;&raquo;form1&#8243; method=&nbsp;&raquo;post&nbsp;&raquo; action=&nbsp;&raquo;"&gt;<br />
&lt;input type=&nbsp;&raquo;text&nbsp;&raquo; name=&nbsp;&raquo;email&nbsp;&raquo; id=&nbsp;&raquo;email&nbsp;&raquo; /&gt;<br />
&lt;input type=&nbsp;&raquo;text&nbsp;&raquo; name=&nbsp;&raquo;pass&nbsp;&raquo; id=&nbsp;&raquo;pass&nbsp;&raquo; /&gt;<br />
&lt;input type=&nbsp;&raquo;checkbox&nbsp;&raquo; name=&nbsp;&raquo;memoriser&nbsp;&raquo; value=&nbsp;&raquo;checkbox&nbsp;&raquo; id=&nbsp;&raquo;memoriser&nbsp;&raquo; /&gt;<br />
&lt;input type=&nbsp;&raquo;submit&nbsp;&raquo; name=&nbsp;&raquo;Submit&nbsp;&raquo; value=&nbsp;&raquo;Envoyer&nbsp;&raquo; id=&nbsp;&raquo;Submit&nbsp;&raquo; /&gt;<br />
&lt;/form&gt;</p></blockquote>
<p align="center"><img title="Exemple de formulaire d'authentification" src="/images/r_dream/comport_serveur/auth/authmysql/images/form001.gif" border="0" alt="Exemple de formulaire d'authentification" width="273" height="141" /></p>
<h2>Authentification utilisateur</h2>
<p>Ce comportement permet d&#8217;identifier un visiteur. DMX 2004 dispose déjà d&#8217;un comportement de ce type.<br />
Celui-ci offre quelques options supplémentaires telles que :</p>
<ul>
<li>Gestion des méthodes de cryptage des mots de passe</li>
<li>Activation ou non d&#8217;un cookie</li>
<li>Instauration d&#8217;un délai d&#8217;inactivité</li>
</ul>
<p align="center">Onglet <span class="italique">Base</span></p>
<p align="center"><img title="Authentification utilisateur : onglet Base" src="/images/r_dream/comport_serveur/auth/authmysql/images/auth_1.gif" border="0" alt="Authentification utilisateur 1" width="566" height="521" /></p>
<ul>
<li>Si l&#8217;identification échoue, le visiteur est redirigé vers un fichier de refus, à partir duquel on peut l&#8217;inviter à s&#8217;enregistrer, ou à contacter l&#8217;administrateur etc.</li>
<li>Si l&#8217;identification réussit, le nom d&#8217;utilisateur est stocké dans une variable de session, disponible tout le temps de sa visite. Cette variable de session est basée sur un champ de la table SQL, par exemple, l&#8217;email du visiteur, ou son pseudo etc.</li>
</ul>
<p align="center">
<p align="center">Onglet <span class="italique">Options</span></p>
<p align="center"><img title="Authentification utilisateur : onglet Options" src="/images/r_dream/comport_serveur/auth/authmysql/images/auth_2.gif" border="0" alt="Authentification utilisateur 2" width="566" height="521" /></p>
<p align="center">
<ul>
<li><span class="italique">Niveaux d&#8217;accès</span><br />
En plus de la vérification du login et du mot de passe, vous pouvez choisir de vérifier le niveau&nbsp;&raquo; d&#8217;accès, autrement dit le niveau de privilèges. C&#8217;est par exemple un champ réservé dans votre table qui peut contenir des valeurs telles que &laquo;&nbsp;Administrateur&nbsp;&raquo;, &laquo;&nbsp;Membre&nbsp;&raquo;, etc.</li>
<li><span class="italique">Mot de passe</span><br />
Vous pouvez choisir une méthode de cryptage du mot de passe, en fonction bien sûr de celle que vous avez utilisée lorsque les visiteurs se sont enregistrés la première fois dans la base.L&#8217;erreur la plus courante concernant les mots de passe cryptés est de ne pas prévoir un champ dans la table suffisamment grand pour recevoir une chaine de caractères cryptée. À titre d&#8217;exemple, voici une copie d&#8217;écran de deux mots de passe cryptés, le premier avec <span class="script">MD5</span>, le second avec <span class="script">PASSWORD</span>.<br />
Si vous voulez utiliser <span class="script">MD5</span>, prévoyez un champ de type VARCHAR(32). Pour <span class="script">PASSWORD</span> , VARCHAR(41) minimum.</li>
</ul>
<p align="center"><img title="Exemples de mots de passe cryptés" src="/images/r_dream/comport_serveur/auth/authmysql/images/capt_auth_2.gif" border="0" alt="" width="338" height="110" /></p>
<p><span class="grasRouge">L&#8217;utilisation des deux  options suivantes n&#8217; a de sens que si vous utilisez parallèlement l&#8217;extension <em>Protéger une page</em>. </span></p>
<ul>
<li><span class="italique">Mémoriser les informations</span><br />
Vous avez la possibilité d&#8217;installer un cookie sur le poste client. Ceci permettra à votre visiteur de ne plus avoir à s&#8217;identifier lorsqu&#8217;il reviendra sur le site .<br />
Si vous souhaitez donner un durée de vie &laquo;&nbsp;illimitée&nbsp;&raquo; à ce ccokie , rentrez simplement une valeur telle que 3650 jours par exemple (10 ans devrait faire l&#8217;affaire, non ?)</li>
<li><span class="italique">Désactiver la session</span><br />
Cette option permet d&#8217;instaurer un délai d&#8217;inactivité. Elle est incompatible avec la précédente.<br />
Instaurer un délai d&#8217;inactivité fournit un moyen supplémentaire d&#8217;accroitre la sécurité d&#8217;une page en déterminant l&#8217;heure d&#8217;arrivée du visiteur sur la page. Si aucune activité n&#8217;est détectée pendant plus de x minutes (rechargement de page, navigation entre pages), la session est désactivée. Si le visiteur tente d&#8217;accéder à une autre page, ou de recharger la page courante, il devra s&#8217;authentifier à nouveau.<br />
Cela peut être utile dans le cas où une personne consulte des pages confidentielles, puis pour une raison quelconque délaisse son ordinateur. Au bout de X temps, quelqu&#8217;un d&#8217;autre passant derrière lui, qui tenterait d&#8217;accéder à d&#8217;autres pages s&#8217;en verrait refuser l&#8217;accès.</li>
</ul>
<p align="center"><a title="FormAuth.mxp" name="file" href="images/r_dream/comport_serveur/auth/authmysql/FormAuth.mxp" target="_self"><img src="/images/icones/mxp.gif" border="0" alt="FormAuth.mxp" align="middle" /> FormAuth.mxp (<span id="18.08 KB,null" style="font-size: 80%;">18.08 KB)</span></a>{mospagebreak }</p>
<p><!-- xxxxxxxxxxxxxxx--></p>
<h2>Protéger une page<span class="titrerubriquerouge"> </span></h2>
<p>Ce comportement vérifie l&#8217;existence ou non d&#8217;une variable de session. Cette variable peut provenir d&#8217;un formulaire d&#8217;authentification.</p>
<p align="center">Onglet <span class="italique">Base</span></p>
<p align="center"><img title="Protéger une page : onglet Base" src="/images/r_dream/comport_serveur/auth/authmysql/images/prot_1.gif" border="0" alt="Protéger une page" width="522" height="409" /></p>
<ul>
<li><span class="italique">Variable de session</span><br />
Elle doit être basée sur un des champs du  formulaire d&#8217;authentification.</li>
<li> <span class="italique">URL de redirection</span><br />
Si cette variable n&#8217;existe pas, c&#8217;est que le visiteur ne s&#8217;est pas authentifié auparavant. Il est alors redirigé vers une autre page.</li>
<li><span class="italique">Autoriser l&#8217;accès par niveau</span><br />
Vous pouvez contrôler l&#8217;accès selon un niveau de privilège.<br />
Si par exemple, la page n&#8217;est accessible qu&#8217;à un administrateur, tout autre visiteur n&#8217;ayant pas ce statut sera redirigé vers une page de refus. Là encore, ce niveau doit être déterminé via le comportement <span class="italique">Authentification utilisateur</span>.</li>
</ul>
<p align="center">Onglet <span class="italique">Options</span></p>
<p align="center"><img title="Protéger une page ; onglet Options" src="/images/r_dream/comport_serveur/auth/authmysql/images/prot_2.gif" border="0" alt="Protéger une page" width="522" height="409" /></p>
<ul>
<li><span class="italique">Options supplémentaires</span><br />
N&#8217;utilisez ces options que si vous les avez paramétrées dans le comportement <span class="italique">Authentification utilisateur</span>.</p>
<ul>
<li>U<span class="italique">tiliser un cookie</span> : la présence du cookie est vérifiée lors de l&#8217;accès à la page. Si il est trouvé, l&#8217;accès à la page est autorisé. Notez bien qu&#8217;il ne s&#8217;agit pas d&#8217;une re-vérification de données (ce qui n&#8217;aurait pas de sens) mais simplement de vérifier la présence ou non de ce cookie. Pour que ce cookie existe, il doit avoir éte écrit lors de l&#8217;authentification.</li>
<li><span class="italique">Paramétrer un délai d&#8217;inactivité</span> : quand vous utilisez cette option,  l&#8217;heure d&#8217;arrivée du visiteur sur les pages protégées est enregistrée.<br />
Supposons que pour une raison quelconque, ce visiteur oublie de refermer une page, ou s&#8217;absente tout simplement pendant un certain temps, puis que lui ou un autre tente plus tard de recharger la page ou de naviguer dans les pages réservées, alors il devra s&#8217;identifier à nouveau si le délai est dépassé.<br />
C&#8217;est un moyen  d&#8217;accroitre la sécurité des espaces réservés à des membres.</li>
</ul>
</li>
</ul>
<div><a title="ProtectPage.mxp" name="file" href="images/r_dream/comport_serveur/auth/authmysql/ProtectPage.mxp" target="_self"><img src="/images/icones/mxp.gif" border="0" alt="ProtectPage.mxp" align="middle" /> ProtectPage.mxp (<span id="9.98 KB,null" style="font-size: 80%;">9.98 KB)</span></a></div>
<h2>Fermer une session</h2>
<p align="left">Cette extension permet simplement de supprimer toutes les informations de session du visiteur.</p>
<p align="center"><img title="Fermer une session" src="/images/r_dream/comport_serveur/auth/authmysql/images/fermer_1.gif" border="0" alt="Fermer une session" width="510" height="206" /></p>
<p align="center"><a title="FermerSession.mxp" name="file" href="images/r_dream/comport_serveur/auth/authmysql/FermerSession.mxp" target="_self"><img src="/images/icones/mxp.gif" border="0" alt="FermerSession.mxp" /> FermerSession.mxp (<span id="5.66 KB,null" style="font-size: 80%;">5.66 KB)</span></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.flashxpress.net/ressources-dreamweaver/comportement-serveur-authentification-php-et-mysql/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

