visualizzazione dinamica di immagini

salve ragazzi...

ho un problemino con questa funzione...

errori di codice non ce ne sono...eppure non fa vedere le immagini.

In pratica, una volta letta la cartella, non riesco a memorizzare i nomi dei file. e non capisco il perchè!

Suggerimenti?

<?php
   $dir = @opendir('foto/');
   $search = readdir($dir);
     array($search);
   $immagine = array($search);
   $limite_righe = 4;
   $limite_celle = 4;
      echo '<table>';
         for ($righe = 1; $righe <= $limite_righe; $righe++)
            {
               echo '<tr>';
                for ($celle = 1; $celle <= $limite_celle; $celle++)
               {
                  echo '<td>';
                  echo "<img src='foto/$immagine' height='70px' width='110px'/>";
                  echo '</td>';
                  }
               echo '</tr>';
               }
         echo '</table>';
   ?>
inviato 9 anni fa
micdech
X 0 X

hai provato a vedere l'HTML generato dal tuo script? Cosa viene scritto nel campo src del tag img?

risposto 9 anni fa
Gianni Tomasicchio
X 0 X

<table>

<tr>

<td>

<img src='foto/Array' height='70px' width='110px'/>

</td><td>

<img src='foto/Array' height='70px' width='110px'/>

</td><td>

<img src='foto/Array' height='70px' width='110px'/>

</td><td>

<img src='foto/Array' height='70px' width='110px'/>

etc. etc.

è inutile che io continui a postare il codice html...tanto è subito chiaro dov'è l'errore...al posto di scrivere il nome della foto...scrive array!

Gianni, tu che ormai sei diventato il mio guru...che ti pare del codice?

ho letto molti esempi postati qui... e chiaramente è ancora molto primitivo per essere un buon codice da inserire su un sito.

Mi interessa anche molto l'aspetto della sicurezza...che ne dite?

Grazie ancora e a presto!

risposto 9 anni fa
micdech
X 0 X

ragazzi...ho aggiunto questa piccola parte di codice...che mi servirà poi per fare il ciclo FOR per creare dinamicamente le pagine per visualizzare le successive 16 foto.

Ebbene questo codice $numimg = count($immagine);    echo "$numimg";

riporta come risultato di count 1!

sono io che ho sbagliato...o $immagine da come risultato solo un'immagine?

risposto 9 anni fa
micdech
X 0 X

$immagine + un array..

quindi non

echo "<img src='foto/$immagine' etc etc

ma echo "<img src='foto/{$immagine[$righe]}' etc etc

