[RESOLU] Titres des images d'une galerie

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [RESOLU] Titres des images d'une galerie

Re: Titres des images d'une galerie

par Bulot » 11 mars 2013, 16:27

C'est résolu en grande partie grâce à ton message Moogli.

Merci! merci! merci!

J'ai modifié ma façon d'extraire les informations du fichier texte
$img_nom[] = explode('|', $img_infos);
Ensuite j'ai repris les deux variable de type $_Get['variable'] déjà utilisée pour afficher les vignettes

Comme la galerie fait défiler une série d'images miniatures (vignettes) par série en fonction d'un maximum ($max_thumbs) et pour afficher la légende sous chaque première image j'ai utilisé ce code :
	$preums = ($slik / $max_thumbs);
	
if(is_int($preums)) {
	$description = $img_nom[$num][1];
	} else {
	// Description sous les images
	$description = $img_nom[$slik][1]; 
	}
Tout simplement...

Re: Titres des images d'une galerie

par moogli » 10 mars 2013, 01:01

Si si c'est réalisable, avec un fichier plat, structurel un minimum (voir XML) c'est tout a fait réalisable.

Dans ton cas tant que tu as le nom du fichier tu peux retrover le commentaire.

Lorsque eut l'affiche tu récupère les infos du fichier, fait le tri pour la récupérer.

Perso au première affichage je metterais tous cela dans un tableau en session.

Le tableau indexé par le nom de fichier.
Du coup c'est beaucoup plus simple a utiliser ($_SESSION['index du tableau']['nom image']) y a pas plus simple pour ce que tu veux faire.


Par contre effectivement c'est plus simple a ce un sgbd.
T'es pas obligé d'utiliser mysql, oracle ou autre du même calibre, une simple base sqlite peux suffire, natif en php généralement activé.

@+

Re: Titres des images d'une galerie

par Bulot » 09 mars 2013, 11:09

J'en conclue que rendre dynamique une galerie concernant l'affichage de légende sans base de données n'est pas réalisable...

Re: Titres des images d'une galerie

par Bulot » 07 mars 2013, 19:45

J'ai fait ceci
    if($slik == ""){
	     $slika = $slike[$num];
		 $img_nom = $plike[$num];
    } else {
	     $slika = $slike[$slik];
		 $img_nom = $plike[$plik];
    }
dans les url des vignettes j'ai ajouté plik=$key

Ne peut on pas réutiliser $num et $key

Si tu avais un exemple de réalisation je réadapterais car là je ne vois pas du tout ce que tu insinues par tes messages précédents surtout que le tableaux des noms d'images projetées en grand existe déja (foreach($ff as $key => $value))

Re: Titres des images d'une galerie

par xTG » 07 mars 2013, 11:03

Montres nous tes modifications.

Re: Titres des images d'une galerie

par Bulot » 07 mars 2013, 02:17

J'ai repris le principe de $slika et ai tenté de faire changer la valeur de la variable $img_nom comme ça mais ça ne fonctionne pas il continue a prendre la dernière valeur car non paramétré.

De plus, les noms d'images sont déjà classé dans un tableau : voir $value

Un petit détail supplémentaire j'suis gonflé là :|

Re: Titres des images d'une galerie

par xTG » 06 mars 2013, 21:24

Non une simple variable comme je te l'ai indiqué suffit.
Pourquoi vouloir prendre un bulldozer pour planter une plante ? :)

Re: Titres des images d'une galerie

par Bulot » 06 mars 2013, 18:54

La variable $img_nom est la première colonne du fichier texte

Faut il que j'utilise exif read data?

Re: Titres des images d'une galerie

par xTG » 06 mars 2013, 17:50

Il te faut en effet pouvoir renseigner $img_nom qui est l'index de ton array de légendes.
Le plus simple serait de rajouter une seconde variable sur le principe de $slika mais qui stocke uniquement le nom de l'image.

Re: Titres des images d'une galerie

par Bulot » 06 mars 2013, 16:49

En effet ça fonctionne pour les vignettes mais pas pour l'image principale projetée. Comment faire en sorte que cela s'affiche pour l'image sélectionnée parmi les vignettes?

Il faudrait faire le lien entre le nom des images. Peut être avec la fonction exif_read_data ??
Ensuite lier ces noms à ceux du fichier texte?
Ou alors utiliser la variable $slik qui assigne une valeur?

Re: Titres des images d'une galerie

par xTG » 06 mars 2013, 12:44

Je t'ai fourni la réponse, je ne voyais donc pas l'utilité de te répondre vu que nous ne sommes pas là pour faire le code à ta place.
Tu n'as plus qu'à adapter ma réponse avec tes propres variables.

