PROBLEMA php e directory

pentothal

Utente Attivo
821
209
CPU
CPU Intel Core 2 Duo E8500
Scheda Madre
Scheda Madre Asus P5KPL intel® Core™2 Extreme sk775
HDD
500gb
RAM
2pz MEMORIA RAM KINGSTON 1 GB DDR II
GPU
S. Video 9600 GT Point Of View GeForce 9600GT 512mb
Case
CABINET CASE AT-8 MODDING 500W TIPO BMW
OS
Windows
Ciao a tutti, mi sto esercitando con php, sono alle prime armi non arrabbiatevi se dico scemenze. Mi sono imbattuto in un problema "banale", il percorso delle cartelle.
Ho delle directory composte in questo modo:
Codice:
  directory principale con:
           Dir
            |
            |
    dir01-------dir02
      |           |
      |           |
      |           |
   A-----B     C-----D
   |     |     |     |
   |     |     |     |
   |     |     |     |
  ---   ---   ---   ---
  | |   | |    |     |
  | |   | |    |     |
 A1 A2 B1 B2  ecc.. ecc..


Sto usando questo codice per leggere nelle cartelle:
Codice:
<?php
print_r(leggiCartella( "percorso/cartella"));


function leggiCartella ($cartella)
{

$cartelle = array();

$handler = opendir($cartella);

while ($file = readdir($handler)) {

  if ($file != "." && $file != "..") {
    $cartelle[] = $file;
    echo "<h1><a href=paginatest.php?test1=$file >$file</a></h1><br>";
  }

}

closedir($handler);

}
?>

Per aprire la prima cartella uso semplicemente inserire il percorso così:
Codice:
print_r(leggiCartella( "dir/"));

Il prossimo passo è aprire una delle cartelle "dir01" oppure "dir02" e ho risolto aggiungendo _GET in questo modo:
Codice:
print_r(leggiCartella( 'dir/' . $_GET['test1']));

Qui iniziano i problemi, riuscire ad aprire le cartelle A/B o C/D. Ovviamente non posso inserire un percorso fisso poichè potrei trovarmi in dir01 o in dir02 e cliccando su A/B o C/D incorrerei nell' errore "no such file or directory".
Che soluzione potrei adottare?
 

Dumah Brazorf

Utente cAttivo
Utente Èlite
7,508
3,492
Chi esclude che possano esistere più cartelle con lo stesso nome, chiaramente contenute in cartelle diverse?
 

pentothal

Utente Attivo
821
209
CPU
CPU Intel Core 2 Duo E8500
Scheda Madre
Scheda Madre Asus P5KPL intel® Core™2 Extreme sk775
HDD
500gb
RAM
2pz MEMORIA RAM KINGSTON 1 GB DDR II
GPU
S. Video 9600 GT Point Of View GeForce 9600GT 512mb
Case
CABINET CASE AT-8 MODDING 500W TIPO BMW
OS
Windows
Chi esclude che possano esistere più cartelle con lo stesso nome, chiaramente contenute in cartelle diverse?
Purtroppo credo sia da escludere, le cartelle dovranno poi avere nomi specifici, adesso sono alla fase di test, per poi passare allo step di studio successivo, fare un sitarello locale con foto e video miei e di amici, ovviamente ho intenzione di sfruttare questo obbiettivo per lo studio del php, css, html ecc...
Quindi quelle cartelle poi prenderanno il nome di persone e date. A meno che non ci siano altre soluzioni, ho pensato di leggere direttamente le cartelle es. di Marco, Paolo, Luca, Orazio... e ognuno poi avrà delle sottocartelle con le date e all'interno le foto.
 

DispatchCode

Moderatore
Staff Forum
Utente Èlite
2,208
1,845
CPU
Intel I9-10900KF 3.75GHz 10x 125W
Dissipatore
Gigabyte Aorus Waterforce X360 ARGB
Scheda Madre
Asus 1200 TUF Z590-Plus Gaming ATX DDR4
HDD
1TB NVMe PCI 3.0 x4, 1TB 7200rpm 64MB SATA3
RAM
DDR4 32GB 3600MHz CL18 ARGB
GPU
Nvidia RTX 3080 10GB DDR6
Audio
Integrata 7.1 HD audio
Monitor
LG 34GN850
PSU
Gigabyte P850PM
Case
Phanteks Enthoo Evolv X ARGB
Periferiche
MSI Vigor GK30, mouse Logitech
Net
FTTH Aruba, 1Gb (effettivi: ~950Mb / ~480Mb)
OS
Windows 10 64bit / OpenSUSE Tumbleweed
Non ti appoggi ad un database? Sarebbe meglio e tutto più semplice.

Mario Rossi può entrare nella cartella di Luca Bianchi? Perchè se così non fosse dovrai avere per forza una qualche associazione per riconoscere il proprietario della cartella. Quindi o utilizzi dei file di testo, o utilizzi un db (che è sicuramente la scelta migliore).

