Vous n'êtes pas identifié.
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)
<?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
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
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
merci je vais essayer ça tout de suite
Hors ligne
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)
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
$image = $_GET['image']; echo '<img src = "' . $image . '">';
Hors ligne
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
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