File

ispanic

Utente Attivo
28 Ago 2014
119
0
0
Ciao ragazzi, c'è un modo tramite php, per prendere dei file, in modo random, da una cartella per metterli poi dentro ad una pagina?
 

Night Assassin

Utente Attivo
16 Mar 2013
200
0
0
Meglio sarebbe se ogni file avesse un corrispettivo in una tabella del database e con una semplice query ORDER BY rand() estrai un numero a scelta di file random.

Inviato con Tapatalk Free da Android
 

Night Assassin

Utente Attivo
16 Mar 2013
200
0
0
SELECT * FROM tabella_file ORDER BY RAND() LIMIT 0,1

l'order by te li ordina casualmente e ne estrae il numero scritto dopo 0, ... se metti 0,1 ne estrae 1 se metti 0,5 ne estrae 5

bisogna vedere che tipo di file sono e come li vuoi estrarre per fare il php.

Inviato con Tapatalk Free da Android
 
Ultima modifica:

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
sensa passare da un db
PHP:
<?php
$file=glob("cartella/*.*");//leggi i nomi di tutti i file della cartella
//NOTA: il 2 asterisco può indicare il tipo di file es. glob("cartella/*.txt") per cui glob estrae solo i nomi dei file testo
shuffle($file);//randomizzo l'array
//poi uso es il dato di indice 0
$lines = file($file[0]);//leggo il file estratto casualmente
?>
 

ispanic

Utente Attivo
28 Ago 2014
119
0
0
ciao
sensa passare da un db
PHP:
<?php
$file=glob("cartella/*.*");//leggi i nomi di tutti i file della cartella
//NOTA: il 2 asterisco può indicare il tipo di file es. glob("cartella/*.txt") per cui glob estrae solo i nomi dei file testo
shuffle($file);//randomizzo l'array
//poi uso es il dato di indice 0
$lines = file($file[0]);//leggo il file estratto casualmente
?>

Ciao Borgo, grazie mille, però così facendo io randomizzerei tutte le immagini, io invece vorrei prendere sempre due immagini vicine, che si chiameranno sempre in ordine:
1.jpg
2.jpg
eccetera..
E metterle a random (due-due) vicino.. con questo codice si può fare qualcosa?
Inoltre per stamparle poi a video, dovrei usare:
PHP:
echo '<img src="$file[0]"/>';
no? il problema è che non funge
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
per capirsi:
tu hai una serie di foto chiamate, es., 1.jpg, 2.jpg,... 100.jpg
e vorresti che venissero a due a due così
4.jpg e 5.jpg o 72.jpg e 73.jpg o ecc....
è così?
se sì prova
PHP:
<?php
$file=glob("cartella/*.jpg");//leggi tutti i file immagini
//queste righe poi le togli sevono per vedere se legge
echo "<pre>";
var_dump($file);
echo "</pre>";
//------
//eventualmente se serve riordina l'array con sort($file) o natsort($file)
$n=count($file);//conti quanti sono
$fine=$n-2;//l'array parte da zero e in modo che il massimo sia es 99.jpg
$ran=rand(0,$fine);//estrai un numero casule compreso tra zero e $n-2
echo "<img src=\"".$file[$ran]."\"/><img src=\"".$file[$ran+1]."\"/>";  
//....
?>
 

ispanic

Utente Attivo
28 Ago 2014
119
0
0
ciao
per capirsi:
tu hai una serie di foto chiamate, es., 1.jpg, 2.jpg,... 100.jpg
e vorresti che venissero a due a due così
4.jpg e 5.jpg o 72.jpg e 73.jpg o ecc....
è così?
se sì prova
PHP:
<?php
$file=glob("cartella/*.jpg");//leggi tutti i file immagini
//queste righe poi le togli sevono per vedere se legge
echo "<pre>";
var_dump($file);
echo "</pre>";
//------
//eventualmente se serve riordina l'array con sort($file) o natsort($file)
$n=count($file);//conti quanti sono
$fine=$n-2;//l'array parte da zero e in modo che il massimo sia es 99.jpg
$ran=rand(0,$fine);//estrai un numero casule compreso tra zero e $n-2
echo "<img src=\"".$file[$ran]."\"/><img src=\"".$file[$ran+1]."\"/>";  
//....
?>

Sì proprio così, niente da fare però.. mi potresti spiegare a cosa serve questa parte:
PHP:
$fine=$n-2;
comunque non riesco a stampare a video, mi da questo sulla pagina web:
PHP:
< '; ?>
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
intanto ti spiego cosa è quel
PHP:
$fine=$n-2;
con un esempio
se hai come detto 1.jpg, 2.jpg,... 100.jpg immagini, l'array sarà
$file[0] con valore cartella/1.jpg
$file[1] con valore cartella/2.jpg
.....
$file[99] con valore cartella/100.jpg
ricorda gli indici degli array partono da 0, non da 1

