Phpsources Forums

Vous n'êtes pas identifié.

#1 16-05-2008 14:58:17

doolabb
Membre
Date d'inscription: 11-05-2008
Messages: 15

galerie photo avec pagination et miniature comme lien

bonjour

j'ai fait un script pour afficher les photos d'un répertoire (actuel) sous forme de miniature avec pagination
jusque là ça marche
mais je coince dans : comment rendre les miniatures sous forme de liens vers la photo originale
voici le script :

Pour l'essayer
mettez une 100 de photos dans un repertoire pour faire réaliste et ajoutez ce fichier (index.php)

Code:

<?php
if(isset($_GET['page']))
{
$page = $_GET['page']; // On récupère le numéro de la page indiqué dans l'adresse (livreor.php?page=4)
}
else
{
$page = 1; // On se met sur la page 1 (par défaut)// La variable n'existe pas, c'est la première fois qu'on charge la page
}


$dir = getcwd(); //current directory
$tab = scandir($dir);

// allowed files extensions :BMP is not included because BMP is not recommended for the web
$extensions_valides = array('jpg', 'jpeg', 'gif', 'png' , 'JPG', 'JPEG', 'GIF', 'PNG');

$nbrelem = 0;
$img = array();

//vérify if element is a file AND has allowed extension
foreach($tab as $element)
{
$a = $dir . "/" . $element;
$extension = substr(strrchr($element, '.'), 1);

if(is_file($a) AND in_array($extension, $extensions_valides))
{
$nbrelem++; //in the same time we count nbr of accepted elements to avoid to use the function count() later
array_push($img, $a); //if file is accepted we add it to the list
}
}
if(count($img) < 1)
{
echo '<br />';
echo '<b>No result found</b>';
exit;
}

//calculate nbr of pages : here we decided to put 4 per 8 = 32 for each page
$nbrpages = ceil($nbrelem / 32);
$x = ($page * 32) - 31;


for($i = 1; $i < 9; $i++)
{
echo '<table border = "1">';
$j = 0;
echo '<tr>';
for($j = 1; $j < 5; $j++)
{
echo '<td width = "155" height = "155"><img src = "' . $img[$x] . '" width = "150" height = "150" /></td>';
$x++;
}
echo '</tr>';
echo '</table>';
}

echo '<br />';

echo '<table width = "620" align = "center">';
echo '<tr>';
echo '<td>';
for ($a = 1 ; $a <= $nbrpages ; $a++)
{
echo '<a href="index.php?page=' . $a . '">' . $a . '</a> ' . " | ";
}
echo '</td>';
echo '</tr>';
echo '</table>';
?>

j'ai pensé à la solution suivante
transformer cette ligne 52 en ce qui suit

echo '<td width = "155" height = "155"><a href = "image.php?' . $img[$x] . '"><img src = "' . $img[$x] . '" width = "150" height = "150" /></a>' . '</td>';

et ceci afin d'envoyer une variable "nom image.ext" vers la page "image.php"
qui contient le code pour affciher une image

<?php
$image = $_GET['$img'];
$ext = substr(strrchr($image, '.'), 1);

switch ($ext) {
case "jpg": header("Content-type: image/jpg"); imagecreatefromjpeg($image); imagejpeg($image); break;
case "jpeg": header("Content-type: image/jpeg"); imagecreatefromjpeg($image); imagejpeg($image); break;
case "png": header("Content-type: image/png"); imagecreatefrompng($image); imagepng($image); break;
case "gif": header("Content-type: image/gif"); imagecreatefromgif($image); imagegif($image); break;
case "JPG": header("Content-type: image/jpg"); imagecreatefromjpeg($image); imagejpeg($image); break;
case "JPEG": header("Content-type: image/jpeg"); imagecreatefromjpeg($image); imagejpeg($image); break;
case "PNG": header("Content-type: image/png"); imagecreatefrompng($image); imagepng($image); break;
case "GIF": header("Content-type: image/gif"); imagecreatefromgif($image); imagegif($image); break;
default: break;
}
imagedestroy($image);

?>