Avresti il vantaggio di avere, per dire, una tabella come questa:

Codice:
+----+-------+---------+
| ID |  NOME | COGNOME |
+----+-------+ --------+
|  1 | Mario | Rossi   |
+----+-------+---------+
|  2 |  Luca | Bianchi |
+----+-------+---------+

In questo modo la tua struttura sarà tipo:

Codice:
dir/1/altra_cartella/
dir/2/cartella/

dove 1 e 2 sono gli ID presi della tabella del database.

A quel punto se vuoi fare le cose più interessanti puoi associare una password (con una colonna in più in quella tabella) e fare in modo che l'id N acceda alla cartella N (e alle sottocartelle, ovviamente). Questo senza gestire il login, che potresti poi introdurre in futuro.
 
  • Mi piace
Reazioni: Moffetta88

pentothal

Utente Attivo
821
209
CPU
CPU Intel Core 2 Duo E8500
Scheda Madre
Scheda Madre Asus P5KPL intel® Core™2 Extreme sk775
HDD
500gb
RAM
2pz MEMORIA RAM KINGSTON 1 GB DDR II
GPU
S. Video 9600 GT Point Of View GeForce 9600GT 512mb
Case
CABINET CASE AT-8 MODDING 500W TIPO BMW
OS
Windows
Non ti appoggi ad un database? Sarebbe meglio e tutto più semplice.

Mario Rossi può entrare nella cartella di Luca Bianchi? Perchè se così non fosse dovrai avere per forza una qualche associazione per riconoscere il proprietario della cartella. Quindi o utilizzi dei file di testo, o utilizzi un db (che è sicuramente la scelta migliore).

Avresti il vantaggio di avere, per dire, una tabella come questa:

Codice:
+----+-------+---------+
| ID |  NOME | COGNOME |
+----+-------+ --------+
|  1 | Mario | Rossi   |
+----+-------+---------+
|  2 |  Luca | Bianchi |
+----+-------+---------+

In questo modo la tua struttura sarà tipo:

Codice:
dir/1/altra_cartella/
dir/2/cartella/

dove 1 e 2 sono gli ID presi della tabella del database.

A quel punto se vuoi fare le cose più interessanti puoi associare una password (con una colonna in più in quella tabella) e fare in modo che l'id N acceda alla cartella N (e alle sottocartelle, ovviamente). Questo senza gestire il login, che potresti poi introdurre in futuro.
L'idea iniziale era quella di utilizzare un database perchè ci sarà davvero tanta roba, ma volevo affrontare uno step alla volta.
Chiunque può vedere le foto di chiunque, spiego meglio il progetto, che è assai goliardico e ho in mente di prendermi moooolto tempo per svilupparlo, anche per questioni di tempo, ne ho poco da dedicargli e sfrutto il sabato e la domenica per studiarmi il tutto. In pratica voglio fare un fac-simile di un sito hot famoso, poi deciderò dopo quale, quindi al posto delle "star" ci metto Luca, Paolo ecc... ognuno ha una sua gallery con foto e una sezione video, ho pensato anche i banner pubblicitari fake. Quindi lo schema che ho pensato era quello di creare tutte le cartelle di amici e amiche e all'interno la loro gallery con le foto, poi più in là mi dedico alla video gallery che mi sa che sarà bella tosta. Voglio sfruttare questo come allenamento per poi dedicarmi seriamente a costruirmi un sito personale, ma prima devo "giocare" con questo progetto che ovviamente sarà solo locale.
 

pentothal

Utente Attivo
821
209
CPU
CPU Intel Core 2 Duo E8500
Scheda Madre
Scheda Madre Asus P5KPL intel® Core™2 Extreme sk775
HDD
500gb
RAM
2pz MEMORIA RAM KINGSTON 1 GB DDR II
GPU
S. Video 9600 GT Point Of View GeForce 9600GT 512mb
Case
CABINET CASE AT-8 MODDING 500W TIPO BMW
OS
Windows
Allora, ho testato l'uso del database e devo dire che mi ha agevolato di parecchio il lavoro sotto un certo aspetto, tanto da decidere di allargare il sitarello da semplice e goliardico contenitore di foto di amici a raccolta anche di vecchie foto di famiglia da digitalizzare, quindi dirò addio a un template simil sito hot, anche perchè non ho ancora le capacità per svilupparne uno, e di farne uno semplice semplice. Per il test ho creato tre tabelle che semplificate sono così:
Codice:
         serie_tab
+----+------------+---------+
| ID | NAME_SERIE | N_SERIE |
+----+------------+---------+
| 1  |   family   |    3    |
+----+------------+---------+
| 2  |  friends   |    5    |
+----+------------+---------+
il primo è ovviamente l'id, il secondo il nome della serie e la terza
il numero di modelli che contiene la serie (pensavo mi servisse in fututo
per far uscire il numeretto quando si passa sopra col mouse, se non serve
lo posso eliminare).

             mod_tab
