stampare files txt accanto alle foto caricate

  • Creatore Discussione Creatore Discussione yok
  • Data di inizio Data di inizio

yok

Utente Attivo
3 Set 2009
62
0
0
Perchè, secondo voi, con questa funzione, ad ogni foto che viene stampata a video viene sempre associato solo l'ultimo file di testo salvato.
Spiego: da un form raccolgo un certo numero di foto (cartella:"foto/", che vengono ridotte a thumbs nella sottocartella "thumbs/foto"), + un files di testo, riferito ad ogni foto, salvato nella cartella "txt/". Quando stampo vorrei che ogni singolo files di testo venisse stampato accanto alla corrispondente foto. Ma ciò non accade e, come detto, stampa solo l'ultimo file salvato per tutte le foto.



<?php
$nome_cartella = "thumbs/foto/";
$handle = opendir($nome_cartella);

$num_foto=count(glob('foto/*.*'));



for($i=1; $i<$num_foto; $i++) {

$var=fopen("txt/testo".$i.".txt","rb");
$leggi=fread($var,filesize("txt/testo".$i.".txt"));
continue;
}
while (false != ($file = readdir($handle))) {

if ( $file == ".." || $file == ".") {
continue;
}else{

echo "<p><img src="."'".$nome_cartella.$file."'>".$leggi."</p>";

}
}

?>

Grazie della disponibilità!
Ciao
 
ciao
non me ne intendo molto di file txt (preferisco usare il db) ma secondo me non dipende dal file, ma dal ciclo fo che usi per leggerli.
for($i=1; $i<$num_foto; $i++) {

$var=fopen("txt/testo".$i.".txt","rb");
$leggi=fread($var,filesize("txt/testo".$i.".txt"));
continue;
}

quando il ciclo finisce nella variabile $leggi c'è rimasto solo l'ultimo nome del txt, quindi per forza trovi solo l'ultimo
dimenticavo anche nella $var
 
Ultima modifica:
Ciao Borgo!
Grazie della risposta immediata

quando il ciclo finisce nella variabile $leggi c'è rimasto solo l'ultimo nome del txt, quindi per forza trovi solo l'ultimo
dimenticavo anche nella $var

credo sia semplice ma infatti non riesco proprio a capire questo, perchè alla fine del FOR rimane soltanto l'ultimo nome del txt. Attraverso $i non dovrebbe scrollarli tutti?
 
ciao
si li scrolla tutti, ma facciomo in esempio stupido.

$devo_leggere=0;
for($j=1;$j<5;$j++){
$devo_leggere=$j;
}
echo " la variabile è ".$devo_leggere;
otterrai sempre un output

la variabile è 4
 
Ho provato anche questo codice, utilizzando un array per raccogliere tutti i vari files txt ma niente, mi associa sempre e solo l'ultimo file di testo a tutte le immagini. Quale potrebbe essere la soluzione?

<?php
$nome_cartella = "thumbs/foto/";
$handle = opendir($nome_cartella);
$handletxt=opendir("txt/");

$num_foto=count(glob('foto/*.*'));


while ($filetxt = readdir($handletxt)) {
$file_array[] = $filetxt;
}

foreach ($file_array as $filetxt) {
if ( $filetxt == ".." || $filetxt == ".") {
continue;
}
}



while (false != ($file = readdir($handle))) {

if ( $file == ".." || $file == ".") {
continue;
}else{

echo "<p><img src="."'".$nome_cartella.$file."'>".$filetxt."</p>";

}
}

?>
 
ciao, io farei così utilizzando il tuo primo script

PHP:
<?php
$nome_cartella = "thumbs/foto/";
$handle = opendir($nome_cartella);
$num_foto=count(glob('foto/*.*'));

$leggi=array();//dichiaro leggi

for($i=1; $i<$num_foto; $i++) {
	$var=fopen("txt/testo".$i.".txt","rb");
	//se ti serve anche $var falla diventare un array
	$leggi[]=fread($var,filesize("txt/testo".$i.".txt"));
	/*
	al primo giro
	$leggi[0] quello che c'è in testo1.txt
	al secondo
	$leggi[1] quello che c'è in testo2.txt
	eccetera..........
	*/
	continue;
}
$conta=0;//metto un contatore a 0
while (false != ($file = readdir($handle))) {
	if ( $file == ".." || $file == ".") {
		continue;
	}else{
		echo "<p><img src="."'".$nome_cartella.$file."'>".$leggi[$conta]."</p>";
		$conta++;//incremento il contatore
	}
}
?>

fai una prova poi mi sai dire

dimenticavo, non dovrebbe servirti inserire continue;
 
Ultima modifica:

Discussioni simili