[PHP/MySQL] Tonen van verbindingen tussen personen

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Op dit moment loop ik vast bij het opzetten van een social community script wat laat zien wat de verbinding is tussen verschillende personen. Stel:

Jij bent persoon Chris
Via een zoekopdracht vindt Chris, Piet.
Echter Piet is een connectie van Jan.

Dus Jan wordt getoond als tussenpersoon.

Volgens mij is dit met een mysql query makkelijk te maken. Ik kom niet verder dan:

mysql_query("SELECT naam FROM member m, gebruiker g WHERE m.naam = g.naam");

Acties:
  • 0 Henk 'm!

  • Noork
  • Registratie: Juni 2001
  • Niet online
Het lijkt me niet zo moeilijk. Je moet gewoonweg de gezamelijke contacten van de 2 gebruikers ophalen. (met een join b.v.) Maar hier valt verder geen zinnig woord over te zeggen als je niet aangeeft hoe de datastructuur is opgebouwd.

[ Voor 4% gewijzigd door Noork op 05-01-2009 18:28 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
De datastructuur is de volgende:

Tabel : user
user int(7) auto_increment // Elk lid heeft een ID

Tabel : userbuddies

id int(10) No auto_increment
user int(10) No 0 // Verwijst naar user in tabel user
friend int(10) // Degene waarmee user is gekoppeld

[ Voor 20% gewijzigd door Verwijderd op 05-01-2009 18:39 ]


Acties:
  • 0 Henk 'm!

  • Noork
  • Registratie: Juni 2001
  • Niet online
Ik zou een select doen van alle userbuddies van de 2 userid's en dan groepperen op friend_id. Ook een counter "count(friend)" toevoegen. Alle records die 2x geteld zijn betekent een gezamelijke buddy.

[ Voor 8% gewijzigd door Noork op 05-01-2009 18:43 ]


Acties:
  • 0 Henk 'm!

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 18:44

gorgi_19

Kruimeltjes zijn weer op :9

Het probleem wordt wat leuker als je ook in oogschouw neemt dat het nog moet performen :P
Zie hiervoor bijvoorbeeld ook: [mySQL] connectie query

Op http://www.sqlteam.com/forums/topic.asp?TOPIC_ID=72097 gaan ze ook nog wat verder :) Maar eenvoudig op te lossen? Neuh... :)

[ Voor 28% gewijzigd door gorgi_19 op 05-01-2009 19:06 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Dus dan krijgen we zoiets:

$q=$spsdb->dbq("SELECT *
FROM user
LEFT JOIN userbuddies as vriendje1 ON user.user = vriendje1.user
LEFT JOIN userbuddies as vriendje2 ON vriendje1.friend = vriendje2.user
WHERE user.user=".$myinfo['user']." AND (vriendje1.friend=".$md['user']." OR vriendje2.friend =".$md['user'].");");

$myinfo['user'] is dus ID van de gebruiker die ingelogd is
$md['user'] is de ID van het profiel met de connecties

[ Voor 44% gewijzigd door Verwijderd op 05-01-2009 19:38 ]

Pagina: 1