Sfimx Posté(e) le 25 avril 2007 Signaler Partager Posté(e) le 25 avril 2007 Je suis en train de travailler sur un menu. Et au clique, un fond CSS doit changer. J'ai donc pendu ça : <script type="text/javascript" language="javascript"> function bottom_image() { var id = document.getElementById('menu_bottom').style.backgroundImage; if(id != 'url(img/menu_bottom_o.png)') { id = 'url(img/menu_bottom_o.png)'; } else { id = 'url(img/menu_bottom.png)'; } } </script> Pour info, normalement la valeur par défaut est img/menu_bottom.png, au clique elle devrait passer au img/menu_bottom_o.png et si je recliquerais elle repasserait à la valeur par défaut. Le truc, c'est qu'il ne se passe rien au clique et aussi le console CSS de Firefox ne réagit pas. Alors par hasard, jme suis dit, une bonne âme plantant ici pourrait éventuellement avoir la réponse... Sfimx Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Xr Posté(e) le 26 avril 2007 Signaler Partager Posté(e) le 26 avril 2007 T'as essayé un bon vieux alert("'"+id+"'"); ? Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Sfimx Posté(e) le 26 avril 2007 Signaler Partager Posté(e) le 26 avril 2007 Rien ne s'affiche, et pourtant dans ma feuille de style CSS il y a bien un valeure à background-image. Javascript serait-il incapable d'aller la chercher tout seul, comme un grand ? Alors pour combler à cette question j'ai ajouté du CSS dans la page : <style type="text/css"> #menu_bottom { background-image:url(img/menu_bottom.png); } </style> Et il n'a rien voulu savoir... Sfimx Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Trinita Posté(e) le 31 juillet 2007 Signaler Partager Posté(e) le 31 juillet 2007 Salut les gens, J'aimerais créer une page php qui permettrait d'afficher dynamiquement les images stockées dans un repertoire. "Dynamiquement" c'est à dire à chaque fois que je rajoute une image dans le repertoire, cette dernière s'affiche automatiquement sur la page php. Des idées ? Trinita vieille buse en php. Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Sfimx Posté(e) le 31 juillet 2007 Signaler Partager Posté(e) le 31 juillet 2007 (modifié) Salut les gens, J'aimerais créer une page php qui permettrait d'afficher dynamiquement les images stockées dans un repertoire. "Dynamiquement" c'est à dire à chaque fois que je rajoute une image dans le repertoire, cette dernière s'affiche automatiquement sur la page php. Des idées ? Trinita vieille buse en php. Une boucle, toute droit sortie de MauriceCMS : // ouvre le dossier de ton choix $dossier = opendir ("maurice/chose"); // création de la boucle while ($fichier = readdir ($dossier)) { // suppression des fichiers .. et . (qui permette de remonter un répertoire) if ($fichier != "." && $fichier != "..") { // Code HTML de ton choix pour la boucle, $fichier donne le nom du fichier avec l'extension ?> <img src="<? echo $fichier; ?>" alt="<? echo $fichier; ?">"><br /> <? } } // fermeture du dossier closedir ($dossier); Ceci listera tout simplement toutes les images. Tu peux jouer avec $fichier en proposant par exemple un lien dans un <input> pour pouvoir la mettre dans un post . Sinon, si tu veux gérer des fichiers facilement, utilise Lussumo Filebrowser . Sfimx Modifié le 31 juillet 2007 par Sfimx Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
GrandMiam Posté(e) le 31 juillet 2007 Signaler Partager Posté(e) le 31 juillet 2007 Une boucle, toute droit sortie de MauriceCMS : // ouvre le dossier de ton choix $dossier = opendir ("maurice/chose"); // création de la boucle while ($fichier = readdir ($dossier)) { // suppression des fichiers .. et . (qui permette de remonter un répertoire) if ($fichier != "." && $fichier != "..") { // Code HTML de ton choix pour la boucle, $fichier donne le nom du fichier avec l'extension ?> <img src="<? echo $fichier; ?>" alt="<? echo $fichier; ?">"><br /> <? } } // fermeture du dossier closedir ($dossier); Ceci listera tout simplement toutes les images. Tu peux jouer avec $fichier en proposant par exemple un lien dans un <input> pour pouvoir la mettre dans un post . Sinon, si tu veux gérer des fichiers facilement, utilise Lussumo Filebrowser . Sfimx Il faut vérifier les valeurs de retour de tout ça ! Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
DeadPixel Posté(e) le 31 juillet 2007 Signaler Partager Posté(e) le 31 juillet 2007 (modifié) Plus simple aussi, avec glob() :On crée une variable $fichiers et on lui attribue la valeur de retour de glob('*.jpg'), qui est un array avec tous les fichiers remplissant le masque *.jpg (* étant un joker, donc tous les fichiers qui finissent par .jpg).On fait un foreach, pour chaque clé de $fichiers qui sera affichée en tant que $file qui est le fichier en cours.Dedans, on affiche le texte en utilisant $file.(non j'arrive pas à expliquer plus clairement >_<). En gros ça donne : <?php $fichiers = glob('*.jpg'); foreach ($fichiers as $file) { echo '<a href="' . $file . '">' . $file . '</a>'; } ?> va afficher quelque chose du genre :fichier1.jpgfichier2.jpgAprès libre à toi de changer la ligne, tu peux utiliser toutes les fonctions PHP que tu veux sur $file pour mettre des détails, par exemple tu peux mettre : echo '<a href="' . urlencode($file) . '">' . $file . '</a> (' . round(filesize($file) / 1024,2) . ' kb, modifié le ' . date('d/m/y \à H:i', filectime($file)) . ')'; pour afficher fichier1.jpg (138.4 kb, modifié le 31/07/07 à 13:37)Quand même, tu aurais pu un peu chercher sur Google. Edit : j'ai oublié de préciser le petit inconvénient de cette solution : tu ne peux lister qu'un seul type de fichier (ici juste jpg). Modifié le 31 juillet 2007 par DeadPixel Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Monsieur Banane Posté(e) le 1 août 2007 Signaler Partager Posté(e) le 1 août 2007 Edit : j'ai oublié de préciser le petit inconvénient de cette solution : tu ne peux lister qu'un seul type de fichier (ici juste jpg). Je ne connaissais pas, mais logiquement, en mettant juste glob('*'); , ou en jouant avec les expression régulières (pas étendues ici apparemment). Le probleme du glob(*), c'est qu'il va essayer d'ouvir . et .. ! Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Trinita Posté(e) le 1 août 2007 Signaler Partager Posté(e) le 1 août 2007 Plus simple aussi, avec glob() :On crée une variable $fichiers et on lui attribue la valeur de retour de glob('*.jpg'), qui est un array avec tous les fichiers remplissant le masque *.jpg (* étant un joker, donc tous les fichiers qui finissent par .jpg).On fait un foreach, pour chaque clé de $fichiers qui sera affichée en tant que $file qui est le fichier en cours.Dedans, on affiche le texte en utilisant $file.(non j'arrive pas à expliquer plus clairement >_<). En gros ça donne : <?php $fichiers = glob('*.jpg'); foreach ($fichiers as $file) { echo '<a href="' . $file . '">' . $file . '</a>'; } ?> va afficher quelque chose du genre :fichier1.jpgfichier2.jpgAprès libre à toi de changer la ligne, tu peux utiliser toutes les fonctions PHP que tu veux sur $file pour mettre des détails, par exemple tu peux mettre : echo '<a href="' . urlencode($file) . '">' . $file . '</a> (' . round(filesize($file) / 1024,2) . ' kb, modifié le ' . date('d/m/y \à H:i', filectime($file)) . ')'; pour afficher fichier1.jpg (138.4 kb, modifié le 31/07/07 à 13:37)Quand même, tu aurais pu un peu chercher sur Google. Edit : j'ai oublié de préciser le petit inconvénient de cette solution : tu ne peux lister qu'un seul type de fichier (ici juste jpg). Merci à Sfimx et DeadPixel PS à DeadPixel : ouais c'est vrai j'aurais dû cherché sur google, le problème c'est que je dois gérer trop de trucs en même temps que je ne connais pas (donc faire des recherches sur sites), et j'ai pas eu l'idée de googeliser pour cette demande. Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Xr Posté(e) le 1 août 2007 Signaler Partager Posté(e) le 1 août 2007 Il faut vérifier les valeurs de retour de tout ça !Boh, c'est du php et les erreurs sont sans doute fatales donc tu mets des gros "or die('plantu')" derrière les deux fonctions d'ouverture et de fermeture et c'est bon (encore que si tu sais pas fermer, tu sais rien faire donc ça vaut sans doute pas la peine de planter, un warning suffirait). Je ne connaissais pas, mais logiquement, en mettant juste glob('*'); , ou en jouant avec les expression régulières (pas étendues ici apparemment). Le probleme du glob(*), c'est qu'il va essayer d'ouvir . et .. ! Normalement, '^[^\.].*\.(png|gif|jpg)' devrait virer ., .. et tous les fichiers cachés. Mais c'est une regex, pas de la syntaxe simple et je sais pas si glob prend ça. Edit: bah en fait on dirait pas que glob accepte les expressions régulières... Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Monsieur Banane Posté(e) le 1 août 2007 Signaler Partager Posté(e) le 1 août 2007 Il accepte les expressions régulieres simples, mais pas completement -le début ^ et la fin $ sont implicites -le + et le {x,y} sont pas digérés -le | non plus en gros, pas si terrible cette fonction, rien ne vau un bon if (eregi(".(jpg|gif|png)$", $file) mais sinon, avec glob(), j'en suis arrivé à glob('*.[pgj][nip][gf]') qui marche comme on veut Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
DeadPixel Posté(e) le 21 août 2007 Signaler Partager Posté(e) le 21 août 2007 J'ai une pitite question... j'ai voulu faire un lien qui fait un "toggle", en affichant ou cachant un certain div quand on clique dessus. Le code JS : function togglediv(iddiv) { var elem = document.getElementById(iddiv); // on récupère l'objet du div à cacher/afficher if(elem.style.display == 'none') elem.style.display = 'block'; //s'il est caché, on l'affiche else elem.style.display = 'none'; //s'il est affiché, on le cache } Et le HTML : <a href="connexion.html" onclick="togglediv('connexion'); return false;">Connexion</a> <div id="connexion" style="display:none">...</div> Donc en gros, le lien pointe sur connexion.html (donc pour ceux qui n'ont pas Javascript), et l'attribut onclick réagit pour la fonction (avec le paramètre iddiv = connexion) puis retourne false, afin d'annuler le comportement du href (la page ne changera donc pas pour ceux qui ont JS d'activé). Jusque là, tout marche à peu près : le problème, c'est que dès le premier chargement de la page, il faut cliquer deux fois sur le lien pour que le div s'affiche, alors qu'un seul clic devrait suffire ; une fois qu'on a cliqué deux fois dessus, tout marche normalement, un clic pour l'afficher et un autre pour le cacher. Je soupçonne largement le display:none, qui cache le div dès le chargement mais Javascript ne semble pas l'interpréter de cette manière, comme s'il était déjà en display:block dès le début (d'où le double clic). Une idée pour régler ça ? C'est pas très ergonomique et c'est difficilement remplaçable ("merci de cliquer deux fois sur le lien pour vous connecter, merci" ^^) Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Sfimx Posté(e) le 21 août 2007 Signaler Partager Posté(e) le 21 août 2007 L'utilisation d'une classe CSS avec la propriété display:none; et un JS très simple : http://findel.free.fr/blog/post/2004/09/30...asquer-un-block. Sfimx Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Xr Posté(e) le 22 août 2007 Signaler Partager Posté(e) le 22 août 2007 Oubliez les anims à la main : http://jquery.com/ Par contre c'est pas pratique si vous utilisez table-cell plutôt que block pour vos display (mais bon, IE6 reconnaît pas table-cell) Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
DeadPixel Posté(e) le 22 août 2007 Signaler Partager Posté(e) le 22 août 2007 Oubliez les anims à la main : http://jquery.com/ Par contre c'est pas pratique si vous utilisez table-cell plutôt que block pour vos display (mais bon, IE6 reconnaît pas table-cell) Ouais mais bon, c'est moyen de charger toute une librairie JS alors qu'il n'y a qu'un seul toggle sur la page, et qui en plus n'est utilisé que par les visiteurs (vu que c'est le module de connexion). Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Monsieur Banane Posté(e) le 22 août 2007 Signaler Partager Posté(e) le 22 août 2007 le problème, c'est que dès le premier chargement de la page, il faut cliquer deux fois sur le lien pour que le div s'affiche, alors qu'un seul clic devrait suffire ; une fois qu'on a cliqué deux fois dessus, tout marche normalement, un clic pour l'afficher et un autre pour le cacher. Je soupçonne largement le display:none, qui cache le div dès le chargement mais Javascript ne semble pas l'interpréter de cette manière, comme s'il était déjà en display:block dès le début (d'où le double clic). Une idée pour régler ça ? C'est pas très ergonomique et c'est difficilement remplaçable ("merci de cliquer deux fois sur le lien pour vous connecter, merci" ^^) C'est que tu a mit la propriété display en feuille css ou entre <style> Faut le mettre en ligne : <div id="connexion" style="display:none"> Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
DeadPixel Posté(e) le 22 août 2007 Signaler Partager Posté(e) le 22 août 2007 C'est que tu a mit la propriété display en feuille css ou entre <style> Faut le mettre en ligne : <div id="connexion" style="display:none"> Je déteste les gens logiques, ils ont toujours raison. Merci beaucoup Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Xr Posté(e) le 23 août 2007 Signaler Partager Posté(e) le 23 août 2007 Ouais mais bon, c'est moyen de charger toute une librairie JS alors qu'il n'y a qu'un seul toggle sur la page, et qui en plus n'est utilisé que par les visiteurs (vu que c'est le module de connexion).jquery-1.1.3.1.pack.js 21.1 KB Je parie que le logo de ton site est plus gros que ça Edit: et s/librairie/bibliothèque/ Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
DeadPixel Posté(e) le 23 août 2007 Signaler Partager Posté(e) le 23 août 2007 En effet, mais mon unique fonction fait 182 octets, donc même à 21 Ko près je m'en tamponne un peu Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Messages recommandés
Rejoindre la conversation
Vous pouvez publier maintenant et vous inscrire plus tard. Si vous avez un compte, connectez-vous maintenant pour publier avec votre compte.