+----+------------+-------+----------+
| ID | NAME_MOD   | N_SET | SERIE_ID |
+----+------------+-------+----------+
| 3  |   name01   |   3   |  family  |
+----+------------+-------+----------+
| 4  |   name02   |   2   |  friends |
+----+------------+-------+----------+

id, il nome della persona che è una key, il numero di cartelle con foto e la serie
di appartenenza collegata alla tabella serie_tab.

             set_tab
+----+------------+---------+----------+
| ID | NAME_SET   | N_PHOTO | NAME_MOD |
+----+------------+---------+----------+
| // | name01_set |    16   |  name01  |
+----+------------+---------+----------+
| // | name02_set |    12   |  name02  |
+----+------------+---------+----------+
id, il nome del set di foto che contiene le immagini, il numero di foto che contiene
e il collegamento al nome_mod in mod_tab.
Sicuramente ci saranno delle ingenuità nelle tabelle, come ad esempio le colonne N_ che indicano il numero di oggetti che contengono, ho già spiegato che penso di utilizzare questi numeri per farli spuntare fuori quando si passa il mouse sopra l'oggetto, magari non servono nel database, anche perchè c'è la possibilità che in quel set possano essere aggiunte altre foto in futuro.
Ora se da una parte mi ha agevolato di parecchio il lavoro dall'altra mi crea un nuovo dilemma. Fino ad ora già con i pochi test (rispetto all'esempio di sopra ho creato sette utenti di prova nella colonna NAME_MOD coi rispettivi set) ho perso un bel po' di tempo per creare tutte le tabelle e riempirle, senza contare che ancora non mi sono dedicato alla galleria fotografica che è molto più grossa rispetto a queste due tre tabelle.
Per ora volevo sapere se l'unico modo per creare e riempire le tabelle sia quello manuale o ne esiste uno più comodo?
 

DispatchCode

Moderatore
Staff Forum
Utente Èlite
2,208
1,845
CPU
Intel I9-10900KF 3.75GHz 10x 125W
Dissipatore
Gigabyte Aorus Waterforce X360 ARGB
Scheda Madre
Asus 1200 TUF Z590-Plus Gaming ATX DDR4
HDD
1TB NVMe PCI 3.0 x4, 1TB 7200rpm 64MB SATA3
RAM
DDR4 32GB 3600MHz CL18 ARGB
GPU
Nvidia RTX 3080 10GB DDR6
Audio
Integrata 7.1 HD audio
Monitor
LG 34GN850
PSU
Gigabyte P850PM
Case
Phanteks Enthoo Evolv X ARGB
Periferiche
MSI Vigor GK30, mouse Logitech
Net
FTTH Aruba, 1Gb (effettivi: ~950Mb / ~480Mb)
OS
Windows 10 64bit / OpenSUSE Tumbleweed
Ti rispondo prima a una domanda che non hai fatto, ed è in merito al template: puoi cercare template Material Design o Bootstrap in rete. Ce ne sono sia a pagamento sia free.

serie_tab

il primo è ovviamente l'id, il secondo il nome della serie e la terza il numero di modelli che contiene la serie (pensavo mi servisse in fututo per far uscire il numeretto quando si passa sopra col mouse, se non serve lo posso eliminare).

Se ho capito bene la tabella rappresenta le categorie delle tue foto.
Il "numero di serie" non ti serve, lo puoi ricavare facendo una query sull'altra tabella. Una cosa tipo:

SQL:
SELECT COUNT(*) FROM mod_tab WHERE id_serie_tab = N;

Cosa importante: vedo che stai associando per "nome", non farlo. Usa sempre gli ID numerici quando puoi (questioni di efficienza e praticità), e tu puoi. Quindi la colonna SERIE_ID conterrà rispettivamente 1 e 2.
Indica anche questa colonna come "chiave esterna".

Vale la stessa considerazione per la tabella successiva: utilizza gli ID univoci e non i nomi.

La tabella SET_TAB non ho capito esattamente cosa memorizzi. Cioè, il "name_set" è il nome della cartella nella quale trovi le immagini?
Non ti conviene utilizzare solo il nome della cartella, in tal caso. Ti conviene utilizzare il path relativo.

Per generare i dati puoi utilizzare ad esempio: https://www.generatedata.com/ o http://filldb.info/dummy
 

pentothal