Re: Titres des images d'une galerie

par Bulot » 06 mars 2013, 09:46

 <?php

error_reporting(E_ALL);
ini_set("display_errors", "1");
$open = @$_GET['content'];
$num = @$_GET['num'];
$slik = @$_GET['slika'];
$path = $_SERVER['DOCUMENT_ROOT'] . "site/onepage/";
$path2 = "http://" . $_SERVER['SERVER_NAME'] . "/site/onepage";
$thumbs_break = '<div id="thumbs_break"> </div>';
include_once($path . "scripts/onepage_custom.php");

$main_dir = opendir($path . "gallery");
while (false !== ($folders = readdir($main_dir))) {
	if($folders == "." || $folders == ".." ) {
			       continue;
			  } else {
			       $dirs[] = $folders; 
			  }        
    } 
sort($dirs);
if(count($dirs) != count($all_dirs) || $all_dirs[0] == "") {
	$chosen = $dirs;
} else {
	$chosen = $all_dirs;
}
if(empty($open) || array_search($open, $chosen) === FALSE) {
	$dir = $path . "gallery/" . $chosen[0];
	$open = $chosen[0];
} else {
    $dir =  $path . "gallery/" . $open;
}
// Affiche le nom des autres galleries à partir du fichier texte
foreach($chosen as $val) {
	if(strpos($dir, $val) === FALSE) {
	   $dir_nasl = file($path . "gallery/" . $val . "/title.txt");
	   $dirs_nasl = @$dirs_nasl . "<a href=\"javascript:void(0)\" onClick=\"loadurl('$path2/scripts/onepage.php?content=$val'); return true \" >$dir_nasl[0]</a>"; 
    }
}
$count_dirs = count($chosen);
if($count_dirs > 1){
    $other_dirs = '<div id="gall_other">Les autres galeries:' . $dirs_nasl . '</div>';
} else {
	$other_dirs = '<div id="gall_other"> </div>';
}

$openDir  = opendir($dir);
while (false !== ($fileNames = readdir($openDir)))
 {
	if(strpos($fileNames, "txt") !== FALSE && strpos($fileNames, "title") !== FALSE ) {
			$gall_nasl = file($dir . "/" . $fileNames);
			$gall_naslov = '<div id="gall_title">' . $gall_nasl[0] . '</div>';
	}  
	if($fileNames == "." || $fileNames == ".."  || strpos($fileNames, "txt") !== FALSE) {
			       continue;
			  } else {
			       $ff[] = $fileNames; 
			  }        
    }
$count_ff = count($ff);

if($num == "") {
    $num = 0; 
}
$n=$num+$max_thumbs;
$p=$num-$max_thumbs;

if($p < 0 ) {	
       $prev = '<div id="gall_prev" style="height:' . $thumbs_WH . 'px; background:transparent;">&nbsp;&nbsp;</div>';
} else {
	   $prev = '<div id="gall_prev" style="height:' . $thumbs_WH . 'px;">' . '<a style="height:' . $thumbs_WH . 'px;"' . "href=\"javascript:void(0)\" onClick=\"loadurl('$path2/scripts/onepage.php?content=$open&num=$p'); return true \" >&nbsp;&nbsp;</a>" . '</div>';
}

if($n > ($count_ff-1)) {	
        $next = '<div id="gall_next" style="height:' . $thumbs_WH . 'px; background:transparent;">&nbsp;&nbsp;</div>';
} else {
	    $next = '<div id="gall_next" style="height:' . $thumbs_WH . 'px;">' . '<a style="height:' . $thumbs_WH . 'px;"' . " href=\"javascript:void(0)\" onClick=\"loadurl('$path2/scripts/onepage.php?content=$open&num=$n'); return true \" >&nbsp;&nbsp;</a>" . '</div>';
}


