Aller au contenu

Un Post Pour Poser Des Quetions "sites" !


saoul cool

Messages recommandés

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

Lien vers le commentaire
Partager sur d’autres sites

  • Réponses 393
  • Créé
  • Dernière réponse

Meilleurs contributeurs dans ce sujet

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

Lien vers le commentaire
Partager sur d’autres sites

  • 3 mois après...

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.

Lien vers le commentaire
Partager sur d’autres sites

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é par Sfimx
Lien vers le commentaire
Partager sur d’autres sites

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 !

Lien vers le commentaire
Partager sur d’autres sites

Plus simple aussi, avec glob() :

  1. 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).
  2. On fait un foreach, pour chaque clé de $fichiers qui sera affichée en tant que $file qui est le fichier en cours.
  3. 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 :

Aprè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

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é par DeadPixel
Lien vers le commentaire
Partager sur d’autres sites

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 .. !

Lien vers le commentaire
Partager sur d’autres sites

Plus simple aussi, avec glob() :
  1. 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).
  2. On fait un foreach, pour chaque clé de $fichiers qui sera affichée en tant que $file qui est le fichier en cours.
  3. 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 :

Aprè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

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.

Lien vers le commentaire
Partager sur d’autres sites

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...

Lien vers le commentaire
Partager sur d’autres sites

Il accepte les expressions régulieres simples, mais pas completement :D

-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

Lien vers le commentaire
Partager sur d’autres sites

  • 3 semaines après...

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" ^^)

Lien vers le commentaire
Partager sur d’autres sites

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).

Lien vers le commentaire
Partager sur d’autres sites

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

Lien vers le commentaire
Partager sur d’autres sites

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 :o

 

Edit: et s/librairie/bibliothèque/

Lien vers le commentaire
Partager sur d’autres sites

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.

Invité
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

Chargement

×
×
  • Créer...