Utente Attivo
821
209
CPU
CPU Intel Core 2 Duo E8500
Scheda Madre
Scheda Madre Asus P5KPL intel® Core™2 Extreme sk775
HDD
500gb
RAM
2pz MEMORIA RAM KINGSTON 1 GB DDR II
GPU
S. Video 9600 GT Point Of View GeForce 9600GT 512mb
Case
CABINET CASE AT-8 MODDING 500W TIPO BMW
OS
Windows
Ti rispondo prima a una domanda che non hai fatto, ed è in merito al template: puoi cercare template Material Design o Bootstrap in rete. Ce ne sono sia a pagamento sia free.
è che in realtà adesso non ho necessità di un template, poichè vedo la questione molto lontana ancora, prima devo risolvere le mie lacune con php e mysql, saranno due settimane che ho iniziato a studiarlo e neanche a tempo pieno.
Poi il template volevo crearmelo da solo, ho già usato html, css e js in passato, ma siccome era un "passatempo" dell'epoca ormai mi sono arrugginito e devo ripassare tutto. Grazie comunque, se nel caso mi passa la voglia di sperimentare seguo il tuo consiglio.

Se ho capito bene la tabella rappresenta le categorie delle tue foto.
Il "numero di serie" non ti serve, lo puoi ricavare facendo una query sull'altra tabella. Una cosa tipo:

SQL:
SELECT COUNT(*) FROM mod_tab WHERE id_serie_tab = N;


Cosa importante: vedo che stai associando per "nome", non farlo. Usa sempre gli ID numerici quando puoi (questioni di efficienza e praticità), e tu puoi. Quindi la colonna SERIE_ID conterrà rispettivamente 1 e 2.
Indica anche questa colonna come "chiave esterna".

Vale la stessa considerazione per la tabella successiva: utilizza gli ID univoci e non i nomi.
Si, questa mattina a mente fresca ho ripensato a tutta la struttura delle tabelle e sono arrivato alla stessa conclusione, che è meglio usare l'id come chiave esterna e, quando mi serve, richiamare solo il "NAME_" per mostrarlo nella pagina.

La tabella SET_TAB non ho capito esattamente cosa memorizzi. Cioè, il "name_set" è il nome della cartella nella quale trovi le immagini?
Non ti conviene utilizzare solo il nome della cartella, in tal caso. Ti conviene utilizzare il path relativo.
Si, il "nome_set" è anche la cartella che contiene le immagini. Però non capisco lo scopo di inserire il path relativo (per mia ignoranza ovviamente), visto che quella sezione mi elenca tutti i set relativi al nome, magari il path mi servirebbe più nella tabella photo_tab (che sto creando oggi) e invece che andarmi a riempire la tabella singolarmente con ogni nome delle foto, andare ad inserire il percorso nella tabella, visto che sto elencando una ad una le foto e assieme al nome delle foto sto creando delle colonne che riportano al name_mod, name_set e name_serie relativi a quella singola foto, è troppo, forse mi conviene inserire il semplice path e poi andare a dire a php di leggermi quella cartella ed estrarre le foto

Per generare i dati puoi utilizzare ad esempio: https://www.generatedata.com/ o http://filldb.info/dummy
Adesso sto utilizzando libreoffice per creare le tabelle e db.
 

DispatchCode

Moderatore
Staff Forum
Utente Èlite
2,208
1,845
CPU
Intel I9-10900KF 3.75GHz 10x 125W
Dissipatore
Gigabyte Aorus Waterforce X360 ARGB
Scheda Madre
Asus 1200 TUF Z590-Plus Gaming ATX DDR4
HDD
1TB NVMe PCI 3.0 x4, 1TB 7200rpm 64MB SATA3
RAM
DDR4 32GB 3600MHz CL18 ARGB
GPU
Nvidia RTX 3080 10GB DDR6
Audio
Integrata 7.1 HD audio
Monitor
LG 34GN850
PSU
Gigabyte P850PM
Case
Phanteks Enthoo Evolv X ARGB
Periferiche
MSI Vigor GK30, mouse Logitech
Net
FTTH Aruba, 1Gb (effettivi: ~950Mb / ~480Mb)
OS
Windows 10 64bit / OpenSUSE Tumbleweed
è che in realtà adesso non ho necessità di un template, poichè vedo la questione molto lontana ancora, prima devo risolvere le mie lacune con php e mysql, saranno due settimane che ho iniziato a studiarlo e neanche a tempo pieno.
Poi il template volevo crearmelo da solo, ho già usato html, css e js in passato, ma siccome era un "passatempo" dell'epoca ormai mi sono arrugginito e devo ripassare tutto. Grazie comunque, se nel caso mi passa la voglia di sperimentare seguo il tuo consiglio.

A meno che tu non sia interessato al front-end, ti eviti un pò di grattacapi, ad iniziare dai problemi con le risoluzioni.
Poi rimane un consiglio, se vuoi far tutto da zero, sei libero di farlo.

