IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Listbox afficher une image


Sujet :

Langage PHP

  1. #1
    Membre averti
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Janvier 2007
    Messages
    1 144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Formateur en informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 144
    Points : 337
    Points
    337
    Par défaut Listbox afficher une image
    Bonjour,
    J'ai un formulaire php qui parcours un repertoire photos du serveur et liste les noms des images dans une listbox.

    Losrqu'on clic sur un nom de la listbox, je voudrais que l'image correspondant au nom apparaisse dans la page... Je ne trouve rien a se sujet...
    Visiblement je dois chercher a faire sa en javascript...

    En java j'arrive a faire apparaitre un message lorsqu'on clic sur un element de la liste, mais je n'arrive pas a afficher l'image...

    Merci de votre aide!

  2. #2
    Expert éminent
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Points : 7 762
    Points
    7 762
    Par défaut
    Hello

    Cette question est relative au forum JavaScript.

    Voici une solution simple avec jQuery:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    <select id="images">
      <option value="images/01.jpg">01.jpg</option>
      <option value="images/02.jpg">02.jpg</option>
      <option value="images/03.jpg">03.jpg</option>
    </select>
    <div id="img_placeholder"></div>
    <script type="text/javascript">
    <!--
    $(function () {
      $('#images').change(function () {
        $('#img_placeholder').html($('<img>').attr('src', $(this).val()));
      });
    });
    //-->
    </script>
    Enjoy.

  3. #3
    Membre averti
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Janvier 2007
    Messages
    1 144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Formateur en informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 144
    Points : 337
    Points
    337
    Par défaut
    Merci, mais l'image n'apparaît pas dans ma page...

  4. #4
    Expert éminent
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Points : 7 762
    Points
    7 762
    Par défaut
    Peux-tu être un peu plus explicite ?

  5. #5
    Membre averti
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Janvier 2007
    Messages
    1 144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Formateur en informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 144
    Points : 337
    Points
    337
    Par défaut
    Tu as essayé toi le script? (peut être une fausse manip de ma part mais j'ai vérifié plusieurs fois...)
    La liste apparait, mais pas d'image à l'écran lorsque je selectionne un item...

    Regarde : http://georges86.free.fr/test/Ajoute...TestImage.html

  6. #6
    Membre chevronné
    Avatar de ska_root
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2005
    Messages
    1 203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Août 2005
    Messages : 1 203
    Points : 1 839
    Points
    1 839
    Par défaut
    Bonjour,

    Citation Envoyé par Benjamin Delespierre Voir le message
    Voici une solution simple avec jQuery:
    Pour exécuter ce script, il faut télécharger et inclure la librairie javascript JQuery dans ton html. Sinon, il existe aussi des tutos...

    JQuery :
    http://docs.jquery.com/Downloading_j...ownload_jQuery

    Tutos DVP :
    http://javascript.developpez.com/cou...meworks#jquery


  7. #7
    Membre averti
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Janvier 2007
    Messages
    1 144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Formateur en informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 144
    Points : 337
    Points
    337
    Par défaut
    Ah d'accord !!!
    Hé Hé ! effectivement... Sans installer le bazard !
    Merci je vais regarder,
    J'ai trouvé un code qui peut faire ça qu'en pensez-vous et quel est l'avantage de jQuery par rapport à ce code? :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    <form name="avatar">
      <select name="avatar" onchange="document.getElementById('monimageavecid').src=this.value;"> 
          <option value="avatar1.jpg">Avatar1</option>
          <option value="avatar2.jpg">Avatar2</option>
          <option value="avatar3.jpg">Avatar3</option>
          <option value="avatar4.jpg">Avatar4</option>
          <option value="avatar5.jpg">Avatar5</option>
          <option value="avatar6.jpg">Avatar6</option>  
       </select>
       <img scr="javascript:type_avatar(this.value);">
    </form>
    Merci !

  8. #8
    Membre averti
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Janvier 2007
    Messages
    1 144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Formateur en informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 144
    Points : 337
    Points
    337
    Par défaut
    Merci ! j'ai réussi !
    Il est possible de redimensionner l'image automatiquement pour que toutes les images s'affiche dans le même cadre?

    Encore merci !

  9. #9
    Membre chevronné
    Avatar de ska_root
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2005
    Messages
    1 203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Août 2005
    Messages : 1 203
    Points : 1 839
    Points
    1 839
    Par défaut
    en fait, les librairies javascript permettent beaucoup de chose intéressantes si tu veux utiliser beaucoup Javascript ou Ajax (fallait bien parler de PHP un moment donné...)

    mais pour ton exemple, tu pouvais faire plus simple aussi, sans aucune librairie.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
     
    <html>	
    <head>
    		<title>test</title>
    		<script type="text/javascript">
    		<!--
     
    		// fix pour compatibilite IE / Firefox 
    		if(!document.getElementById) document.getElementById=function (id) {
     			return eval("document.all."+id);
     		}
     
     
    		function view_image(el) {
    			var img_placeholder= document.getElementById('img_placeholder');
    			img_placeholder.src=(el.options[el.options.selectedIndex].value);
    		}
     
    		//-->
    		</script>
    </head>
    <body>
     
    <select id="images" onChange="view_image(this)">
    <option value="images/01.jpg">01.jpg</option>
    <option value="images/02.jpg">02.jpg</option>
    <option value="images/03.jpg">03.jpg</option>	
    </select>
     
    <img id="img_placeholder" src="images/01.jpg" />
    </body>
     
    </html>


    edit: désolé, je n'avais pas vu ton post précédent qui est sensiblement la même chose (sauf que cela ne marche pas sur IE7 et inférieur )

    pour le redimensionnement, tu peux forcer la balise image (mais le poids de l'image reste le même et c'est pas génial si l'image est de type portrait par exemple, a moins qu'elles le soient toutes évidemment...)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <img id="img_placeholder" src="images/01.jpg" width="150"/>

  10. #10
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 470
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 470
    Points : 5 831
    Points
    5 831
    Billets dans le blog
    1
    Par défaut
    Pour que toutes les images soient à la même taille et que certaines ne deviennent pas floues, je serais d'avis de récupérer la largeur de chacune (avec la fonction PHP getimagesize), et de mettre toutes les images à la largeur de la plus petite d'entre elles (si on réduit, ça ne devient pas flou).

  11. #11
    Expert éminent
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Points : 7 762
    Points
    7 762
    Par défaut
    Il y a un plugin jQuery pour faire ça: jquery.imgscale.js (http://plugins.jquery.com/plugin-tags/image-resize)

  12. #12
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 470
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 470
    Points : 5 831
    Points
    5 831
    Billets dans le blog
    1
    Par défaut
    Il y a un plugin jQuery pour faire ça
    Je ne vois pas l'intérêt (à moins d'avoir loupé un truc), et de plus, on risque de rendre flou.

  13. #13
    Expert éminent
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Points : 7 762
    Points
    7 762
    Par défaut
    Ce plugin te permet de redimensionner une image coté utilisateur sans (grosse) perte de qualité. Bien évidement, il est toujours impossible d'agrandir une image sans perte. Au moins avec cette solution PHP n'a pas à calculer les dimensions l'image en question: JavaScript s'en charge.

  14. #14
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 470
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 470
    Points : 5 831
    Points
    5 831
    Billets dans le blog
    1
    Par défaut
    Mais c'est possible sans plugin :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <img src="..." name="img" />
    <script type="text/javascript">
    alert('width='+img.width);
    </script>
    ...Comme il est évident que tu connais, le plugin apporte autre chose, mais quoi ?

  15. #15
    Expert éminent
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Points : 7 762
    Points
    7 762
    Par défaut
    Le plugin apporte entre autres la préservation du ratio width/height (comme son nom le suggère, il s'agit d'une mise à l'échelle et non d'un redimensionnement).

    Voici un cas d'utilisation:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
            function viewLargerImage( $link ) {
    		var src = $link.siblings( "img" ).attr('src'),
    		$img = $('<div><img src="' + src + '" /></div>');
    		$img.dialog({
    			modal: true,
    			width: 500,
    			height: 500,
    			resizable: false,
    			title: src
    		}).css('text-align', 'center').find('img').imgscale({scale: 'fit'});
    	}
    L'image dans la boite de dialogue s'adapte à sa taille avec préservation du ratio.

    Page du plugin: http://imgscale.kjmeath.com/

  16. #16
    Membre chevronné
    Avatar de ska_root
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2005
    Messages
    1 203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Août 2005
    Messages : 1 203
    Points : 1 839
    Points
    1 839
    Par défaut
    Citation Envoyé par laurentSc Voir le message
    Mais c'est possible sans plugin...Comme il est évident que tu connais, le plugin apporte autre chose, mais quoi ?
    on parle de redimensionnement d'image tout en gardant une résolution adaptée.

    Si tu prends une image carrée de 15px que tu forces la propriété width en HTML ou en Javascript à 150px, ton image aura un rendu tout pourri (pixelisé comme on dit)

    Le plugin en question te permet de modifier à la volée les propriétés, dont la taille, de ton image afin qu'elle soit correcte peu importe la taille que tu veux en obtenir.

    pour résumer :
    avec PHP et la librairie GD : le serveur travaille l'image avant de l'envoyer, l'image est propre à l'affichage, le poids des images est réduit si l'image est réduite.
    avec JQuery et son plugin : le navigateur doit faire le travail en javascript, tu dépend donc des ressources du poste client, l'image est propre à l'affichage mais le poids des images n'est pas diminué (car elles arrivent entières au navigateur).
    avec Javascript ou CSS : le navigateur fait le travail en forçant l'affichage de l'image qui devient moche si la résolution est différente. le poids des images est inchangé.

  17. #17
    Membre averti
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Janvier 2007
    Messages
    1 144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Formateur en informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 144
    Points : 337
    Points
    337
    Par défaut
    Bonjour, et merci de votre aide.
    Je n'arrive pas à faire marcher le code...
    J'ai intégré le plugin imgscale mais je n'arrive pas à faire apparaitre l'image...

    Je récupère le liens de l'image issu de ma listbox... Mais c'est tout...
    Le code d'origine c'est ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    <select id="images">
      <option value="images/01.jpg">01.jpg</option>
      <option value="images/02.jpg">02.jpg</option>
      <option value="images/03.jpg">03.jpg</option>
    </select>
    <div id="img_placeholder"></div>
    <script type="text/javascript">
    <!--
    $(function () {
      $('#images').change(function () {
        $('#img_placeholder').html($('<img>').attr('src', $(this).val()));
      });
    });
    //-->
    </script>
    Voici mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    $(function () {
      $('#ListeImages').change(function () {
    	$image = $(this).val();
    	var src = $image.siblings( "img" ).attr('src'),
    	$img = $('<div><img src="' + src + '" /></div>');
    	$img.dialog({
    		modal: true,
    		width: 100,
    		height: 10,
    		resizable: false,
    		title: src
    	}).css('text-align', 'center').find('img').imgscale({scale: 'fit'});
     
      });
    });
    Je comprends pas grand chose en faite...

  18. #18
    Expert éminent
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Points : 7 762
    Points
    7 762
    Par défaut
    Le code que j'ai posté n'était là que pour fournir un exemple de cas d'utilisation de imgscale. Je n'ai jamais dit que tu devais le prendre tel quel et pour cause, il utilise la jQuery UI !

    Dans ton cas, fais déjà s'afficher les images dans le placeholder et ensuite on redimensionnera.

  19. #19
    Membre averti
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Janvier 2007
    Messages
    1 144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Formateur en informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 144
    Points : 337
    Points
    337
    Par défaut
    J'arrive déjà à faire afficher les images dans le placeHolder, mais je l'ai changé de nom...
    Je veux maintenant redimensionner l'image contenue dans le Div placeHolder (dans ton exemple).

  20. #20
    Expert éminent
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Points : 7 762
    Points
    7 762
    Par défaut
    Ok. Mets une taille largeur / hauteur fixe au placeholder et fais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <script type="text/javascript">
    <!--
    $(function () {
      $('#images').change(function () {
        var img;
        $('#img_placeholder').html(
          img = ('<img>').attr('src', $(this).val())
        );
        img.imgscale({scale: 'fit'});
      });
    });
    //-->
    </script>
    Assures-toi que le plugin imgscale est bien chargé.

    Le chainage habituel avec jQuery est ici impossible car imgscale ne renvoie pas l'élément.

Discussions similaires

  1. [VB.NET] afficher une image stockée dans une table
    Par matonfire dans le forum ASP.NET
    Réponses: 4
    Dernier message: 19/03/2004, 11h21
  2. Afficher une image JPG qui se trouve dans une bdd
    Par Harry dans le forum Bases de données
    Réponses: 6
    Dernier message: 27/02/2004, 10h51
  3. Charger et afficher une image jpg avec les mfc
    Par glop - pas glop dans le forum MFC
    Réponses: 3
    Dernier message: 11/02/2004, 18h59
  4. Réponses: 2
    Dernier message: 04/02/2004, 22h32
  5. Afficher une image sans passer par les textures
    Par Black_Daimond dans le forum DirectX
    Réponses: 3
    Dernier message: 09/05/2003, 19h13

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo