• User

    Gestione utenti, foto preferite ecc, ecc

    Sto creando un portale in php e mysql, ho un dubbio, o meglio, mi sono totalmente impuntato.
    In questo portale ogni utente può (o meglio potrebbe dato ora ho problemi a farlo andare) aggiungere delle foto presenti in una tabella del database come sue preferite.

    Fino a questo punto ho creato la tabella degli utenti con questi campi.

    tabella_utenti
    id_utente (primary, auto increment)
    username
    password
    attivo
    (e altre impostazioni del utente)

    La tabella delle foto.
    **tab_image
    **foto (sarebbe il link all'immagine)
    descimage
    nomeimage
    titolo
    data
    attivaIl dubbio viene ora, avevo pensato di fare un ulteriore tabella con questi campi:
    id (auto increment)
    id_img (id del immagine)
    id_utente (l'id del utente)

    ma ora non riesco a trovare il modo di far interagire il tutto, nel senso, ovviamente dentro la tabella delle foto prerite ho inserito tutti i valori, ma poi? Non riesco a creare una query funzionante allo scopo.... mi potete dare una mano??

    Altra cosa, come posso fare per non avere doppioni delle foto uguali di un utente?

    Esempio.
    id 1
    id_img 122
    id_utente 4

    id 2
    id_img 122
    id_utente 4

    Spero di essermi spiegato, fatico a capirmi anche io, ho passato tutto il giorno a rendere compatibile un sito con ie6... 😮


  • User Attivo

    Ciao EaMania,
    se ho capito bene il problema, ti occorre fare una query JOIN, impostando l'uguaglianza sul campo id_utente. Una cosa del tipo:

    **SELECT .tabella_utenti, .tab_image FROM tabella_utenti LEFT JOIN tab_image ON id_utente.tabella_utenti=id_utente.tab_image

    In questo caso ottieni di accorpare tutti i campi come se fossere in un'unica tabella. La query scritta però non dovrebbe funzionare correttamente nel tuo caso dando un errore che deriva dall'aver usato nelle due tabelle campi con lo stesso nome, quindi o fai una selezione solo di alcuni campi, o usi un alias (SELECT id_utente.tabella_utenti as id_utente1).

    Per quanto concerne i doppioni la soluzione più intelligente è quella di rinominare sempre i file uploadati, creando dei nomi unici, sfruttando ad esempio l'id d'inserimento nel db e/o valori random a molti caratteri.
    Alternativamente, puoi lasciare il nome inalterato fecendo una query preventiva sul db per sincerarti che quel nome non sia già presente e solo in caso di omonimia aggiungi un suffisso, come un numero progressivo (es.: xxx_2).

    Spero di esserti stato d'aiuto!
    :ciauz: