Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    Consiglio per normalizzare questi dati mysql

    Come da titolo vorrei un consiglio per migliorarmi:

    Allora un utente ha la possibilità di aggiungere 10 foto tramite form via pannello admin. Ogni utente non è obbligato a metterne 10 ma ne può mettere anche solo 2 o 3 come desidera.

    Le foto devono poi essere richiamate per crear euna sorta di "gallery".

    Io avevo risolto così:

    TABELLA PINCOPALLO
    foto1 foto2 foto3 ... foto10
    DSC1100.jpg | DSC5490.jpg | etc

    Poi per visualizzarle nella galleria ho fatto un contrllo IF sulla foto:

    if ( $foto2!='' )


    { //se è presente la foto la faccio apparire


    echo '[img]../' . $row['foto2'] . '[/img]';

    }

    else

    { echo "[img]nussuna_immagine[/img]"; }

    Mi rendo conto che non è la soluzione più "professionale" però funziona perfettamente. Ora però vorrei migliorarmi e vorrei sapere come normalizzereste i dati e come potreste fare per richiamarli in modo corretto.

    Personalmente avevo pensato a creare una tabella separata da "pincopallo" chisamata foto:

    Tabella "foto"
    id_foto | nome foto| id_articolo
    auto increment | DSC000.jpg | lo stesso dell'articolo per collegare il tutto.

    I problemi di questo sistema però sono 2:

    1) nel form di aggiunta foto devo per forza inserire 10 campi per poter aggiungere le varie foto e relativo nome. ??

    2) Come faccio a visualizzare poi le foto che ho inserito in un determinato articolo? tipo se ci sono solo la 2 e la 3 foto e le altre no come le "estrapolo" dal database?
    http://www.targetweb.it - Web design, guide e risorse utili su Html5, jQuery, Css3

  2. #2
    Ma le foto sono legate ad un articolo? Se è così dovresti avere ad esempio:

    tabella: ARTICOLI:
    campi: ID | TESTO | ecc.

    tabella: FOTO
    campi: ID_ARTICOLO | NOME_FOTO | ecc.

    a questo punto quando vengono inserite le foto nella tabella basta legarle ad un particolare articolo tramite il suo ID.
    Ad esempio:

    ARTICOLI:
    1 | Primo articolo
    2 | Secondo articolo
    ...

    FOTO:
    1 | foto1
    1 | foto2
    1 | foto3
    2 | foto1
    2 | foto2
    ...

    Per selezionare le foto relative ad un particolare articolo basta effettuare una join tra le due tabelle:

    SELECT f.nome_foto FROM foto f, articoli a WHERE f.id_articolo = a.id
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  3. #3
    Si avevo pensato la stessa cosa, però anche in questo caso dovrei usare 10 campi giusto? però sarebbe più professionale e veloce recuperare i dati...
    http://www.targetweb.it - Web design, guide e risorse utili su Html5, jQuery, Css3

  4. #4
    Se la struttura e' rigida, sono comunque previste 10 foto e il loro ordine e' importante (se ad esempio devi stampare una tabella con 10 caselle in cui metti la foto se c'e' e lasci vuoto se non c'e'), io lascerei la tabella non normalizzata. Tanto i controlli per foto presente/assente devi farli comunque, e ti risparmi una JOIN.

  5. #5
    Originariamente inviato da k.b
    Se la struttura e' rigida, sono comunque previste 10 foto e il loro ordine e' importante (se ad esempio devi stampare una tabella con 10 caselle in cui metti la foto se c'e' e lasci vuoto se non c'e'), io lascerei la tabella non normalizzata. Tanto i controlli per foto presente/assente devi farli comunque, e ti risparmi una JOIN.
    si infatti, ho provato a usare un iframe però non va perchè non posso prevedere che id avrà l'articolo... e anche se usassi un select dell'ultimo id in tabella l'utente potrebbe uscire senza scriver ee salvere nulla andando a creare un loop ridondante... quindi penso che non normalizzero niente XD anche perchè in ogni caso dovrei controllare la presenza di dati nel db.. e onestamente non sono amante dei JOIN lol
    http://www.targetweb.it - Web design, guide e risorse utili su Html5, jQuery, Css3

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.