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 :

Récupérer une image en variable de session


Sujet :

Langage PHP

  1. #1
    Membre éprouvé
    Avatar de Rony Rauzduel
    Homme Profil pro
    En formation Architecte logiciel
    Inscrit en
    Décembre 2008
    Messages
    630
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : En formation Architecte logiciel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2008
    Messages : 630
    Points : 1 029
    Points
    1 029
    Par défaut Récupérer une image en variable de session
    Bonjour à toutes et à tous,

    Objectif : Récupérer en tant que variable de session une image présente sur mon serveur.
    Je souhaite afficher l'image récupérée sur le serveur suite à un upload que j'ai effectué.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    <?php
    	//session_start(); 
    	/** script traitant la récupération et l'affichage de la vignette. Nous affichons les vignettes dans la div ayant l'id ajoutPhotos
    		Rappel : Nous sommes dans la zone du producteur ayant uploadé la vignette.
    	*/
     
    	//print_r($_SESSION['picture'][$_SESSION['id']]);
    	$dossier='vignettes/';
    	print '<img src="'.$dossier.$_SESSION['picture'][$_SESSION['id']].'">';	 
    ?>
    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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
     
    <?php
    	//session_start(); //A session had already been started - ignoring session_start() in ..../zone_producteur.php
    	/** script permettant l'insertion dans la zone producteur des vignettes uploadées sur le serveur de base de données.
    		Objectif : Suite à l'insertion en base des vignettes uploadées, le producteur doit voir s'afficher la vignette
    					dans son espace. Les vignettes sont présentes physiquement dans un répertoire vignettes sur le serveur.
    					Il faut donc parcourir ce répertoire pour afficher la vignette en fonction du producteur, en effet chaque
    					nom de vignette est précédé d'un entier représentant l'id du producteur (e.g : 1_img5.jpg qui représente
    					une vignette uploadée par le producteur ayant l'id 1 dans la table des producteurs.)
    	
    	 */	
    	// création d'une structure de données vide pour stocker les vignettes
    	$container = array(); 
    	$dossier = "vignettes/"; // le répertoire contenant les vignettes uploadées
    	$dir = opendir($dossier); // on ouvre le répertoire contenant les vignettes
    	// TRAVERSER le répertoire en lecture
    	/* Explication du test conditionnel de la boucle while()
    		1 - Chaque vignette lue est placée dans une variable $vignettes afin qu'elle ne soit pas perdue
    			Rappel : un résultat qui n'est pas mis dans une variable est perdue !
    		2 - On compare ce qui est extrait de la lecture avec la valeur false (ce qui est pertinent !)
    		3 - On utilise l'opérateur de comparaison !== (différent)
    		On test que le contenu extrait est différent de false donc vaut true ! 
    	 */
     
    	while(false !== ($vignettes = readdir($dir))) {
    		// si le fichier n'est pas le répertoire courant et le répertoire parent 
    		if($vignettes != '.' && $vignettes != '..') { 
    			// alors je remplis le tableau avec les vignettes présentes dans le répertoire 
    			$container[] = $vignettes;
    		}
    	} // fin while()
    	closedir($dir); // on ferme le répertoire	 
    	sort($container); // on trie le tableau ... mais ce n'est peut-être pas utile !
    	// on crée une variable de session pour pouvoir récupérer toutes les vignettes sans distinction
    	$_SESSION['picture'] = $container;
     
    	/* Explication du principe de récupération des vignettes
    		Si nous avons récupéré la variable de session $_SESSION['id'] (e.g ?id=2)
    		nous parcourons le tableau pour trouver toutes les vignettes ayant un nom préfixé par l'entier 
    		représentant l'id du producteur.		 
    	*/ 
     
    	// si la variable $_SESSION est récupérée 
    	if(isset($_SESSION['id'])) {
    		//$count = sizeof($container); // récupérer le nombre d'élément du tableau
    		$id = intval($_SESSION['id']); // on veut la valeur numérique entière
    		// PARCOURIR LE TABLEAU
    		// Astuce : La boucle foreach est recommandée pour parcourir un tableau en assignant chaque paire clé:valeur
    		// La clé correspond à l'identifiant de la vignette dans le tableau et la valeur au nom de la vignette		
    		foreach($container as $cle=>$valeur) {			
    		// on récupère le 1er caractère du nom de la vignette et on le compare à l'identifiant de session
    			$prCarVignette = substr($container[$cle],0,1);
    			if($prCarVignette == $id) {
    			// on crée une variable de session pour pouvoir récupérer les vignettes correspondant aux vignettes du producteur
    			// on se base sur l'identifiant de session qui correspond au premier caractère du nom du fichier 
    			$_SESSION['picture'][$_SESSION['id']] = $prCarVignette;
    			//echo "<a href=\"gallery-image.php?img=$cle\">$valeur</a></br>";
    			include 'ajout_publierPhotos.php';
    			}			
    		} // fin foreach()
    	} // fin if()
    	/*
    	// pour le debogage
    	echo '<pre>';
    	print_r($_SESSION['picture'][$_SESSION['id']]);
    	echo '</pre>';
    	*/
     
    ?>
    Merci d'avance,
    Transact.

  2. #2
    Membre éprouvé
    Avatar de Rony Rauzduel
    Homme Profil pro
    En formation Architecte logiciel
    Inscrit en
    Décembre 2008
    Messages
    630
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : En formation Architecte logiciel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2008
    Messages : 630
    Points : 1 029
    Points
    1 029
    Par défaut
    J'ai rajouté la ligne suivante dans mon script
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    header ("Content-type: image/jpeg");
    J'ai le message suivant :
    L'image "...." ne peut être affichée car elles contient des erreurs.

  3. #3
    Membre éprouvé
    Avatar de Rony Rauzduel
    Homme Profil pro
    En formation Architecte logiciel
    Inscrit en
    Décembre 2008
    Messages
    630
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : En formation Architecte logiciel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2008
    Messages : 630
    Points : 1 029
    Points
    1 029
    Par défaut
    Citation Envoyé par transact Voir le message
    J'ai rajouté la ligne suivante dans mon script
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    header ("Content-type: image/jpeg");
    J'ai le message suivant :
    L'image "...." ne peut être affichée car elles contient des erreurs.
    La bibliothèque GD est bien activée sur le serveur.

  4. #4
    Membre éprouvé
    Avatar de Rony Rauzduel
    Homme Profil pro
    En formation Architecte logiciel
    Inscrit en
    Décembre 2008
    Messages
    630
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : En formation Architecte logiciel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2008
    Messages : 630
    Points : 1 029
    Points
    1 029
    Par défaut
    En regardant bien mon code, il faudrait concevoir une expression régulière :
    Le premier caractère serait le résultat de la variable $premierChar suivi d'un _ de caractères alphanumériques et de .jpg, png

  5. #5
    Membre éprouvé
    Avatar de Rony Rauzduel
    Homme Profil pro
    En formation Architecte logiciel
    Inscrit en
    Décembre 2008
    Messages
    630
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : En formation Architecte logiciel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2008
    Messages : 630
    Points : 1 029
    Points
    1 029
    Par défaut
    [Résolu]
    Il fallait modifier le code de récupération des vignettes de la sorte :

    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
     
    /* Explication du principe de récupération des vignettes
    		Si nous avons récupéré la variable de session $_SESSION['id'] (e.g ?id=2)
    		nous parcourons le tableau pour trouver toutes les vignettes ayant un nom préfixé par l'entier 
    		représentant l'id du producteur.		 
    	*/ 
    	// si la variable $_SESSION est récupérée 
    	if(isset($_SESSION['id']) && isset($_FILES)) {
    		//$count = sizeof($container); // récupérer le nombre d'élément du tableau
    		$id = intval($_SESSION['id']); // on veut la valeur numérique entière
    		// PARCOURIR LE TABLEAU
    		// Astuce : La boucle foreach est recommandée pour parcourir un tableau en assignant chaque paire clé:valeur
    		// La clé correspond à l'identifiant de la vignette dans le tableau et la valeur au nom de la vignette		
    		foreach($container as $cle=>$valeur) {			
    		// on récupère le 1er caractère du nom de la vignette et on le compare à l'identifiant de session
    			$premierChar = substr($container[$cle],0,1);
    			// si le premier caractère correspond à l'identifiant de session alors			
    			if($premierChar == $id) {
    			// on met les valeurs (nom des vignettes avec extension) dans la variable $_SESSION['picture'] 						
    			$_SESSION['picture'] = $valeur;
    			// on affiche les vignettes			
    			print '<img src="'.$dossier.$_SESSION['picture'].'">';							
    			}		
    		} // fin foreach()
    	} // fin if()

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Mpeg4] récupérer une image d'un flux MPEG4.
    Par Drizztrobber dans le forum Multimédia
    Réponses: 10
    Dernier message: 19/03/2007, 10h01
  2. Récupérer une image JPEG à partir d'une vidéo
    Par kurul1 dans le forum C++Builder
    Réponses: 8
    Dernier message: 09/08/2006, 10h51
  3. Comment récupérer une image du net ?
    Par Cracking_Cow dans le forum Réseau/Web
    Réponses: 5
    Dernier message: 01/12/2005, 21h53
  4. récupérer une image du presse papier
    Par amelhog dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 09/08/2005, 10h18
  5. [Swing] récupérer une image d'un composant
    Par klemouf dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 16/09/2004, 10h24

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