con count($file) ottieni 100
come vedi però gli indici vanno da 0 e 99, ma non solo per avere la equenza consecutiva devi avere
$file[numero_random] e $file[numero_random + 1]
quindi se per caso la funzione rand usata così
$ran=rand(0,valore_del_count - 1)
ti restituisce 99 i valori diventano $file[99] e $file[100], ma l'elemento con indice 100 non esiste, quindi errore
per cui in questo caso impostando il range del random tra 0 e 98 (= count($file)-2), quindi nel caso tu ottenessi 98 hai
$file[98] e $ file[99]
spero di essere stato chiaro, altrimenti chiedi.

per l'altro problema verifica di aver messo giusto gli apici (io uso i doppi)
e prova a mettere tra parentesi $file[($ran+1)]
quindi prova a sciverla così
PHP:
echo "<img src=\"".$file[$ran]."\"/><img src=\"".$file[($ran+1)]."\"/>";
oppure, se usi gli apici singoli
PHP:
echo '<img src="'.$file[$ran].'"/><img src='".$file[($ran+1)].'"/>';
 

ispanic

Utente Attivo
28 Ago 2014
119
0
0
ciao
intanto ti spiego cosa è quel
PHP:
$fine=$n-2;
con un esempio
se hai come detto 1.jpg, 2.jpg,... 100.jpg immagini, l'array sarà
$file[0] con valore cartella/1.jpg
$file[1] con valore cartella/2.jpg
.....
$file[99] con valore cartella/100.jpg
ricorda gli indici degli array partono da 0, non da 1

con count($file) ottieni 100
come vedi però gli indici vanno da 0 e 99, ma non solo per avere la equenza consecutiva devi avere
$file[numero_random] e $file[numero_random + 1]
quindi se per caso la funzione rand usata così
$ran=rand(0,valore_del_count - 1)
ti restituisce 99 i valori diventano $file[99] e $file[100], ma l'elemento con indice 100 non esiste, quindi errore
per cui in questo caso impostando il range del random tra 0 e 98 (= count($file)-2), quindi nel caso tu ottenessi 98 hai
$file[98] e $ file[99]
spero di essere stato chiaro, altrimenti chiedi.

per l'altro problema verifica di aver messo giusto gli apici (io uso i doppi)
e prova a mettere tra parentesi $file[($ran+1)]
quindi prova a sciverla così
PHP:
echo "<img src=\"".$file[$ran]."\"/><img src=\"".$file[($ran+1)]."\"/>";
oppure, se usi gli apici singoli
PHP:
echo '<img src="'.$file[$ran].'"/><img src='".$file[($ran+1)].'"/>';

Grazie mille, ho capito perfettamente!
Mi rimane sempre il problema dell'echo.. che non riesce a stampare a video, mi visualizza solo un'immagine corrotta e il codice in php come se non fosse chiuso
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
li non posso aiutarti, devi verificare il codice, probabilmente da qualche parte hai qualche apice nonb chiuso, un dubbio potrebbe essere nel nome delle immagini, per caso c'è qualche apice nel nome?
hai usato il var_dump? se si cosa ti riporta?
 

ispanic

Utente Attivo
28 Ago 2014
119
0
0
PHP:
"; var_dump($file); echo ""; $n=count($glob); $fine=$n-2; $random=rand(0, $fine); echo 'immagine 1 e immagine 2 (solo l'icona del corrotto o della non presenza)'; ?>
Anche se non ho capito a cosa serve il var_dump.. a stampare a video le informazioni delle immagini?
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
il var_dump dovrebbe darti in output, qualcosa di simile
array(xy) {
[0]=>
string(14) "cartella/1.jpg"
[2]=>
string(14) "cartella/2.jpg"
ecc....
}
dove: xy è il numero di elementi dell'array
e
[0]=> string(14) "cartella/1.jpg"
l'elemento di indice 0 contiene la stringa di 14 caratteri cartella/1.jpg
ecc...

comunque quello che hai postato è l'outpt della tua pagina?
se è quello NON stai usando una pagina php
 

ispanic

Utente Attivo
28 Ago 2014
119
0
0
O mio dio che ritardato.. comunque mi stampa
array(2) {
[0]=>
string(17) "caricamenti/1.jpg"
[1]=>
string(17) "caricamenti/2.jpg"
}
 
Ultima modifica:

ispanic

