- Home
- Categorie
- Coding e Sistemistica
- Coding
- Immagini nelle cartelle
-
Immagini nelle cartelle
Buona Sera,
Sul mio sito web memorizzo immagini inviate dagli utenti su un database mysql.Però questo metodo non fa altro che consumare spazio al database.
Se vorrei inserirle in una cartella, dopo come farei a richiamare le singole foto per ogni utente ?Grazie
-
Ciao infosicurezza,
potresti salvare il nome del file sul Db ed associare ad ogni file l'id utente.

-
[...]
E poi scusa il database non rispetta la normalizzazione, perchè avrei :
ID 1 foto1.jpg
ID 1 foto2.jpg
ID 1 foto3.jpg
ecc... o sbaglio ? poi metti caso che una foto abbia lo stesso nome. dovrei rinominare !
-
Ciao Infosicurezza, al massimo potresti avere per ogni articolo
img_1, img_2,....non appesantiresti il db, in quanto il suggerimento era per inserire nel db il nome dell'immagine, ma non l'immagine stessa.
Altrimenti dovresti optare per un'inserimento diretto in cartella, ma quando caricheresti l'immagine gli dovresti associare l'id_articolo. Scegli tu tra le 2 quale preferisci
Ciao
-
Ciao Infosicurezza, Samyom non intendeva questo ovviamente.
Supponendo che tu abbia una tabella così costituita:
utenti: ID - NOME - INFOVARIE
Ti crei un'ulteriore tabella, chiamandola IMMAGINI, così costituita:
immagini:ID - utenti_id - filename
Ora cosa fai quando un utente carica un'immagine?!
- Prima cosa, rinomini l'immagine in modo univoco (con valori alfanumerici), in modo che le immagini non vengano mai sovrascritte in fase di upload all'interno della cartella (magari omogeneizzando anche il formato).
- Inserisci all'interno della tabella immagini, l'id dell'utente e il nome del file rinominato.
ES:[PHP] $query='insert into immagini ([idUtente], "[nomeImmagine]")';
mysql_query($query);[/PHP] - Se devi recuperare tutte le immagini di un utente, non ti resta che fare una select.
Supponendo che l'id dell'utente sia 10:
[PHP]$query='select filename from immagini where utente_id=10';
[/PHP]
A questo punto, otterrai tutti i nomi dell'immagini, facilmente recuperabili conoscendo la cartella dove è stato effettuato l'upload.
Spero sia chiaro.
Ciao
-
[...]
Ciao Bazarop, come mai creare un'altra tabella, e non inserire degli ulteriori campi nella tabella articoli, tipo
id_articolo, descrizione, img_1, img_2, img_3 ```voglio dire una cosa, non sono una cima, quindi i miei consigli si fermono a quello che è la mia esperienza, e non posso essere che contento quando leggo una soluzione migliore. Ciao da danny :ciauz:
-
Ciao Danny,
questo perchè non puoi sapere quante immagini l'utente caricherà.
Supponendo che un utente carichi 10 immagini, dovresti creare precedentemente almeno 10 attributi(campi) all'interno della tabella. Se un'utente ne dovesse caricare 20, dovresti crearne 20 e così via.Nel tuo caso quindi daresti un limite al numero di immagini che un utente può caricare.

Questo metodo utilizzato è un tipo di relazione chiamato "Uno a molti", ovvero "un utente" in relazione con "molte immagini".
In mysql, le relazioni possibile sono uno a uno, uno a molti, molti a molti.
Per approfondire il modello relazionale delle tabelle in mysql, vi consiglio di visionare questa breve guida: http://database.html.it/articoli/leggi/1723/il-modello-di-relazioni-tra-tabelle-in-mysql/Ciao
-
[...]
Grazie, buona questa
Ciao da danny alla prossima
-
Si ora mi è tutto chiaro,
Mica potreste postarmi qualche esempio di come rinominare il file inviato?
P.s. siamo sicuri che poi aruba mette a disposizione lo spostamento delle immagini nelle cartelle ?P.s2 non ditemi niente ragazzi, per evitare nuovi post forse inutili avrei bisogno di chiarire alcune cose.
Dovrei fare l'eliminazione dei contenuti che si trovano in un ciclo dopo che la query ha restituito il risultato. Io avrei pensato cosi :
[php]
$i = 0;
while($row = mysql_fetch_array($var))
{
$i = $i +1;
//ELEMENTI DA STAMPARE...
<form method="POST" action="">
<input type="text" name="elimina$i" value="Cancella">
</form>
}
[/php]Vabbè e poi tutta la parte dinamica. Bene la domanda è : cosa ne pensate se passo la variabile $i così so cosa eliminare visto che sono tanti commenti di tutti gli utenti.
Inoltre non vorrei quel bottone dell'input, vorrei un link, oppure un immagine al posto di essi, qualche idea ?? Grazie