Si, il "nome_set" è anche la cartella che contiene le immagini. Però non capisco lo scopo di inserire il path relativo (per mia ignoranza ovviamente), visto che quella sezione mi elenca tutti i set relativi al nome, magari il path mi servirebbe più nella tabella photo_tab (che sto creando oggi) e invece che andarmi a riempire la tabella singolarmente con ogni nome delle foto, andare ad inserire il percorso nella tabella, visto che sto elencando una ad una le foto e assieme al nome delle foto sto creando delle colonne che riportano al name_mod, name_set e name_serie relativi a quella singola foto, è troppo, forse mi conviene inserire il semplice path e poi andare a dire a php di leggermi quella cartella ed estrarre le foto

Ok, pensavo fosse già la tua tabella "finale" quella.
Ti converrebbe anche mantenere il nome originale e darne uno univoco tuo. Ad esempio facendo un MD5 del nome. Se ad esempio ti ritrovi con "foto1" e "foto1", che succede?
Rinominandole le mantieni univoche, e mostri il nome originale. Specie se poi vorrai consentire l'upload anche.

Adesso sto utilizzando libreoffice per creare le tabelle e db.

LibreOffice? ?
Uno strumento semplice è PhpMyadmin. Altrimenti esiste anche MySQL Workbench ed altri ancora.
 

pentothal

Utente Attivo
821
209
CPU
CPU Intel Core 2 Duo E8500
Scheda Madre
Scheda Madre Asus P5KPL intel® Core™2 Extreme sk775
HDD
500gb
RAM
2pz MEMORIA RAM KINGSTON 1 GB DDR II
GPU
S. Video 9600 GT Point Of View GeForce 9600GT 512mb
Case
CABINET CASE AT-8 MODDING 500W TIPO BMW
OS
Windows
A meno che tu non sia interessato al front-end, ti eviti un pò di grattacapi, ad iniziare dai problemi con le risoluzioni.
Poi rimane un consiglio, se vuoi far tutto da zero, sei libero di farlo.
Ci sarà tantissima ingenuità dietro le mie idee, sicuramente, pensavo di integrare poi il codice php ad un template definitivo dopo, ma forse mi imbatterò in qualche problema che adesso ignoro. Dici di iniziare a pensare prima al template?
Ok, pensavo fosse già la tua tabella "finale" quella.
Ti converrebbe anche mantenere il nome originale e darne uno univoco tuo. Ad esempio facendo un MD5 del nome. Se ad esempio ti ritrovi con "foto1" e "foto1", che succede?
Rinominandole le mantieni univoche, e mostri il nome originale. Specie se poi vorrai consentire l'upload anche.
Il fatto è che mi sfugge completamente cosa vuol dire MD5, ho anche cercato in rete ma la spiegazione era ancora più complicata. Ma i nomi delle foto sono già univoche, anche perchè questo progetto lo iniziai tempo fa solo con html non avevo neanche idea di cosa fosse il php e le rinominai con un software proprio per non confonderle con altre, se ti dico cosa stavo facendo con l'html ti metterai le mani nei capelli.
Dici che è comunque meglio creare una tabella con tutti i nomi delle foto aggiungendone uno univoco per sicurezza? mi spaventa un po' questa cosa perchè sono centinaia e centinaia di foto che ho già archiviato, più quelle che sto pensando di digitalizzare. Mi prenderà davvero tantissimo tempo... ma se è necessario....
La questione dell'upload non l'avevo nemmeno pensata, una buona idea.

LibreOffice? ?
Uno strumento semplice è PhpMyadmin. Altrimenti esiste anche MySQL Workbench ed altri ancora.
No? ?
lo trovo abbastanza intuitivo e facile da usare. E' una cagata?
PhpMyadmin mi manda in confusione totale, per l'interfaccia intendo, se dimezzo la finestra per affiancarla ad un'altra spariscono le cose, sembra tutto troppo caotico.
provo anche MySQL Workbench visto che me lo hai consigliato. Grazie.
 

DispatchCode

Moderatore
Staff Forum
Utente Èlite
2,208
1,845
CPU
Intel I9-10900KF 3.75GHz 10x 125W
Dissipatore
Gigabyte Aorus Waterforce X360 ARGB
Scheda Madre
Asus 1200 TUF Z590-Plus Gaming ATX DDR4
HDD
1TB NVMe PCI 3.0 x4, 1TB 7200rpm 64MB SATA3
RAM
DDR4 32GB 3600MHz CL18 ARGB
GPU
Nvidia RTX 3080 10GB DDR6
Audio
Integrata 7.1 HD audio
Monitor
LG 34GN850
PSU
Gigabyte P850PM
Case
Phanteks Enthoo Evolv X ARGB
Periferiche
MSI Vigor GK30, mouse Logitech
Net
FTTH Aruba, 1Gb (effettivi: ~950Mb / ~480Mb)
OS
Windows 10 64bit / OpenSUSE Tumbleweed
Ci sarà tantissima ingenuità dietro le mie idee, sicuramente, pensavo di integrare poi il codice php ad un template definitivo dopo, ma forse mi imbatterò in qualche problema che adesso ignoro. Dici di iniziare a pensare prima al template?