Utente Attivo
28 Ago 2014
119
0
0
ciao
il var_dump dovrebbe darti in output, qualcosa di simile

dove: xy è il numero di elementi dell'array
e
[0]=> string(14) "cartella/1.jpg"
l'elemento di indice 0 contiene la stringa di 14 caratteri cartella/1.jpg
ecc...

comunque quello che hai postato è l'outpt della tua pagina?
se è quello NON stai usando una pagina php

Risolto, grazie MILLE!
 

ispanic

Utente Attivo
28 Ago 2014
119
0
0
intanto il file PHP che stupidamente non avevo rinominato e poi un errore riguardante gli apici, perchè ho l'abitudine che se anche chiedo, preferisco leggere e imparare il metodo e poi chiudere la pagina e provarci da solo, quindi avevo sbagliato degli apici, sei stato gentilissimo! :)
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
io farei così
PHP:
<?php
function random_dispari($i,$f){//estrae solo i dispari nell'intervallo $i-$f
	$r=0;
	while($r%2 ==0){//se pari continua, se dispari esce
		$r=rand($i,$f);
	}
	return $r;
}
//--test--
echo random_dispari(0,100);
?>
evidente che devi aggiungere la function al tuo scrip e sosituire ran(x,y) con random_dispari(x,y)
attento però a gestire bene gli indici dell'array
 
Ultima modifica:
Discussioni simili
Autore Titolo Forum Risposte Data
E fpdf salvare e aprire il file PHP 4
I asp | includere un file, indirizzo depositato in un db Classic ASP 0
felino [Windows 10] Scompare icone, file e collegamenti sul desktop Windows e Software 0
S passare un valore da un form a un file .php con metodo post PHP 4
D Miglior modo per estrarre le occorrenze di un elemento in un set di più file xml e quindi scrivere il risultato in una tabella Excel o magari in JSON XML 0
G file CSS contenente variabili HTML e CSS 1
M Creare traccia di download file sul server HTML e CSS 2
I elimina file PHP 1
I cerca file sottocartella unlink file PHP 0
I sessione username scarica file PHP 1
S Aggiornare percorso file collegati MS Access 0
I lista file sottocartella elimina file PHP 3
F comando di inclusione file audio in I-Pad non funziona HTML e CSS 1
D protezione cartelle: blocco visualizzazione/scaricamento contenuto, ma abilitazione utilizzo dati da parte di file .php presenti sul sito Web Server 1
I visualizza file sottocartella elimina singolo file PHP 1
I caricamento file in sottocartella nome utente PHP 3
I cartella sottocartella apri o scarica file pdf PHP 1
K Sfondo nuovo file Photoshop 0
C Wp-admin a file php WordPress 5
G Importazione file .sql Web Server 0
csi Inviare file jpg in locale alla stampante con php PHP 0
otto9due Proteggere una cartella e file con password tramite .htaccess e .htpasswd Web Server 0
MarcoGrazia HTML5 <picture> e i file source HTML e CSS 2
MarcoGrazia criptare un file PHP 2
U Link a doppio file PHP PHP 0
U Link a pagina ed esecuzione file PHP 0
U PHP creare un file excel dopo ricerca nel DB PHP 0
I Documento file word Java 0
FDF182 file .bin nell' email PHP 0
E Sito violato, file modificati, cartelle create WordPress 1
F LETTURA FILE SU DIRECTORY IN RETE Javascript 0
Y Percorso assoluto file immagine HTML e CSS 9
M Durata di un file MP4 Classic ASP 1
L problema collegamento file css con html HTML e CSS 1
otto9due Proteggere file caricati dall'esterno ma renderli accessibili per gli utenti loggati. PHP 4
Y Problema percorso file in rete PHP 1
otto9due Impedire esecuzione diretta dei file PHP 7
E Problema accesso a file con app sviluppata con MIT APP INVENTOR 2 Sviluppo app per Android 0
Couting95 inserire dati da un file di testo in una tabella in php PHP 1
keyascii File temporanei Sessioni PHP 6
T Come esportare Thunderbird MBOX in file PST di Outlook? Windows e Software 2
K File audio in html, chi mi può aiutare? HTML e CSS 0
K Aiuto con file audio in html HTML e CSS 1
Antonio67 Lanciare file shell bash da html HTML e CSS 2
G leggere file txt e stampare con php il contenuto a video PHP 7
L Modifica file upload in ASP Classic ASP 2
Cosina mostrare contenuto da file txt PHP 2
L PHPSpreadsheet inserire dati da file .xlsx/.xls su database PHP 2
M Inviare un file su un server remoto con JavaScript Javascript 0
L Ricezione dei dati su file php da modulo html PHP 6

Discussioni simili