foreach($ff as $key => $value) {
	
         $display =  $path2 . "/gallery/" . $open . "/" . $ff[$key]; 
		 $vals = $ff[$key]; 
		 $sizes = @getimagesize($display);
		 
         if($key == $n) { break; }
         if($key < $num) { continue; }

// resize images
	     if ($sizes[0] >= $sizes[1] && $sizes[0] > $thumbs_WH) {
             $resize = $sizes[0]/$thumbs_WH;
             
			 $width = round($sizes[0]/$resize);  
             $height = round($sizes[1]/$resize);  
             $margin = round(($thumbs_WH - $height)/2);
			 $img = '<div class="gall_thumb" style="height:' . $thumbs_WH . 'px; width:' . $thumbs_WH . 'px;">' . '<a style="width:' . $thumbs_WH . 'px; height:' . $thumbs_WH . "px; display:block;\" href=\"javascript:void(0)\" onclick=\"loadurl('$path2/scripts/onepage.php?content=$open&num=$num&slika=$key;num=$num&slika=$key'); return true \" >" . '<img style="margin-top:' . $margin . 'px;" src="' . $display . '" width="' . $width . '" height="' . $height . '" border="0" alt="" title="" /></a></div>' ;
			 
			 $resize2 = $sizes[0]/$image_WH;
			 $width2 = round($sizes[0]/$resize2); 
             $height2 = round($sizes[1]/$resize2); 
			 $img2 = '<img src="' . $display . '" width="' . $width2 . '" height="' . $height2 . '" border="0" alt="" title="" alt="" />';
			 $slike[$key] = $img2;
			 
         } elseif($sizes[0] < $sizes[1] && $sizes[1] > $thumbs_WH) {
             $resize = $sizes[1]/$thumbs_WH; 			
			 $height = round($sizes[1]/$resize); 
             $width = round($sizes[0]/$resize);  
             $margin = round(($thumbs_WH - $height)/2);
			 $img = '<div class="gall_thumb" style="height:' . $thumbs_WH . 'px; width:' . $thumbs_WH . 'px;">' . '<a style="width:' . $thumbs_WH . 'px; height:' . $thumbs_WH . "px; display:block;\" href=\"javascript:void(0)\" onClick=\"loadurl('$path2/scripts/onepage.php?content=$open&num=$num&slika=$key'); return true \" >" . '<img style="margin-top:' . $margin . 'px;" src="' . $display . '" width="' . $width . '" height="' . $height . '" border="0" alt="" title="" /></a></div>';
			 
			 $resize2 = $sizes[1]/$image_WH;
			 $width2 = round($sizes[0]/$resize2); 
             $height2 = round($sizes[1]/$resize2); 
			 $img2 = '<img src="' . $display . '" width="' . $width2 . '" height="' . $height2 . '" border="0" alt="" title="" alt="" />';
			 $slike[$key] = $img2;
			 
         } else {
		     $width = $sizes[0];
			 $height = $sizes[1]; 
			 $margin = round(($thumbs_WH - $height)/2);
			 $img = '<div class="gall_thumb" style="height:' . $thumbs_WH . 'px; width:' . $thumbs_WH . 'px;">' . '<a style="width:' . $thumbs_WH . 'px; height:' . $thumbs_WH . "px; display:block;\" href=\"javascript:void(0)\" onClick=\"loadurl('$path2/scripts/onepage.php?content=$open&num=$num&slika=$key'); return true \" >" . '<img style="margin-top:' . $margin . 'px;" src="' . $display . '" width="' . $width . '" height="' . $height . '" border="0" alt="" title="" /></a></div>';
			 
			 $width2 = $sizes[0];
			 $height2 = $sizes[1]; 
			 $img2 = '<img src="' . $display . '" width="' . $width2 . '" height="' . $height2 . '" border="0" alt="" title="" />';
			 $slike[$key] = $img2;
		} 
		$thumbs = @$thumbs . $img;
		
    }
    
    if($slik == ""){
	     $slika = $slike[$num];
    } else {
	     $slika = $slike[$slik];
    }
//-------------------------------------------
// Les légendes du fichier texte

$infos = $path ."/infos.txt";

if (file_exists($infos)) {
	$fichier_txt = fopen($infos, "r");
	while (!feof($fichier_txt) ) 
	{	
		$ligne_txt = fgets($fichier_txt);
		$parts = explode('/n', $ligne_txt);
		foreach($parts as $img_infos)
		{
			list($img_nom, $img_legende) = explode('|', $img_infos);
			echo $num;
			$img_legendes[$img_nom] = $img_legende;
		}
	}}
	fclose($fichier_txt);
//-------------------------------------------

echo  '<div id="onepage">' . $gall_naslov . $other_dirs . '<div id="gall_thumbs">' . $prev . $thumbs . $next . $thumbs_break . '</div>' . '<div id="gall_image" style="height:' . ($image_WH+20) . 'px">' . $slika . '<br /><p>'.$img_legende.'</p></div></div>';

?>

Re: Titres des images d'une galerie

par Bulot » 02 mars 2013, 13:30

Merci pour l'aide apportée

Voici comment sont classées et projetées les images :
         $display =  $path2 . "/gallery/" . $open . "/" . $ff[$key]; $vals = $ff[$key]; 
		 $sizes = @getimagesize($display);
		 
         if($key == $n) { break; }
         if($key < $num) { continue; }
		 
