Strutturare una tabella in funzione di dove deve finire il contenuto

Mi rendo conto che il titolo è complesso ma l'argomento lo è di più, ecco il problema.

Sto creando un'applicazione, un CMS per l'esattezza, per un museo virtuale.

In pratica devo fare il restyling del sito www.norino-martinis.it e vorrei portare tutto o quasi su un database in luogo di un più tradizionale sistema basato su XML e filesystem.

Ora ciò che mi preme di più adesso è come strutturare le tabelle, alcune cose funzionano già (prova in locale non mostrabile al pubblico ora come ora); per ora funziona l'autenticazione con due livelli: amministratore e documentarista; una pagina di prova con del testo diviso per argomenti.

Il tutto si inserisce tramite una sezione admin da dove una pagina PHP permette di inserire il testo strutturato in capitoli.

Ora però mi trovo ad un bivio, cioè le immagini: da un punto di vista formale posso tranquillamente creare una tabella che contenga almeno un campo blob in cui inserirle e un campo id che faccia da indice alle stesse.

Per mostrarle uso il metodo classico di un file in PHP richiamato nella pagina tramite l'elemento IMG dell'HTML e fin qui non ci sono problemi ma ecco il problema anzi due.

  • Creare una paginazione non è difficile ma dovrò anche prevedere i salti di ID dato che le immagini possono essere tolte creando dei vuoti nelle sequenze id=1, id=2... id=n
  • Vorrei sfruttare la stessa tabella per inserire anche le immagini che si rifanno al testo, non solo ad un elenco di immagini da mostrare in un album.

Nel caso due in pratica se del testo mostra un'immagine vorrei per la stessa che la fonte sia la stessa tabella sfruttata per l'album e non un'ulteriore tabella del database, oppure, ma ciò ne limita il numero, di inserire che so 3 campi blob per le immagini nella tabella che contiene l'articolo di testo, ovvio che ciò limita per forza di cose a tre le immagini inseribili per ogni capitolo.

Tre ovviamente è un numero arbitrario, ovvio che posso inserire anche dieci campi ma mi sembra comunque un approccio errato alla soluzione.

Comunque sia il file che mostra le immagini dovrà per forza portare altre informazioni via GET cioè oltre ID anche che so pagina_da_mostrare= per scrivere la giusta immagine nella giusta posizione, con una query del tipo che so "SELECT immagine, mime FROM immagini WHERE id = 1 AND pagina = index.php" ovvio è solo un esempio ma spero spieghi il problema.

Idee?

inviato 5 anni fa
Marco Grazia
X 0 X

Il primo problema non è in realtà un problema ma una condizione inevitabile quando si usa un ID autoincrement come chiave primaria.

La soluzione più semplice al secondo problema sarebbe stata quella di salvare i testi delle pagine in HTML così da poter inserire anche dei tag img. Le immagini dovevano essere salvate su file system.

Se però vuoi salvare tutte le immagini su database puoi introdurre un testo convenzionale da inserire nei documenti che faccia riferimento ad una particolare immagine e che, a run time, venga sostituito da questa.

Ad esempio potresti decidere che il testo {immagine 123} venga sostituito dall'immagine numero 123 del DB.

In questo modo, prima di visualizzare una pagina, ti basta sostituire tutti i testi simili al precedente con dei tag img che puntano allo script PHP che legge le immagini da DB.

 :bye:

risposto 5 anni fa
Gianni Tomasicchio
X 0 X

Il filesystem è da escludersi.

Il tag di posizione è un'idea ma mi obbliga ad un passaggio in più.

Credo che alla fine userò un secondo id con una tabella indice che associ ogni immagine al giosto record.

risposto 5 anni fa
Marco Grazia
X 0 X

Non ho capito l'utlima grase  ???

risposto 5 anni fa
Gianni Tomasicchio
X 0 X

Una tabella che contiene l'indice generale e uno per i testi alle quali le immaggini si devono riferire, è complesso da gestire ma permette di tenere in conto le associazioni.

risposto 5 anni fa
Marco Grazia
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda