Précédent   Forum des professionnels en informatique > PHP > Langage > Débuter
Débuter Forum d'entraide pour débuter en PHP. Avant de poster -> Cours PHP, FAQ PHP, Outils PHP, etc.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 06/07/2011, 12h54   #1
Membre actif
 
Inscription : janvier 2007
Messages : 915
Détails du profil
Informations forums :
Inscription : janvier 2007
Messages : 915
Points : 185
Points : 185
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!
jojo86 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/07/2011, 13h23   #2
Modérateur
 
Avatar de Benjamin Delespierre
 
Benjamin Delespierre
Développeur Web
Inscription : février 2010
Messages : 2 984
Détails du profil
Informations personnelles :
Nom : Benjamin Delespierre
Âge : 24
Localisation : France

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

Informations forums :
Inscription : février 2010
Messages : 2 984
Points : 5 011
Points : 5 011
Hello

Cette question est relative au forum JavaScript.

Voici une solution simple avec jQuery:
Code :
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.
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom
Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même).

Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...".
Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug.

Les boutons et existent, servez-vous en
Benjamin Delespierre est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 06/07/2011, 19h40   #3
Membre actif
 
Inscription : janvier 2007
Messages : 915
Détails du profil
Informations forums :
Inscription : janvier 2007
Messages : 915
Points : 185
Points : 185
Merci, mais l'image n'apparaît pas dans ma page...
jojo86 est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 06/07/2011, 21h32   #4
Modérateur
 
Avatar de Benjamin Delespierre
 
Benjamin Delespierre
Développeur Web
Inscription : février 2010
Messages : 2 984
Détails du profil
Informations personnelles :
Nom : Benjamin Delespierre
Âge : 24
Localisation : France

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

Informations forums :
Inscription : février 2010
Messages : 2 984
Points : 5 011
Points : 5 011
Peux-tu être un peu plus explicite ?
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom
Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même).

Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...".
Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug.

Les boutons et existent, servez-vous en
Benjamin Delespierre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/07/2011, 21h42   #5
Membre actif
 
Inscription : janvier 2007
Messages : 915
Détails du profil
Informations forums :
Inscription : janvier 2007
Messages : 915
Points : 185
Points : 185
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
jojo86 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/07/2011, 22h05   #6
Membre Expert
 
Avatar de ska_root
 
Homme
Développeur informatique
Inscription : août 2005
Messages : 1 179
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 42
Localisation : France

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

Informations forums :
Inscription : août 2005
Messages : 1 179
Points : 1 580
Points : 1 580
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

__________________
http://cdemarche.developpez.com/

Tu as la réponse à ta question ? N'oublies pas le petit en bas à gauche de ton message...
ska_root est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/07/2011, 22h07   #7
Membre actif
 
Inscription : janvier 2007
Messages : 915
Détails du profil
Informations forums :
Inscription : janvier 2007
Messages : 915
Points : 185
Points : 185
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 :
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 !
jojo86 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/07/2011, 22h21   #8
Membre actif
 
Inscription : janvier 2007
Messages : 915
Détails du profil
Informations forums :
Inscription : janvier 2007
Messages : 915
Points : 185
Points : 185
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 !
jojo86 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/07/2011, 22h46   #9
Membre Expert
 
Avatar de ska_root
 
Homme
Développeur informatique
Inscription : août 2005
Messages : 1 179
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 42
Localisation : France

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

Informations forums :
Inscription : août 2005
Messages : 1 179
Points : 1 580
Points : 1 580
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 :
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 :
<img id="img_placeholder" src="images/01.jpg" width="150"/>
__________________
http://cdemarche.developpez.com/

Tu as la réponse à ta question ? N'oublies pas le petit en bas à gauche de ton message...
ska_root est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/07/2011, 23h07   #10
Débutant
 
Homme Laurent
Webmaster
Inscription : octobre 2006
Messages : 2 873
Détails du profil
Informations personnelles :
Nom : Homme Laurent
Âge : 48
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Activité : Webmaster
Secteur : Industrie

Informations forums :
Inscription : octobre 2006
Messages : 2 873
Points : 1 320
Points : 1 320
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).
laurentSc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/07/2011, 07h52   #11
Modérateur
 
Avatar de Benjamin Delespierre
 
Benjamin Delespierre
Développeur Web
Inscription : février 2010
Messages : 2 984
Détails du profil
Informations personnelles :
Nom : Benjamin Delespierre
Âge : 24
Localisation : France

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