et j'obtient l'erreur suivante
Warning: imagedestroy(): supplied argument is not a valid Image resource in C:\wamp\www\cfs\resources\photos\animals\birds\image.php on line 16

la solution à ce problème précis SVP
sinon un script TOUT prêt qui marche et qui est dans le même esprit et sans la POO si c'est possible

sinon j'ai trouvé un script semblabe avec la POO qui date de 2006 mais qui affiche les noms des images au lieu des miniatures des images elle même
mais commencons d'abord par le mien

merci

Hors ligne

 

#2 16-05-2008 17:31:10

KOogar
Administrateur
Lieu: PHP Rapide !!
Date d'inscription: 21-12-2007
Messages: 513

Re: galerie photo avec pagination et miniature comme lien

Bonjour,

oui, c'est une solution : image.php?image=' . $img[$x] . '

echo '<td width = "155" height = "155"><a href = "image.php?image=' . $img[$x] . '"><img src = "' . $img[$x] . '" width = "150" height = "150" /></a>' . '</td>';

********

et remplace pour l'erreur ligne 16
$image = $_GET['$img'];
par
$image = $_GET['image'];


****************

je ne connais pas la nature de tes fichiers, mais si tu as des accents ou des espaces.. dans le nom de tes fichiers, je te conseil l'utilisation des fonctions urlencode et urldecode

En pratique cela s'emploie comme ceci :

<a href = "image.php?image='.urlencode($img[$x]).'">

et

$image = $_GET['image'];
$image = urldecode($image);

Hors ligne

 

#3 16-05-2008 19:26:16

rouahali
Membre
Date d'inscription: 15-05-2008
Messages: 25

Re: galerie photo avec pagination et miniature comme lien

bonjour :

<?php
$repertoire = opendir("./nom_dossier");
while ($entree = readdir($repertoire)) {
    if ($entree != "." && $entree != "..")
     $tFichiers[] = filemtime("./nom_dossier./".$entree)."+".$entree;
  }
closedir($repertoire);
  rsort($tFichiers);
  for ($cpt = 0; $cpt < sizeof($tFichiers); $cpt++) {
    $tVals = explode("+", $tFichiers[$cpt]);
$t=$tVals[1];
echo "<img src='galrie/$t' height='50' width='50' >"; }?>

Dernière modification par rouahali (04-06-2008 11:54:56)

Hors ligne

 

#4 18-05-2008 13:49:50

doolabb
Membre
Date d'inscription: 11-05-2008
Messages: 15

Re: galerie photo avec pagination et miniature comme lien

merci je vais essayer ça tout de suite

Hors ligne

 

#5 18-05-2008 22:50:28

doolabb
Membre
Date d'inscription: 11-05-2008
Messages: 15

Re: galerie photo avec pagination et miniature comme lien

Merci
la réponse était comme a dit Koogar
il faut néamoins faire des changements dans "images.php"
il faut modifier les différentes lignes de case

exemple (après modif)

Code:

case "jpg": header("Content-type: image/jpeg"); $img2 = imagecreatefromjpeg($image); imagejpeg($img2); break;

il y avait aussi une erreur dans "imgae/jpg" qui devient  "image/jpeg"

maintenant vous allez rire

ces 13 lignes peuvent devenir 2 uniquement

Code:

$image = $_GET['image'];
echo '<img src = "' . $image . '">';

Hors ligne

 

#6 25-05-2008 18:22:56

doolabb
Membre
Date d'inscription: 11-05-2008
Messages: 15

Re: galerie photo avec pagination et miniature comme lien

dernière modif
au cas où quelqu'un serait intéressé par ce script
il faut aussi virer le chemin de

$a = $dir . "/" . $element; qui représenté par $dir

et garder seulement le nom du fichier $element

Hors ligne

 

#7 03-06-2008 10:54:10

park51
Membre
Date d'inscription: 03-06-2008
Messages: 26

Re: galerie photo avec pagination et miniature comme lien

rouahali je te conseille pour ta fonction de te référer a la fonction glob qui me semblerai plus efficace si tu ne sondde pas les sous repertoires

Hors ligne

 

Pied de page des forums

Propulsé par
PunBB