risposto 9 anni fa
}gu|do[z]{®©
X 0 X

questo non è tanto vero...in quanto in un ciclo IF l'echo che ho scritto funziona come dovrebbe...

e poi il [$righe]?

Non ho capito bene a che ti riferisci....

Saluti

risposto 9 anni fa
micdech
X 0 X

questo non è tanto vero...in quanto in un ciclo IF l'echo che ho scritto funziona come dovrebbe...

e poi il [$righe]?

Non ho capito bene a che ti riferisci....

Saluti

Perdonate...intendevo nel ciclo While

Attendo risposte...a presto!

risposto 9 anni fa
micdech
X 0 X

questo non è tanto vero...in quanto in un ciclo IF l'echo che ho scritto funziona come dovrebbe...

e poi il [$righe]?

Non ho capito bene a che ti riferisci....

Saluti

Perdonate...intendevo nel ciclo While

Attendo risposte...a presto!

Ancora...Ho pensato che forse ci vuole il ciclo foreach

Nel senso: (e scrivo letteralmente cosa penso)

 Per ogni array di immagine...

echo il tag <img>

Più o meno...

che ne pensate?

Gianni io continuo a scrivere nuovi post...perchè non posso modificare i precedenti!

come mai?

mettere un limite temporale per la modifica non è deleterio, come in questo caso? non appesantisce il db senza alcuna necessità?

un saluto!  ;D

risposto 9 anni fa
micdech
X 0 X
e poi il [$righe]?

 :o

hai una vaga idea di cme funziona un array?  :o

risposto 9 anni fa
}gu|do[z]{®©
X 0 X

gianni...invoco a gran voce il tuo aiuto!

idee da suggerirmi?

risposto 9 anni fa
micdech
X 0 X

vabbè.. se vuoi solo l'aiuto di gianni allor anon ti posto la soluzione corretta.... :P

....vabbè dai, per stavolta so' buono.. :D

prima non avevo visto come ti procuravi l'array.. e sbagliavi, perchè readdir legge un elemento per volta, non tutti assieme restituendo un array.. per cui io farei così:

<?php
   $directory = 'foto'; 
   $dir = @opendir($directory) or die("Impossibile leggere $directory");

   $i = 0;
   echo '<table><tr>';
   while($img = readdir($dir))
   {
      if(($img == '.') ||($img == '..')) continue; 
      echo "<td> <img src='$directory/$img' height='70px' width='110px'/> </td>";
      if(++$i%4== 0)echo '</tr><tr>';
   }

   echo '</tr></table>';

?>

Che ti incolonna le immagini su 4 colonne... solo che non ti limita a 4 righe.. anche perchè per limitarti a 4 righe e mostrare tutte le immagini immagino vorrai usare una sorta di paginazione... enon è così immediata da realizzare.

Se vuoi realizzare una sorta di paginazione forse ti conviene leggere tutta la dir in una array di sessione (un ciclo while come questo, ma che invece di stampare inserisca gli elementi in un array di sessione), e poi giocare con gli indici dell'array in base ad una variabile tipo $_GET['pag']

Certo che se non dici cosa vuoi fare esattamente, e sopratutto s enon studi un po' meglio le funzioni ch usi e quelle che potrebbero servirti, è difficile aiutarti

 :bye:

risposto 9 anni fa
}gu|do[z]{®©
X 0 X

allora, intanto ti ringrazio per la risposta.

Non è come voglio io...ma almeno il risultato va.

Il mio codice cmq va. il problema è che il risultato di $search, non è trasformato in array.

Anche se il risultato di $search, fosse solo il primo elemento, almeno la prima foto dovrebbe apparire: e invece non va! al posto del nome della foto esce scritto "Array".

Prova a vedere il risultato del mio codice e vedi che a schermo la pagina risulta come la voglio.

Resta da risolvere solo il problema del nome della foto.

Grazie e a presto!

Ho chiesto l'aiuto di Gianni perchè il penultimo tuo post non era una risposta al mio problema...

nell'ultimo tuo post invece ti sei dimostrato più gentile, ed infatti ti ho ringraziato...

A presto... ;D

risposto 9 anni fa
micdech
X 0 X
e invece non va! al posto del nome della foto esce scritto "Array".

perchè è un array..

il tuo codice non va perchè non ha nessun ciclo che scorre la directory..

dimmi cosa vuoi fare esattamente e ti dico come fare....

risposto 9 anni fa
}gu|do[z]{®©
X 0 X

ok...

sono d'accordo sul ciclo...infatti un paio di post fa ho proposto un "foreach".

cmq...

Per quanto riguarda poi l'esempio...lo potete vedere a queste due pagine:

http://micdech.altervista.org/cdc/foto.php

http://micdech.altervista.org/cdc/foto1.php

per vedere quale è il layout...La prima pagina

e vedere il risultato del mio codice...

A presto!

risposto 9 anni fa
micdech
X 0 X

niente...ragà...

devo proprio rinunciare?

neanche più guidoz mi da una mano?

Grazie ancora e a presto! ;)

risposto 9 anni fa
micdech
X 0 X

Ho riadattato il tuo codice, tieni presente però che così mostri al max 16 immagini (4 righe x 4 colonne):

<?php
$search = array();
$dir = @opendir('foto/');
$i=0;
while (false !== ($search[$i] = readdir($dir))) {
      $i++;
}
$limite_righe = 4;
$limite_celle = 4;
$i=0;
$limite_immagini = count($search);
echo '<table>';
for ($righe = 1; $righe <= $limite_righe; $righe++){
 echo '<tr>';
 for ($celle = 1; $celle <= $limite_celle; $celle++){
     echo '<td>';
     if ($i < $limite_immagini){
        echo "<img src='foto/$search[$i]' height='70px' width='110px'/>";
     }
     else {
        echo "fine delle immagini nella cartella";
     }
     echo '</td>';
     $i++;
 }
 echo '</tr>';
}
echo '</table>';
closedir($dir);
?>
risposto 9 anni fa
LonelyWolf
X 0 X

beh volendo fermarsi a 16, bastava aggiungere un if al mio codice.. senza dover fare due cicli e usare un array di appoggio

<?php
   $directory = 'foto'; 
   $dir = @opendir($directory) or die("Impossibile leggere $directory");

   $i = 0;
   echo '<table><tr>';
   while($img = readdir($dir))
   {
      if(($img == '.') ||($img == '..')) continue; 
      echo "<td> <img src='$directory/$img' height='70px' width='110px'/> </td>";
      if(++$i%4== 0)echo '</tr><tr>';
                if($i== 16) break;
   }

   echo '</tr></table>';

?>

ilpri

risposto 9 anni fa
}gu|do[z]{®©
X 0 X

insomma...devo cambiare tutto lo script...

qualcuno ha da suggerirmi come procedere?

Guidoz come hai scritto tu va bene...il problema è che io devo visualizzare 20 foto per volta, nella stessa pagina...

possibbilmente in una tabella 5 x 4, come avevo fatto io...mi dai una mano?

Grazie a tutti e a presto! :)