Informations forums :
Inscription : février 2010
Messages : 2 984
Points : 5 011
Points : 5 011
Il y a un plugin jQuery pour faire ça: jquery.imgscale.js (http://plugins.jquery.com/plugin-tags/image-resize)
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom
Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même).

Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...".
Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug.

Les boutons et existent, servez-vous en
Benjamin Delespierre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/07/2011, 09h09   #12
Débutant
 
Homme Laurent
Webmaster
Inscription : octobre 2006
Messages : 2 873
Détails du profil
Informations personnelles :
Nom : Homme Laurent
Âge : 48
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Activité : Webmaster
Secteur : Industrie

Informations forums :
Inscription : octobre 2006
Messages : 2 873
Points : 1 320
Points : 1 320
Citation:
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.
laurentSc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/07/2011, 10h25   #13
Modérateur
 
Avatar de Benjamin Delespierre
 
Benjamin Delespierre
Développeur Web
Inscription : février 2010
Messages : 2 984
Détails du profil
Informations personnelles :
Nom : Benjamin Delespierre
Âge : 24
Localisation : France

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

Informations forums :
Inscription : février 2010
Messages : 2 984
Points : 5 011
Points : 5 011
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.
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom
Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même).

Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...".
Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug.

Les boutons et existent, servez-vous en
Benjamin Delespierre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/07/2011, 10h54   #14
Débutant
 
Homme Laurent
Webmaster
Inscription : octobre 2006
Messages : 2 873
Détails du profil
Informations personnelles :
Nom : Homme Laurent
Âge : 48
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Activité : Webmaster
Secteur : Industrie

Informations forums :
Inscription : octobre 2006
Messages : 2 873
Points : 1 320
Points : 1 320
Mais c'est possible sans plugin :
Code :
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 ?
laurentSc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/07/2011, 11h29   #15
Modérateur
 
Avatar de Benjamin Delespierre
 
Benjamin Delespierre
Développeur Web
Inscription : février 2010
Messages : 2 984
Détails du profil
Informations personnelles :
Nom : Benjamin Delespierre
Âge : 24
Localisation : France

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

Informations forums :
Inscription : février 2010
Messages : 2 984
Points : 5 011
Points : 5 011
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 :
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/
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom
Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même).

Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...".
Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug.

Les boutons et existent, servez-vous en
Benjamin Delespierre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/07/2011, 11h33   #16
Membre Expert
 
Avatar de ska_root
 
Homme
Développeur informatique
Inscription : août 2005
Messages : 1 179
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 42
Localisation : France

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

Informations forums :
Inscription : août 2005
Messages : 1 179
Points : 1 580
Points : 1 580
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é.
__________________
http://cdemarche.developpez.com/

Tu as la réponse à ta question ? N'oublies pas le petit en bas à gauche de ton message...
ska_root est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/07/2011, 14h54   #17
Membre actif
 
Inscription : janvier 2007
Messages : 915
Détails du profil
Informations forums :
Inscription : janvier 2007
Messages : 915
Points : 185
Points : 185
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 :
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 :
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...
jojo86 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/07/2011, 15h19   #18
Modérateur
 
Avatar de Benjamin Delespierre
 
Benjamin Delespierre
Développeur Web
Inscription : février 2010
Messages : 2 984
Détails du profil
Informations personnelles :
Nom : Benjamin Delespierre
Âge : 24
Localisation : France

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

Informations forums :
Inscription : février 2010
Messages : 2 984
Points : 5 011
Points : 5 011
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.
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom
Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même).

Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...".
Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug.

Les boutons et existent, servez-vous en
Benjamin Delespierre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/07/2011, 15h21   #19
Membre actif
 
Inscription : janvier 2007
Messages : 915
Détails du profil
Informations forums :
Inscription : janvier 2007
Messages : 915
Points : 185
Points : 185
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).
jojo86 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/07/2011, 15h42   #20
Modérateur
 
Avatar de Benjamin Delespierre
 
Benjamin Delespierre
Développeur Web
Inscription : février 2010
Messages : 2 984
Détails du profil
Informations personnelles :
Nom : Benjamin Delespierre
Âge : 24
Localisation : France

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

Informations forums :
Inscription : février 2010
Messages : 2 984
Points : 5 011
Points : 5 011
Ok. Mets une taille largeur / hauteur fixe au placeholder et fais:
Code :
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.
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom
Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même).

Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...".
Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug.

Les boutons et existent, servez-vous en
Benjamin Delespierre est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 03h28.


 
 
 
 
Partenaires

Hébergement Web