Newsgroup: it.comp.www.php
Titolo: Galleria - Anteprima e Immagine nella stessa cartella

Ciao,
sto iniziando adesso a vedere un po' di PHP perchè ho bisogno di
snellire il mio sito.
In effetti occupandomi di fotografia e gallerie immagini trovo un
risparmio di tempo enorme nell'assegnare dinamicamente variabili ed
estrarne valori.
Attualmente sono riuscito a scrivere qualcosa che mi crei una tabella
di immagini (3 colonne), ma sono obbligato a tenere immagini ed
anteprime in due cartelle separate, perchè altrimenti i comandi di
lettura directory leggono tutto.
<?
$imagedir = "portfolio/$id/images";
$thumbdir = "portfolio/$id/thumbs";
$columns = 3;
?>
<table align="center" border="0" cellspacing="5" cellpadding="0"
class="tabellaportfolio">
  <tr>
    <?php
		$i=0;
		$handle=@opendir($imagedir);
		while (false!==($file = @readdir($handle))) {
			if ($file != "." && $file != "..") {
			   print "<td><a target=_blank href=$imagedir/$file><img
src=$thumbdir/$file border=0></a><br></td>";
			  ++$i;
			  if($i == $columns) { print "</tr><tr>";
			  $i = 0;
			  }
			}
		}
		closedir($handle);
		?>
  </tr>
</table>
Io invece vorrei avere tutto nella stessa cartella, ma con due nomi
file differenti tipo "Image" e "tn_Image".
Magari effettuando un controllo sulla dimensione o sul formato
dell'immagine, però non sono capace, non ho trovato un metodo.
Qualche idea?
Dan

 Qualche idea?
Puoi controllare, tramite la funzione strpos per esempio, se il nome
dell'immagine contiene il prefisso "tn_".
Es.
if (strpos($file,'tn_)==0) 
{
    ....
}

 > Qualche idea?Puoi controllare, tramite la funzione strpos per esempio, se il nome


Negus wrote:

occhio che dara' falsi positivi (a causa anche di una documentazione un'po'
ambigua e di un errore)..
per la prova..
$test = array(
 "",
 "abcdef",
 "test",
);
while (list(, $string) = each($test))
{
 if (strpos($string, 'tn_') == 0)
 {
  echo "'$string' looks good<br />";
 } else {
  echo "'$string' looks not good<br />";
 }
}
prova ad usare..
function check_prefix ($string, $needle)
{
        $string = substr($string, 0, strlen($needle));
        return ($string == $needle) ? true : false;
}
-- 
www.iuz-lab.info

 per la prova..
Ma lui effettuerà il controllo file per file ... o meglio ... stringa
per stringa e non array di stringhe.

Negus wrote:

era un'esempio..
cio' non toglie che..
strpos($file,'tn_') == 0
non corrisponde al controllare che il prefisso di $file sia 'tn_'.. e qui
sorge il problema (di non poco conto)..
-- 
www.iuz-lab.info

 sorge il problema (di non poco conto)..
Perchè non corrisponde a controllare che sia il prefisso sia "tn_" ?
In fondo sto controllando che sia in posizione 0 ... o sbaglio?
Ciao,
    Fabrizio
=== 
http://www.negusweb.it
 ===

Negus wrote:

[..]
sbagli..
quello che hai scritto corrisponde a.. controlla che $file cominci con il
carattere 't' o 'n' o '_', o, che tali caratteri non siano presenti..
-- 
www.iuz-lab.info

 carattere 't' o 'n' o '_', o, che tali caratteri non siano presenti..
Innanzitutto ti invito a consultare la documentazione:
http://it.php.net/strpos
E per verificare, prova:
<?php
	$testo='nprova';
 
	var_dump(strpos($testo,'tn_'));
?>
Ovviamente restituisce FALSE:

 }
c'è qualcosa che non mi torna... se in $file non è contenuta la stringa
'tn_' il risultato di strpos sarà false che confrontata in questa maniera
false==0 darà true e entrerà nell'if (mi sfugge qualcosa?)
o utilizzi
if (0 === strpos($file, 'tn_'))
{
   ....
}
oppure, secondo me meglio perchè non analizzi tutta la stringa
if ('tn_' == substr($file, 0, 3))
{
   ...
}

 Ovviamente restituisce FALSE:
scusa ho fatto un errore leggendo la documentazione di strpos e strrpos che
agiscono in modi diversi (ed in strrpos con una differenza di comportamento
anche tra le differenti versioni di PHP)..
comunque sia il problema e' che con un semplice test come hai usato nel tuo
primo suggerimento a 
cir...@gmail.com
 il risultato e' sbagliato..
 $testo = 'nprova';
 if (strpos($testo, 'tn_') == 0)
 {
  echo 'Ok';
 }
restiruira' Ok.. e questo e' male..
per questo suggerivo di utilizzare la funzione check_prefix come sostituta a
strpos (oppure utilizzare l'eguaglianza stretta per controllare il valore
di ritorno di quest'ultima)..
-- 
www.iuz-lab.info

 }
e' quello che cercavo di fargli fare attraverso la funzione..


 restiruira' Ok.. e questo e' male..
Deve fare il confronto con
strpos($testo,'tn_')===0
Si tratta di un'identità, non di un'uguaglianza.
Ciao,
    Fabrizio

 Si tratta di un'identità, non di un'uguaglianza.
[..]
guarda, identita' mi mancava..
come la chiami la chiami.. il senso non cambia..
safe-comparison, uguaglianza stretta.. sono solo termini.. che IMHO
preferisco al concetto di "identita'"..
-- 
www.iuz-lab.info