OPS...perdonami...non avevo visto che mi avevi risposto...

Facciamo una cosa: mi affido completamente a te...con la clausola però che devo capire cosa scrivere altrimenti mi sento solo di "fregare" il lavoro degli altri!

risposto 9 anni fa
micdech
modificato 9 anni fa
X 0 X

guidoz...

ho provato la tua soluzione...ottima...

Peccato per me, che avevo usato per la prima volta il ciclo FOR per costruire una tabella; ma neanche questa volta ci sono riuscito!

Ok...cmq resta il problema della paginazione...cioè le successive 16 nella ?page=2

e il relativo sistema di navigazione, cioè: pagina [1 2 3]

risposto 9 anni fa
micdech
X 0 X

guidoz...

ho provato la tua soluzione...ottima...

Peccato per me, che avevo usato per la prima volta il ciclo FOR per costruire una tabella; ma neanche questa volta ci sono riuscito!

Ok...cmq resta il problema della paginazione...cioè le successive 16 nella ?page=2

e il relativo sistema di navigazione, cioè: pagina [1 2 3]

il problema è che non puoi affrontare un progetto in questo modo.. prima chiedi una cosa e poi dici "ah ok, funziona.. adesso voglio anche la paginazione...".. le cose vanno progettate bene.. e questo no è progettare, ma rattoppare.

a parte il fatto che non chiedi per sapere, ma chiedi per avere... sarebbe meglio se tu chiedessi per sapere, per capire da solo come fare e andare con le tue gambe..

per creare un sistema di paginazione devi leggerti tutta la directory in un array, e salvare l'array in sessione, usare una variabile "pag" da passare di pagina in pagina ed usarla per estrarre solo certi indici dall'array...

ti do un consiglio: prova.

Poi ci dici dove hai difficoltà.. altrimenti non è aiuto, ma lavoro gratuito su commissione

 :bye:

risposto 9 anni fa
}gu|do[z]{®©
X 0 X

sono nuovamente ad un punto fermo...

praticamente ho la necessità di selezionare solo alcune delle foto che vengono estratte...e avevo pensato di farlo tramite il calcolo di $prima e $ultima...

avevo pensato anche a substr($file, $prima), ma non mi funziona.

Qualcuno mi da una mano?

<?php
$directory = 'foto';
$dir = @opendir($directory) or die("Impossibile leggere $directory");
$i = 0;
$current_page = (!$_GET['page']) ? 1 : (int)$_GET['page'];
echo '<table><tr align="center">';
$calcolo = 20 * $current_page;
$prima = $calcolo - 19;
echo "numero della foto di inizio: $prima ";
$ultima = $prima + 19;
echo "numero della foto di fine: $ultima ";
while (false !== ($file = readdir($dir)))//while($img = readdir($dir))
{
$img = $file;
if(($file == '.') ||($file == '..')) continue;
echo "<td> <a href='$directory/$img'><img src='$directory/$img' height='80px' width='120px' border='0' /></a> </td>";
if(++$i%5== 0)echo '</tr><tr>';
                if($i== 20) break;
}
echo '</tr></table>';
while (false !== ($file = readdir($dir))) {
   $files[] = $file;
   }
   $div = 20;
   $tot_img = count($files);
   $tot_pages = ceil($tot_img / $div);
   //echo "$tot_img";
   
   $primo = ($current_page - 1) * $div;
   $paginazione = "[ Le pagine dell'album sono: " .$tot_pages. "] [ ";
                        for($i = 1; $i <= $tot_pages; $i++) {
                        if($i == $current_page) {
                        $paginazione .= $i . " ";
                        } else {
                        $paginazione .= "<a href=\"?page=$i\" title=\"Vai alla pagina $i\">$i</a> ";
                        }
                        }
                        $paginazione .= " ]";
                        
                        echo "<div align='center' style=\"text-align: center; font-family: book Antiqua, Helvetica, sans-serif; font-size: 13px; color: #FFFFFF; \">";
                        echo "$paginazione</div>";

closedir($dir);
?>
risposto 9 anni fa
micdech
X 0 X

Bè...qualcosa si sta muovendo...ma ancora non so come far partire la visualizzazione della foto dal numero da me desiderato.

Mi spiego...

calcolo il numero della prima foto: 1 21 41 etc. etc.

come faccio a stabilire che la prima foto da visualizzare è la numero 1, 21 41 o che?

Qualcuno ha un idea da suggerirmi?

Grazie ancora, e a presto!

risposto 9 anni fa
micdech
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda