ho necessità di mettere delle immagini in una cartella e di mostrarne 20 in una pagina .... non ho la minima idea di come trovare tutti i file .jpeg .gif .jpg .png e mostrarli in una pagina come posso fare? ^-^
ho necessità di mettere delle immagini in una cartella e di mostrarne 20 in una pagina .... non ho la minima idea di come trovare tutti i file .jpeg .gif .jpg .png e mostrarli in una pagina come posso fare? ^-^
Fai una ricerca nel forum, troverai degli script che eseguono la lettura dei file di una cartella.
:bye:
ok ho trovato ed editato questo :
<?php
$path = "images/";
if ($handle = opendir($path)) {
$files = array();
while (false !== ($file = readdir($handle))) {
if ($file != '.' && $file != '..') {
$files .= $file;
echo '<img alt="" src="',$path , $file , '">',"\n <br />";
}
}
if ($files == null) {
echo "Directory vuota!!<br />\n";
}
}
?>
ma ho bisogno di mettere le immagini in file per 3 e un massimo di 18 foto .... dato che non è una query :P nn so come fare lol
per le anteprime dato che non so usare la libreria GD nn so come fare...
Mi sono messo a lavorare su uno script che farà proprio al caso tuo :coolsmiley:
Spero di finirlo presto e di pubblicarlo in un articolo :bye:
Stavo scrivendo quando ha risposto Gianni, cmq posto lo stesso, magari può servire:
ok ho trovato ed editato questo :
.....
ma ho bisogno di mettere le immagini in file per 3 e un massimo di 18 foto .... dato che non è una query :P nn so come fare lol
per le anteprime dato che non so usare la libreria GD nn so come fare...
Non so se ho capito esattamente il tuo problema, cmq facendo così, creo un array multidimensionale di 18 record totali e di 3 record per ogni 'indice' dell'array:
$path = "pics/";
$files = array();
$i=0;
$j=0;
if ($handle = opendir($path))
{
while (false !== ($file = readdir($handle)))
{
if ($file != '.' && $file != '..')
{
$files[$i][] = $file;
//echo '<img alt="" src="',$path , $file , '">',"\n <br />";
$j++;
if($j >= 18)
break;
if($j%3 == 0)
$i++;
}//fine if ($file != '.' && $file != '..')
}//fine while (false !== ($file = readdir($handle)))
if ($files == null) {
echo "Directory vuota!!<br />\n";
}
}//fine if ($handle = opendir($path))
echo "<pre>";
print_r($files);
echo "</pre>";
ciao
Lore
ci stai riuscendo gianni? mi serve :(
lore il tuo script funziona ma io devo mostrare le immagini non il loro nome e non sto riuscendo a modificarlo in modo da fargli fare questo
A causa dello scarso tempo a mia disposizione non sono riuscito a preparare un articolo ma lo script è pronto. Permette di visualizzare le anteprime delle immagini presenti in una cartella impostata da $path_immagini. Le anteprime vengono create "al-volo" nel caso non siano presenti nella cartella $path_anteprime. Serve quindi l'estensione gd. Il numero delle anteprime mostrate per pagina è impostato dalle variabili $num_righe e $num_colonne. La paginazione è automatica. Non vengono considerate le sottocartelle.
galleria.php
<?php
// Configurazione della galleria
// ---------------------------------
// percorso della cartella contenente le immagini ORIGINALI
$path_immagini = "immagini/";
// percorso della cartella che dovrà contenere le anteprime
$path_anteprime = "anteprime/";
// numero di righe e colonne della tabella che mostrerà le anteprime
$num_righe = 3;
$num_colonne = 4;
// larghezza ed altezza massima delle anteprime
$larghezza_ant = 150;
$altezza_ant = 150;
// ---------------------------------
// provo ad "aprire" la cartella delle immagini originali
$handle = @opendir($path_immagini);
// se c'è stato un errore...
if(!$handle)
die ("Errore nell'apertura della cartella delle immagini '$path_immagini'");
// inizializzo l'array che conterrà i nomi delle immagini
$immagini = array();
// memorizzo in $immagini tutti i nomi delle immagini (JPG) presenti nella cartella degli originali
while (false !== ($file = readdir($handle)))
{
if ($file != '.' && $file != '..' && strpos($file,'.jpg'))
{
if(strpos($file,'.jpg'))
$immagini[] = $file;
}
}
// metto in ordine alfabetico le immagini
sort($immagini);
// calcolo il numero dell'ultima pagina
$ultima_pagina = ceil(count($immagini) / ($num_righe * $num_colonne));
// decido che pagina mostrare
if(isset($_GET['pag']))
{
// se è nell'URL è presente un numero di pagina
if(is_numeric($_GET['pag']) && $_GET['pag'] > 0 && $_GET['pag'] <= $ultima_pagina)
{
// se il numero di pagina indicato è lecito
$pag_corrente = $_GET['pag'];
}
else
{
// nell'URL è stato messo un numero di pagina errato.
// l'utente sta "giocando" con il nostro script !!!
header('location: galleria.php?pag=1');
exit;
}
}
else
{
// se non è stato specificato nulla via URL mostro la prima pagina
$pag_corrente = 1;
}
// quale sarà la prima immagine da mostrare nella pagina corrente?
$immagine_iniziale = ($pag_corrente-1) * $num_righe * $num_colonne;
// Costruisco dei link per accedere alla pagina precedente e successiva (se esistono!)
$navigatore = '';
if($pag_corrente > 1)
$navigatore .= '<a href="galleria.php?pag='.($pag_corrente-1).'"><< Precedente</a> ';
if($pag_corrente < $ultima_pagina)
$navigatore .= '<a href="galleria.php?pag='.($pag_corrente+1).'">Successiva >></a>';
// adesso devo costruire la tabella che conterrà le anteprime
$tab_immagini = '';
// il primo cliclo FOR è per costruire le righe
for ($i = 0; $i < $num_righe ; $i++)
{
// se all'inizio di una riga mi accorgo che non ci sono più immagini da visualizzare
// allora interrompo le iterazioni
if(!isset($immagini[($i*$num_colonne) + $immagine_iniziale]))
break;
// apro la riga corrente
$tab_immagini .= '<tr>';
// il secondo ciclo FOR serve invece a costruire le singole celle apparteneti ad una riga
for ($j = 0; $j < $num_colonne; $j++)
{
// l'indice dell'immagine da mostrare nella cella corrente
$indice = ($i*$num_colonne) + $j + $immagine_iniziale;
// se esiste una immagine con questo indice (potrebbero essere finite!)
if(isset($immagini[$indice]))
{
// controllo che esista l'anteprima per l'immagine corrente
// in caso contrario la creo "al volo"
if(!file_exists($path_anteprime.$immagini[$indice]))
crea_anteprima($immagini[$indice],$larghezza_ant,$altezza_ant,$path_immagini,$path_anteprime);
// ricavo le dimensioni dell'anteprima corrente
list($width, $height) = getimagesize($path_anteprime.$immagini[$indice]);
// non mi resta che creare i tag per il link, l'immagine ed i nome dell'immagine
$cella = '<a href="'.$path_immagini.$immagini[$indice].'">';
$cella .= '<img src="'.$path_anteprime.$immagini[$indice].'" alt="'.$immagini[$indice].'" height="'.$height.'" width="'.$width.'">';
$cella .='<br><p align="center">' . $immagini[$indice] . '</p>';
$cella .='</a>';
}
else
{
// sono finite le immagini! Lascio la cella vuota
$cella = ' ';
}
// metto il contenuto della cella appena creata nella tabella
$tab_immagini .= '<td class="cella_immagine" align="center" valign="middle">'. $cella . '</td>';
}
// chiudo la riga corrente
$tab_immagini .= '</tr>';
}
// tutto il contenuto "dinamico" è stato preparato, devo solo caricare il template che si occuperà di mostrarlo
// per proteggermi dal caricamento del template esternamente allo script definisco una costante...
define('LOAD_TEMPLATE',1);
include('template.php');
// fine dello script
exit;
// funzione per la creazione delle anteprime
function crea_anteprima($nome_immagine,$larghezza_anteprima,$altezza_anteprima,$path_immagini,$path_anteprime)
{
// ricavo la dimensione dell'immagine originale
list($larghezza_orig, $altezza_orig) = getimagesize($path_immagini.$nome_immagine);
if ($larghezza_orig < $altezza_orig) {
$larghezza_anteprima = ($altezza_anteprima / $altezza_orig) * $larghezza_orig;
} else {
$altezza_anteprima = ($larghezza_anteprima / $larghezza_orig) * $altezza_orig;
}
// creo una nuova immagine, che conterrà l'anteprima
$image_p = imagecreatetruecolor($larghezza_anteprima, $altezza_anteprima);
// carico l'originale
$image = imagecreatefromjpeg($path_immagini.$nome_immagine);
// metto nella nuova immagine la "riduzione" dell'originale
imagecopyresampled($image_p, $image, 0, 0, 0, 0, $larghezza_anteprima, $altezza_anteprima, $larghezza_orig, $altezza_orig);
// salvo l'anteprima
imagejpeg($image_p, $path_anteprime.$nome_immagine);
}
?>
template.php
<?php
if(!defined('LOAD_TEMPLATE'))
exit('Accesso diretto non consentito!');
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Galleria immagini</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style type="text/css">
<!--
body {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 12px;
background-color: #CCCCCC;
}
#main_tab {
border: 2px solid #FFFFFF;
background-color: #036;
}
.cella_immagine {
background-color: #FFFFFF;
}
#header_tab {
background-color: #FFFFFF;
}
img {
border: none;
}
-->
</style>
</head>
<body>
<table border="0" align="center" cellpadding="5" cellspacing="0" id="main_tab">
<tr>
<td>
<table width="100%" border="0" cellspacing="5" cellpadding="5" id="header_tab">
<tr>
<td><div align="left">Pagina <?php echo $pag_corrente?>/<?php echo $ultima_pagina?> </div></td>
<td><div align="right"><?php echo $navigatore?></div></td>
</tr>
</table>
<table width="100%" border="0" cellspacing="5" cellpadding="5">
<?php echo $tab_immagini?>
</table></td>
</tr>
</table>
</body>
</html>
salva entrambi i file in una cartella e modifica il valore delle variabili presenti all'inizio del primo file.
:bye:
;D nn so che dire , GRAZIE
ps funziona egregiamente , solo che se ne và in timeout per creare le anteprime la prima volta, ma non c'è nessun problema [l'ho testato con 60 immagini 2000*1500 ] e funziona benissimo :D grazie
Ciao Gianni, intanto grazie a me funziona bene solo un piccolo particolare
se carico foto con l'estensione .jpg le carica
se le carico con l'estensione .JPG (maiuscola non le vede)
// memorizzo in $immagini tutti i nomi delle immagini (JPG) presenti nella cartella degli originali while (false !== ($file = readdir($handle))) { if ($file != '.' && $file != '..' && strpos($file,'.jpg')) { if(strpos($file,'.jpg')) $immagini[] = $file; }
POTRESTI aiutarmi visto che le reflex automaticamente danno l'estensione MAIUSCOLA
grazie di tutto