// resize images
	     if ($sizes[0] >= $sizes[1] && $sizes[0] > $thumbs_WH) {
             $resize = $sizes[0]/$thumbs_WH;
             
			 $width = round($sizes[0]/$resize);  
             $height = round($sizes[1]/$resize);  
             $margin = round(($thumbs_WH - $height)/2);
			 $img = '<div class="gall_thumb" style="height:' . $thumbs_WH . 'px; width:' . $thumbs_WH . 'px;">' . '<a style="width:' . $thumbs_WH . 'px; height:' . $thumbs_WH . "px; display:block;\" href=\"javascript:void(0)\" onClick=\"loadurl('$path2/scripts/onepage.php?content=$open&num=$num&slika=$key'); return true \" >" . '<img style="margin-top:' . $margin . 'px;" src="' . $display . '" width="' . $width . '" height="' . $height . '" border="0" alt="" title="" /></a></div>' ;
			 
			 $resize2 = $sizes[0]/$image_WH;
			 $width2 = round($sizes[0]/$resize2); 
             $height2 = round($sizes[1]/$resize2); 
			 $img2 = '<img src="' . $display . '" width="' . $width2 . '" height="' . $height2 . '" border="0" alt="" title="" alt="" />';
			 $slike[$key] = $img2;
			 
         } elseif($sizes[0] < $sizes[1] && $sizes[1] > $thumbs_WH) {
             $resize = $sizes[1]/$thumbs_WH; 			
			 $height = round($sizes[1]/$resize); 
             $width = round($sizes[0]/$resize);  
             $margin = round(($thumbs_WH - $height)/2);
			 $img = '<div class="gall_thumb" style="height:' . $thumbs_WH . 'px; width:' . $thumbs_WH . 'px;">' . '<a style="width:' . $thumbs_WH . 'px; height:' . $thumbs_WH . "px; display:block;\" href=\"javascript:void(0)\" onClick=\"loadurl('$path2/scripts/onepage.php?content=$open&num=$num&slika=$key'); return true \" >" . '<img style="margin-top:' . $margin . 'px;" src="' . $display . '" width="' . $width . '" height="' . $height . '" border="0" alt="" title="" /></a></div>';
			 
			 $resize2 = $sizes[1]/$image_WH;
			 $width2 = round($sizes[0]/$resize2); 
             $height2 = round($sizes[1]/$resize2); 
			 $img2 = '<img src="' . $display . '" width="' . $width2 . '" height="' . $height2 . '" border="0" alt="" title="" alt="" />';
			 $slike[$key] = $img2;
			 
         } else {
		     $width = $sizes[0];
			 $height = $sizes[1]; 
			 $margin = round(($thumbs_WH - $height)/2);
			 $img = '<div class="gall_thumb" style="height:' . $thumbs_WH . 'px; width:' . $thumbs_WH . 'px;">' . '<a style="width:' . $thumbs_WH . 'px; height:' . $thumbs_WH . "px; display:block;\" href=\"javascript:void(0)\" onClick=\"loadurl('$path2/scripts/onepage.php?content=$open&num=$num&slika=$key'); return true \" >" . '<img style="margin-top:' . $margin . 'px;" src="' . $display . '" width="' . $width . '" height="' . $height . '" border="0" alt="" title="" /></a></div>';
			 
			 $width2 = $sizes[0];
			 $height2 = $sizes[1]; 
			 $img2 = '<img src="' . $display . '" width="' . $width2 . '" height="' . $height2 . '" border="0" alt="" title="" />';
			 $slike[$key] = $img2;
		} 
		$thumbs = @$thumbs . $img;
		
    }

Re: Titres des images d'une galerie

par xTG » 02 mars 2013, 11:32

Sous condition que ton code d'extraction du fichier texte est correct :
foreach($img_legendes as $fichier => $legende){
  if( file_exists($fichier) ){
    echo "<img src=\"$fichier\" alt=\"$legende\" /><br />$legende<br />";
  }else{
    echo "$fichier n'existe pas.<br />"
  }
}

Re: Titres des images d'une galerie

par Bulot » 02 mars 2013, 00:46

Mon fichier texte ressemble à ça :
1.jpg|Un lion
2.jpg|Un dauphin
3.jpg|Un poney
Ce fichier texte est placé dans le dossier "animaux" du dossier "galerie"

La projection d'image est entièrement automatisée via php/ajax

Je souhaite que le fichier index placé à la racine attribue la légende correspondant à l'image (comme dans le fichier texte) de façon autonome via $img_legendes['$img_nom'];

Comment coder $img_nom afin qu'il devienne 1.jpg quand j'affiche l'image du lion #-o

Je ne sais pas comment poser autrement la question