No, va bene secondo me iniziare a pensare l'applicazione a partire dal database. Sono comunque due cose distinte: alla fine ciò che farai nella parte front-end è solo un'interfaccia verso i dati che hai a database e che elabori lato server (con PHP).

Il fatto è che mi sfugge completamente cosa vuol dire MD5, ho anche cercato in rete ma la spiegazione era ancora più complicata. Ma i nomi delle foto sono già univoche, anche perchè questo progetto lo iniziai tempo fa solo con html non avevo neanche idea di cosa fosse il php e le rinominai con un software proprio per non confonderle con altre, se ti dico cosa stavo facendo con l'html ti metterai le mani nei capelli.
Dici che è comunque meglio creare una tabella con tutti i nomi delle foto aggiungendone uno univoco per sicurezza? mi spaventa un po' questa cosa perchè sono centinaia e centinaia di foto che ho già archiviato, più quelle che sto pensando di digitalizzare. Mi prenderà davvero tantissimo tempo... ma se è necessario....
La questione dell'upload non l'avevo nemmeno pensata, una buona idea.

Il funzionamento di MD5 lascialo perdere: ciò che devi sapere è che produce un hash, che è una "stringa" univoca (tralasciando le possibili collisioni).
Esempio: Tom's Hardware produce come MD5: c9e968bd92220944137a7b73e1d232ae. Se provi anche tu utilizzando un tool online, vedrai che produrrà lo stesso hash.

Se vuoi scoprire dei doppioni (immagini uguali) calcoli l'hash dell'immagine (magari usando SHA1).
Sono tutti algoritmi presenti in PHP, devi solo fare riferimento alla doc che trovi sul sito.

In upload invece puoi utilizzare tempnam() prima di spostare il file (move_uploaded_file()).

Comunque tutto il discorso dipende da ciò che vuoi realizzare: cosa vuoi fare esattamente? Perchè posso fare infiniti discorsi su diversi scenari, ma senza sapere cosa vuoi fare di preciso, diventa difficile darti consigli più mirati e utili.

Se devi salvare a database non devi star lì a inserire i record "a mano". Crei uno script in PHP che legge tutti i file presenti nelle cartelle, e che va a farti le insert a database.

No? ?
lo trovo abbastanza intuitivo e facile da usare. E' una cagata?
PhpMyadmin mi manda in confusione totale, per l'interfaccia intendo, se dimezzo la finestra per affiancarla ad un'altra spariscono le cose, sembra tutto troppo caotico.
provo anche MySQL Workbench visto che me lo hai consigliato. Grazie.

Non ho mai sentito utilizzare LibreOffice per creare un database.
PhpMyadmin no lo amo particolarmente, ma per un utilizzo come il tuo secondo me va bene.

Ormai comunque con gli IDE puoi anche gestire da lì il database. Che editor/IDE utilizzi?
 

pentothal

Utente Attivo
821
209
CPU
CPU Intel Core 2 Duo E8500
Scheda Madre
Scheda Madre Asus P5KPL intel® Core™2 Extreme sk775
HDD
500gb
RAM
2pz MEMORIA RAM KINGSTON 1 GB DDR II
GPU
S. Video 9600 GT Point Of View GeForce 9600GT 512mb
Case
CABINET CASE AT-8 MODDING 500W TIPO BMW
OS
Windows
No, va bene secondo me iniziare a pensare l'applicazione a partire dal database. Sono comunque due cose distinte: alla fine ciò che farai nella parte front-end è solo un'interfaccia verso i dati che hai a database e che elabori lato server (con PHP).
Ok, continuo allora con i test di php e mysql, poi butto tutto dentro ad un template se mai riesco a uscirne vivo.


Il funzionamento di MD5 lascialo perdere: ciò che devi sapere è che produce un hash, che è una "stringa" univoca (tralasciando le possibili collisioni).
Esempio: Tom's Hardware produce come MD5: c9e968bd92220944137a7b73e1d232ae. Se provi anche tu utilizzando un tool online, vedrai che produrrà lo stesso hash.

Se vuoi scoprire dei doppioni (immagini uguali) calcoli l'hash dell'immagine (magari usando SHA1).
Sono tutti algoritmi presenti in PHP, devi solo fare riferimento alla doc che trovi sul sito.

