Professional Documents
Culture Documents
Tutoriel Ajax en clair - Comment raliser une photothque en AJAX Cet article, suite des articles AJAX en clair, prsente la gestion complte d'une photothque sans utiliser ni base de donnes, ni cookies, ni session, mettant en vidence (si besoins taient) la puissance et la souplesse du moteur AJAX.
I - Avant-propos........................................................................................................................................................... 3 II - Prrequis................................................................................................................................................................ 3 III - Dcouverte de l'article.......................................................................................................................................... 3 IV - Organisation et explication du code.....................................................................................................................4 IV-A - Actions communes aux deux PHP..............................................................................................................4 IV-B - Le ZOOM sur image....................................................................................................................................5 IV-C - Conclusion................................................................................................................................................... 7 V - Remerciements...................................................................................................................................................... 7
-2Les sources prsentes sur cette page sont libres de droits et vous pouvez les utiliser votre convenance. Par contre, la page de prsentation constitue une uvre intellectuelle protge par les droits d'auteur. Copyright 2013 christele_r. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000 de dommages et intrts. Cette page est dpose la SACD.
http://christele.developpez.com/tutoriels/ajax/ajax-en-clair-phototheque/
I - Avant-propos
S'adressant tous ceux qui matrisent la programmation permettant de grer un site Web , cet article a pour but d'aller encore plus loin dans l'utilisation du module AJAX. Developpez.com possde dj un grand nombre de tutoriels et d'articles sur AJAX. Le but du prsent article reste donc de mettre en vidence la multiple utilisation d'un seul et simple module AJAX.
II - Prrequis
Bon programmeur comme vous l'tes, vous matrisez le HTML, les feuilles de style et les bases du JavaScript. Vous avez lu un des deux articles AJAX en Clair le Chat ou AJAX en Clair le Tableau ainsi le Moteur AJAX de base est considr comme acquis !
Que vous pouvez tester ici : Testez la Photothque . Cette fois vous avez tout en main et il nous reste regarder et expliquer le mcanisme gnral du code.
-3Les sources prsentes sur cette page sont libres de droits et vous pouvez les utiliser votre convenance. Par contre, la page de prsentation constitue une uvre intellectuelle protge par les droits d'auteur. Copyright 2013 christele_r. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000 de dommages et intrts. Cette page est dpose la SACD.
http://christele.developpez.com/tutoriels/ajax/ajax-en-clair-phototheque/
La page HTML telle que reprsente (voir image plus haut) est dcrite dans index.php jusqu'aux images cliquables du menu. Le pav de vignettes tant gnr par phototheque_ajax.php. La fonction AJAX est appele sans action prcise et donc renvoie la totalit du pav de vignette en cours. AJAX l'envoyant dans le DIV id='LePave2'.
-4Les sources prsentes sur cette page sont libres de droits et vous pouvez les utiliser votre convenance. Par contre, la page de prsentation constitue une uvre intellectuelle protge par les droits d'auteur. Copyright 2013 christele_r. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000 de dommages et intrts. Cette page est dpose la SACD.
http://christele.developpez.com/tutoriels/ajax/ajax-en-clair-phototheque/
phototheque_ajax.php
} ?>
for ($i2=0; $i2<$nombre; $i2++) { $pos = strpos($liste[$i2], ".jpg"); if ($liste[$i2] != "." && $liste[$i2] != ".." && !is_dir($chemin.$liste[$i2]) && $pos>3) { $nombreOK++ ; } } $CategorieNbr[$i]=$nombreOK; closedir($repertoire);
Quelques remarques : afin de simplifier la lecture du code, les tables des rpertoires (catgories) et photos sont en base '1', La premire catgorie est donc en [1]. Par ailleurs le nombre d'lments est gal au nombre d'lments +1 pour le rendre directement utilisable dans les boucles FOR, etc. Gardez l'esprit que le code permet d'utiliser plusieurs catgories sans avoir modifier aucun code ! Cependant limitez-vous dix maximum le menu restera gr automatiquement comme ceci : index.php
function menu() { var LeMenu=" <a onclick='recul();' href='#' class='LesA14' ><img src='logos/ fleche_gauche.gif' id='Xx' alt='Retour' /></a> <img src='logos/ pave.gif' id='Zz' alt='phototheque' / > <a onclick='avance();' href='#' class='LesA14' ><img src='logos/ fleche_droite.gif' id='Yy' alt='Suite' /></a><br />"; LeMenu=LeMenu+"<div class='centrePF1'><span class='LaFonte_3_Coul1' >"; for (i=1; i<nbcateg; i++) { if(i==4 || i==7 || i==10) LeMenu=LeMenu+"<br />"; if(i>1 && i!=4 && i!=7 && i!=10) LeMenu=LeMenu+" - "; if (i!=categorie) { LeMenu=LeMenu+"<a href='#' onclick='ChangeCatego(100,"+i+",1,1);' class='LesA12Phot'> "+nom_categorie[i]+" </ a>";} if (i==categorie) { LeMenu=LeMenu+"<a href='#' class='LesA12Phota'> "+nom_categorie[i]+" </a>";} } document.getElementById('LePave1').innerHTML = LeMenu+"</span></div>"; }
En effet les deux PHP possdent le nombre et les libells des catgories, ainsi que le nombre de photos de chaque catgorie (comme nous l'avons mentionn plus haut), mais dans le cas particulier de index.php toutes ces donnes sont prsentes en PHP, mais galement en JavaScript. En effet AJAX lui galement a besoin de ces donnes. Occasion de rappeler que souvent AJAX utilise des donnes communes avec PHP, vous pouvez voir la facilite de grer cette double information.
<a href='#' class='photo'><img src='albumsv/diversv/montmartre-nuitv.jpg' alt='albums/divers/ montmartrenuit,jpg' class='photo' width='150' height='150' onclick='voir('albums/divers/montmartre-nuit.jpg');' /></a>
-5Les sources prsentes sur cette page sont libres de droits et vous pouvez les utiliser votre convenance. Par contre, la page de prsentation constitue une uvre intellectuelle protge par les droits d'auteur. Copyright 2013 christele_r. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000 de dommages et intrts. Cette page est dpose la SACD.
http://christele.developpez.com/tutoriels/ajax/ajax-en-clair-phototheque/
Donc lors du clic, la fonction voir() ; contenue dans phototheque.js et celles de ce fichier JavaScript vont mettre l'image grand format dans une imbrication de trois DIV qui sont ceux-ci : index.php
<div id="DivVisualisation" class="DivVisualisation"></div> <div id="DivGeneral" class="DivGeneral"> <div id="Divimage" class=Divimage" onclick="fermeture()"> </div> <div id="DivTitre" class="DivTitre"> </div> </div>
Avec en premier un DIV situ sous les trois DIV mais couvrant tout le reste de la page, enfin grce au CSS qui permet d'opacifier la page. Ce qui donne donc pour la feuille de style : phototheque.css
div.DivVisualisation { display: none; position: fixed; top: 0%; left: 0%; width: 100%; height: 100%; background-color: #3a3a3a; z-index:10; opacity:0.6; filter: alpha(opacity=60); } div.DivGeneral { display: none; position: fixed; padding: 0; margin:0; border: 1px solid black; background-color: white; z-index:11; top: 10%; left: 20%; overflow: auto; } div.Divimage { left:0; right:0; bottom:0; margin:0; padding: 8px; overflow: auto; width:100%; height:100%; } div.DivTitre { left:0%; width:100%; height:20px; padding:0; margin:0; color:black; text-align:center; }
Dont l'analyse vous sera familire. Alors le JavaScript peut s'excuter pour donner le zoom sur la vignette clique. phototheque.js
var coeff=4; var largeur=600;var hauteur=600; function voir(CheminNomImage) { var work = new Image(); work.src=CheminNomImage; work.onload= function () { largeur = this.width; hauteur = this.height; var DivGeneral = document.getElementById('DivGeneral'); document.getElementById('DivVisualisation').style.display='block'; var Titre = document.getElementById('DivTitre'); Titre.innerHTML = CheminNomImage; var content = document.getElementById('Divimage'); content.style.padding="0"; coeff=4; content.innerHTML = "<img src=" + CheminNomImage + " id='image' />"; document.getElementById('image').width=Math.round(largeur/coeff); document.getElementById('image').height = Math.round(hauteur/coeff); DivGeneral.style.display='block'; LeZoom();
-6Les sources prsentes sur cette page sont libres de droits et vous pouvez les utiliser votre convenance. Par contre, la page de prsentation constitue une uvre intellectuelle protge par les droits d'auteur. Copyright 2013 christele_r. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000 de dommages et intrts. Cette page est dpose la SACD.
http://christele.developpez.com/tutoriels/ajax/ajax-en-clair-phototheque/
phototheque.js
}; } function fermeture() { document.getElementById('DivGeneral').style.display='none'; document.getElementById('DivVisualisation').style.display='none'; } function LeZoom() { if (document.getElementById('image').width < largeur) { coeff = coeff-0.2; document.getElementById('image').width = Math.round(largeur/coeff); document.getElementById('image').height = Math.round(hauteur/coeff); zz=window.setTimeout('LeZoom();',60); } else {window.clearTimeout(zz);} }
IV-C - Conclusion
La simplicit utiliser AJAX est mise en vidence dans le cas de cette photothque, lorsque nous considrons les normes codes diffuss sur le NET pour un rsultat similaire. Bonne dcouverte.
V - Remerciements
Je remercie http://www.developpez.net/forums/u53874/zoom61/ pour sa relecture attentive, ainsi que http:// www.developpez.net/forums/u226061/vermine/. Je remercie galement ceux qui m'ont aid pour cet article.
-7Les sources prsentes sur cette page sont libres de droits et vous pouvez les utiliser votre convenance. Par contre, la page de prsentation constitue une uvre intellectuelle protge par les droits d'auteur. Copyright 2013 christele_r. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000 de dommages et intrts. Cette page est dpose la SACD.
http://christele.developpez.com/tutoriels/ajax/ajax-en-clair-phototheque/