Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 16
  1. #1

    Struttura ottimale per tabella db Configurazione

    ciao a tutti: secondo voi qual è la soluzione migliore tra queste due strutture di tabella database, per memorizzare una configurazione?

    1)
    codice:
    |   PARAMETRO   |   VALORE   |
    |   param_x     |     10     |
    |   param_y     |   false    |
    2)
    codice:
    |   PARAM_X   |   PARAM_Y   |   PARAM_Z   |
    |       10    |    false    |     ciao    |
    In termini di gestione (aggiunta/rimozione parametri), vincoli ai tipi di valori e risorse database usate (1 riga contro tante righe), ecc...


    ciao,
    jack.

  2. #2
    Utilizzare una tabella di un database per un solo record di dati (secondo esempio) e' un po' illogico.

    Solitamente suggerisco di utilizzare una struttura come la prima (un dizionario) che viene "cachato" su un file (es. configuration.php). Nel file possono venire definite delle costanti, un array globale oppure una classe singleton. Ogni volta che l'utente va a modificare la configurazione nel database, viene aggiornato anche il file. In questo modo si riduce il carico del server (viene letto il file di configurazione invece del database).

  3. #3
    il problema è che non sempre ci sono i permessi per scrivere files (come sotto windows)

  4. #4
    il problema è che non sempre ci sono i permessi per scrivere files (come sotto windows)
    Mi risulta difficile credere che anche il piu' economico piano di hosting non permette di scrivere sui file (che equivale a dire che non permette nemmeno l'upload).

    In ogni caso, l'utilizzo del sistema di caching era una aggiunt/ottimizzazione, non un requisito della soluzione proposta.

  5. #5
    no l'upload dei files solitamente è permesso, mentre la scrittura di files tramite php è ristretta alle cartelle speciali tipo "public" o "mdb-database" dove i permessi scrittura/esecuzione, ecc. sono preimpostati.


    tra le 2 soluzioni, senza poter contare sulla scrittura files tu comunque ritieni migliore (anche come carico server) la prima?

  6. #6
    no l'upload dei files solitamente è permesso
    Se l'upload dei file e' permesso, significa che esiste una cartella dove l'utente che esegue il motore PHP ha i privilegi di scrittura, ossia una cartella dove puo' creare un file tramite le funzioni di manipolazione dei file, ossia una cartella dove e' possibile implementare quanto suggerito.

    mentre la scrittura di files tramite php è ristretta alle cartelle speciali tipo "public" o "mdb-database" dove i permessi scrittura/esecuzione, ecc. sono preimpostati.
    Controlla meglio. Se php puo' eseguire un move_uploaded_file() allora puo' anche scrivere in quella cartella tramite fopen() etc.

  7. #7
    no guarda sono sicuro. e se nel mio server tropicale è così significa che una soluzione che richiede scrittura di files non può essere imposta a tutti.

    che ne dici della possibilità di impostare valori di default nella struttura #2? se si utilizza la 1, bisognerebbe creare un'altra colonna e le operazioni di "reset" sarebbero molto più complesse.

  8. #8
    no guarda sono sicuro. e se nel mio server tropicale è così significa che una soluzione che richiede scrittura di files non può essere imposta a tutti.
    Hai provato ad eseguire un file_put_contents() verso un file contenuto nella directory dove puoi fare l'upload? Che errore viene restituito dal PHP?

    che ne dici della possibilità di impostare valori di default nella struttura #2?
    Che cosa intendi "impostare valori di default"?
    Come vorresti strutturare la tabelle per contenere sia i valori di default che quelli personalizzati dall'utente?

    se si utilizza la 1, bisognerebbe creare un'altra colonna e le operazioni di "reset" sarebbero molto più complesse.
    Per eseguire un "reset" dell'intera configurazione e' sufficiente una sola query di UPDATE.

  9. #9
    nel mio host l'upload funziona, ma non so dirti su "move_uploaded_file", credo di no, visto che i files caricati vanno in una cartella temporanea.
    la scrittura di files tramite fopen, ecc... non funziona al di fuori della cartella con permessi di scrittura "/public/".

    tornando a noi, nella struttura #2 si può settare un valore di default per la colonna, per cui il reset della config avverrebbe tramite un truncate + insert values() che immette quelli di default.
    nella struttura #1 invece o usi le subquery se hai i defaultvalues in un'altra colonna oppure non puoi memorizzarli nel db stesso.

  10. #10
    nel mio host l'upload funziona, ma non so dirti su "move_uploaded_file", credo di no, visto che i files caricati vanno in una cartella temporanea.
    la scrittura di files tramite fopen, ecc... non funziona al di fuori della cartella con permessi di scrittura "/public/".
    Dalle tue parole sembra chiaro tu non abbia mai eseguito un upload in PHP (es. utilizzando move_uploaded_file()), inoltre, come gia' scritto, se il tuo hosting fornisce una cartalla con i permessi di scrittura, allora la soluzione proposta PUO' essere implementata.

    tornando a noi, nella struttura #2 si può settare un valore di default per la colonna, per cui il reset della config avverrebbe tramite un truncate + insert values() che immette quelli di default.
    E perche' non un semplice UPDATE invece di due query?

    nella struttura #1 invece o usi le subquery se hai i defaultvalues in un'altra colonna oppure non puoi memorizzarli nel db stesso.
    Convinto tu, in una tabella come questa:

    Codice PHP:
    CREATE TABLE options (
      
    id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
      
    name VARCHAR(255NULL,
      
    value TEXT NULL,
      
    default_value TEXT NULL,
      
    PRIMARY KEY(id)
    ); 
    E' sufficiente un "UPDATE options SET value = default_value" per effettuare il reset.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.