In upload invece puoi utilizzare tempnam() prima di spostare il file (move_uploaded_file()).
Capito, più o meno, per l'upload è ancora prestino, ora risolvo prima sta questione della galleria fotografica, poi devo affrontare quella video.
Comunque tutto il discorso dipende da ciò che vuoi realizzare: cosa vuoi fare esattamente? Perchè posso fare infiniti discorsi su diversi scenari, ma senza sapere cosa vuoi fare di preciso, diventa difficile darti consigli più mirati e utili.
In sintesi, tutto questo progetto è solo un pretesto per studiare il php e mysql, riprendere il discorso che ho lasciato anni fa con html, js, css ecc... e poi in futuro crearmi un sito personale.
Voglio creare un sitarello locale sul mio nas, una cosa da condividere solo con amici e l'idea era quella di "copiare" il template di un famoso sito hot che non cito, i miei amici avrebbero preso il posto delle "star" con ognuno una propria galleria immagini e video, una descrizione della "star" ecc ecc.
ma mi sono imbattuto nel problema descritto all'inizio del post. Poi l'idea è cambiata in corso d'opera appena ho scoperto l'uso del database e ho pensato alla possibilità di inserire anche la famiglia in questo progetto, quindi anche i membri della mia famiglia avranno una loro galleria con descrizioni e roba varia. Il template non sarà più quello che avevo pensato, anche se alla buonanima di mio nonno non sarebbe dispiaciuto, ma ne penserò uno in futuro.
il sitarello avrà una Home con i video e foto random o le più votate o le più viste, poi ci penserò...
Una sezione galleria fotografica e una video e i profili delle "star" con descrizione ecc, tutta sta roba avrà la possibilità di essere commentata e votata. Quella che sto affrontando adesso è solo la galleria fotografica.

Se devi salvare a database non devi star lì a inserire i record "a mano". Crei uno script in PHP che legge tutti i file presenti nelle cartelle, e che va a farti le insert a database.
Un codice per leggere all'interno della cartello già ce l'ho, è quello che ho postato nel primo post, magari vedo come fare per mandare il risultato al database.

Non ho mai sentito utilizzare LibreOffice per creare un database.
PhpMyadmin no lo amo particolarmente, ma per un utilizzo come il tuo secondo me va bene.
Beh, dai, non è malaccio, è più pulito di PhpMyAdmin e per quello che faccio li riesco a farlo bene anche su libreoffice, questa è la schermata principale:
Cattura01.PNG

questa è la vista sulle tabelle
tabelle.PNG

e una comoda vista per collegare due tabelle con le chiavi esterne
chiaveesterna.PNG

Ormai comunque con gli IDE puoi anche gestire da lì il database. Che editor/IDE utilizzi?
Sto usando sublime text.
 

DispatchCode

Moderatore
Staff Forum
Utente Èlite
2,208
1,845
CPU
Intel I9-10900KF 3.75GHz 10x 125W
Dissipatore
Gigabyte Aorus Waterforce X360 ARGB
Scheda Madre
Asus 1200 TUF Z590-Plus Gaming ATX DDR4
HDD
1TB NVMe PCI 3.0 x4, 1TB 7200rpm 64MB SATA3
RAM
DDR4 32GB 3600MHz CL18 ARGB
GPU
Nvidia RTX 3080 10GB DDR6
Audio
Integrata 7.1 HD audio
Monitor
LG 34GN850
PSU
Gigabyte P850PM
Case
Phanteks Enthoo Evolv X ARGB
Periferiche
MSI Vigor GK30, mouse Logitech
Net
FTTH Aruba, 1Gb (effettivi: ~950Mb / ~480Mb)
OS
Windows 10 64bit / OpenSUSE Tumbleweed
In sintesi, tutto questo progetto è solo un pretesto per studiare il php e mysql, riprendere il discorso che ho lasciato anni fa con html, js, css ecc... e poi in futuro crearmi un sito personale.
Voglio creare un sitarello locale sul mio nas, una cosa da condividere solo con amici e l'idea era quella di "copiare" il template di un famoso sito hot che non cito, i miei amici avrebbero preso il posto delle "star" con ognuno una propria galleria immagini e video, una descrizione della "star" ecc ecc.
ma mi sono imbattuto nel problema descritto all'inizio del post. Poi l'idea è cambiata in corso d'opera appena ho scoperto l'uso del database e ho pensato alla possibilità di inserire anche la famiglia in questo progetto, quindi anche i membri della mia famiglia avranno una loro galleria con descrizioni e roba varia. Il template non sarà più quello che avevo pensato, anche se alla buonanima di mio nonno non sarebbe dispiaciuto, ma ne penserò uno in futuro.
il sitarello avrà una Home con i video e foto random o le più votate o le più viste, poi ci penserò...
Una sezione galleria fotografica e una video e i profili delle "star" con descrizione ecc, tutta sta roba avrà la possibilità di essere commentata e votata. Quella che sto affrontando adesso è solo la galleria fotografica

Ok, ora mi è più chiaro.
Ti conviene allora avere il nome dell'immagine a database anche.

Un codice per leggere all'interno della cartello già ce l'ho, è quello che ho postato nel primo post, magari vedo come fare per mandare il risultato al database.

Si, e quello va bene. Però se non vuoi inserire tutto manualmente a db ti è sufficiente utilizzarlo per fare le query, così nel giro di poco riempi il database. Se lo fai a mano impazzisci (certo, se dovessi inserire io le mie foto, ci impiegherei non più di una decina di minuti...?).

