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)
<?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
Code : Tout sélectionner
Warning: imagedestroy(): supplied argument is not a valid Image resource in C:\wamp\www\cfs\resources\photos\animals\birds\image.php on line 16sinon 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