Prototyp: Ãœber wen bin ich mit dem User gerade in Verbindung?

PHP Codeschnispel und Beispiel Codes.
k00ni
Beiträge: 1474
Registriert: 22. Juni 2006, 16:44
Kontaktdaten:

Prototyp: Ãœber wen bin ich mit dem User gerade in Verbindung?

Beitrag von k00ni » 11. November 2009, 00:30

Nabend,

ich habe gerade mal etwas herumgewerkelt. Der Prototyp erkennt, ob man eine Verbindung über eine andere Person zu der gerade ausgewählten Person hat. Also ist man auf dem Profil eines anderen Benutzers, so kann man durch eine neue Tabelle sehen, ob man diesen User über eine weitere Person kennt, wenn man NOCH NICHT mit ihm befreundet ist.

Da das ein erster Entwurf ist, ist davon auszugehen, dass das Ding nicht sehr performant ist. Wer also noch Speed-Ups sieht, bitte melden.

Nun zum eigentlichen Code...

[hr]

An sich sind es 2 Funktionen:

1) get_users_friends
2) get_connection_between_users

Die Funktion (1) ermittelt alle Freunde eines Benutzers. (Einfache Liste von User-IDs aus der Spalte buddyid)

Die Funktion (2) ist die eigentliche Funktion für das Ermitteln einer Zwischenperson, über die man eine andere Person kennt. Sie geht so vor, dass sie erstmal alle Freunde der Hauptperson (das ist man meist selbst) und der gesuchten Person ermittelt und in eine einfache Listen packt. Dann wird geprüft, ob man die gesuchte Person direkt als Freund hat, d.h. sie ist bereits bei einem auf der Buddyliste.
Ist dem nicht so, wird geprüft ob es einen Freund von der Hauptperson gibt, welcher die gesuchte Person wiederum als Freund hat. Wenn dem so ist, wird die ID des Freundes zurückgeliefert. Die Verbindung wird dann optisch über dem Profil dargestellt.

Hier die Funktion 2:

Code: Alles auswählen

fetch_row ( "SELECT userid
					  			        FROM $tab_userbuddy
								       WHERE userid IN ( ". implode ( ',', $main_users_friends ) ." ) AND 
								             buddyid = $searched_user
									   LIMIT 1;" );
			
			// Wenn ein User ( X ) gefunden wurde.
			if ( 1 == $pdb->num_rows )
			{
				return $tmp ['userid'];
			}
		}
	}
	
	return 0;
}
?>
Wie gesagt Funktion 1 liefert immer ein eindimensionales Array, wenns geht mit einer Liste von User-IDs der Freunde.

Die Funktion 2 ist so ausgelegt, dass sie sowohl für andere Buddy-Systeme nutzbar ist, als auch noch auf weitere Stufen erweitert werden kann. Von der Skalierung her ist es vielleicht nicht gerade das Beste, da man im schlimmsten Fall immer alle eigenen Freunde und die der gesuchten Person durchgeht.

hello007
Beiträge: 20
Registriert: 3. Juli 2008, 15:05

Prototyp: Ãœber wen bin ich mit dem User gerade in Verbindung?

Beitrag von hello007 » 19. März 2010, 00:05

Naja Ansatz ist nicht schlecht.

So wie es aussieht baust du dir ein array zusammen von den ganzen freundes von user a

und dann übergibst du freunde user a an user b und schaust ob die gleich sind.

wenn ja dann soll er die ausspucken.


Soche scripte würd ich auch persönlich lieber in C++ schreiben als in php. PHP braucht verdammt viel cpu in gegensatz zu c++ oder c.
alias theCrack

Oldmember of Kryptocrew

Antworten