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

    Legami amicizia in stile social netowork

    Salve a tutti sto proggettando una sorta di social netowork....

    Dopo molti tentativi e notti insonni a pensare come poter creare una tabella che mi permettesse di accogliere i legami di amicizia mi è venuto in mente di proggettare una tabella simile:

    Tabella amicizie: id, amico1, amico2 data_richiesta, data_accettazione, altre informazioni....

    Dove dentro amico1 e amico2 anderi a scrivere prima utente1,utente2 e poi utente2,utente1 cioè scriverei prima che l'utente1 è amico all'utente2 e poi scriverei che l'utente2 è amico dell'utente1 anche se questo a me sembra una cosa inutile in quanto il tutto mi sembra parecchio ridondante e soprattutto dovrei aggiornare due righe invece di una...

    Mi chiedevo se qualcuno di voi avesse già affrontato questo problema e come....
    Why so serious?????

  2. #2
    no...
    i campi amico1 e amico2 della tabella "amicizie" è opportuno che li fai relazionati sulla tabella "utenti" altrimenti oltre ad avere dati "ridondanti" hai problemi nella formulazione delle query

    poi ti consiglio di prevedere un campo INT(1) con valori:
    0=> richiesta non accettata
    1=> richiesta accettata

    Poi per conoscere gli amici di un determinato utente dovrai fare una query JOIN (non proprio semplicissima...)
    http://www.miniscript.it
    Se ti sono stato di aiuto in qualche modo in questo forum iscriviti alla fan page di Miniscript - il mio blog di programmazione web.

  3. #3
    si tutte queste cose che mi hai detto tu le ho già previste...
    Il mio dubio sta prorpio sui campi amico 1 e amico2 in quanto quando andrò a fare la query, ad esempio, per vedere gli amici di utente1, se scrivo nel db utente1 solo su amici1 o amici 2, dovrei fare una query tipo questa: "SELECT amico1, amico2 FROM amici WHERE amico1=binary('utente1') OR amico2=binary(utente2)" e poi tramite php dovrei vedere quali fra i nomi estrapolati sono differenti da utente1....

    invece se scrivo prima che utente1 è amico di utente2 e poi fatto l'opposto, posso fare una query come questa: "SELECT amico2 FROM amici WHERE amico1=binary('utente1')"

    il mio dubio però sta proprio in questo... so già che scrivere due volte lo stesso dato mi semplifica la vita ma che allo stesso tempo aumenta lo spazio impiegato dalla tabella
    Why so serious?????

  4. #4
    perseveri...il mio consiglio è di fare i campi amico1 e amico2 INT e popolarli con gli id dei de utenti coinvolti nel legame.

    La query che chiedi di eseguire dovrebbe essere semplice
    (Sostituisci nella seguente query $utente con quello che cerchi)
    codice:
    (SELECT amico2 FROM amicizie WHERE amico1='$utente')
    UNION
    (SELECT amico1 FROM amicizie WHERE amico2='$utente')
    http://www.miniscript.it
    Se ti sono stato di aiuto in qualche modo in questo forum iscriviti alla fan page di Miniscript - il mio blog di programmazione web.

  5. #5
    non avevo pensato di fare una query con l'UNION... effettivamente hai ragione.... Grazie per l'aiuto......
    Why so serious?????

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.