In merito a LibreOffice, usa ciò che preferisci.
 

pentothal

Utente Attivo
821
209
CPU
CPU Intel Core 2 Duo E8500
Scheda Madre
Scheda Madre Asus P5KPL intel® Core™2 Extreme sk775
HDD
500gb
RAM
2pz MEMORIA RAM KINGSTON 1 GB DDR II
GPU
S. Video 9600 GT Point Of View GeForce 9600GT 512mb
Case
CABINET CASE AT-8 MODDING 500W TIPO BMW
OS
Windows
Ok, ora mi è più chiaro.
Ti conviene allora avere il nome dell'immagine a database anche.



Si, e quello va bene. Però se non vuoi inserire tutto manualmente a db ti è sufficiente utilizzarlo per fare le query, così nel giro di poco riempi il database. Se lo fai a mano impazzisci
Non so se quel codice non andava bene ma mi ha dato dei problemi, ne ho riscritto un altro più semplice aggiungendo un "insert" e mi è andata bene, ho dovuto comunque mettere mano alla tabella per inserire i vari id per le chiavi esterne e ho inserito i path di ogni file, anche questo è stato un cavolo di lavoraccio. Mi servirebbe un consiglio su questo argomento. Dici mi convenga che tutte le immagini vengano contenute in una tabella o di fare più tabelle in base alle persone? perchè solo con questo test ho riempito due pagine, nonostante i vari "name" contenessero tra le due alle quattro foto.
Un'altra domanda, vorrei che le foto e i video contenessero vari tag, andrebbero inseriti nella tabella? sto tentando di trovare una soluzione in rete ma sai che se scrivo il termi "tag" esce di tutto tranne quello che cerco, forse ha una sua specifica terminologia che ignoro. E' una cosa che va fatta lato database o altro?

(certo, se dovessi inserire io le mie foto, ci impiegherei non più di una decina di minuti...?).
ne hai poche o perchè riusciresti a farlo in quel lasso di tempo? perchè nel secondo caso avrei del lavoro per te ?

In merito a LibreOffice, usa ciò che preferisci.
per adesso mi sto trovando bene per quello che mi serve, ancora devo provare quello che mi hai consigliato nello scorso post.
 

DispatchCode

Moderatore
Staff Forum
Utente Èlite
2,208
1,845
CPU
Intel I9-10900KF 3.75GHz 10x 125W
Dissipatore
Gigabyte Aorus Waterforce X360 ARGB
Scheda Madre
Asus 1200 TUF Z590-Plus Gaming ATX DDR4
HDD
1TB NVMe PCI 3.0 x4, 1TB 7200rpm 64MB SATA3
RAM
DDR4 32GB 3600MHz CL18 ARGB
GPU
Nvidia RTX 3080 10GB DDR6
Audio
Integrata 7.1 HD audio
Monitor
LG 34GN850
PSU
Gigabyte P850PM
Case
Phanteks Enthoo Evolv X ARGB
Periferiche
MSI Vigor GK30, mouse Logitech
Net
FTTH Aruba, 1Gb (effettivi: ~950Mb / ~480Mb)
OS
Windows 10 64bit / OpenSUSE Tumbleweed
Scusa se sarò un po' stringato nella risposta, da smartphone non mi trovo comodo.

Dici mi convenga che tutte le immagini vengano contenute in una tabella o di fare più tabelle in base alle persone? perchè solo con questo test ho riempito due pagine, nonostante i vari "name" contenessero tra le due alle quattro foto.
Un'altra domanda, vorrei che le foto e i video contenessero vari tag, andrebbero inseriti nella tabella? sto tentando di trovare una soluzione in rete ma sai che se scrivo il termi "tag" esce di tutto tranne quello che cerco, forse ha una sua specifica terminologia che ignoro. E' una cosa che va fatta lato database o altro?

Una tabella sola, dove avrai per ogni record anche il riferimento (chiave esterna, un id).

In merito ai tags: pensandoci ora, la prima idea che mi viene in mente è fare una tabella dove associ la foto ai tags. Non so se questi tags sono mappati, e quindi sono ben definiti, o se si possono inventare.
Se sono mappati secondo me ti conviene associare l'id del tag con l'id della foto (quindi avrai N righe, che corrisponderanno a N tags associati).
Ma è un'idea di mezzanotte, magari domani mi rendo conto di averti detto una stupidaggine...

Per riassumere: avrai 3 tabelle, una per le foto, una per i tags e una dove associ un tag a una foto. Se una foto ha N tag, nella tabella associativa, avrai N righe con quella foto.

ne hai poche o perchè riusciresti a farlo in quel lasso di tempo? perchè nel secondo caso avrei del lavoro per te ?

Esatto, ne ho pochissime. :P
 

Entra

oppure Accedi utilizzando
Discord Ufficiale Entra ora!