Funktionen / Mysql query

aargau

Erfahrenes Mitglied
Ich möchte meine Websites so lastsparend wie möglich gestallten.
Eine möglichkeit ist sicher dinge welche sich nicht immer ändern zu cachen.

Allerdings habe ich nun eine Grundfrage: Ich habe meist eine index.php welche das Design beinhaltet und include (per switch()) den Content danach. Momentan habe ich eine function.php welche alle Funktionen wie
upload, timestamp to datum, etc. beinahltet welche ich irgend wo auf einer Unterseite mal brauche.
Ich Frage mich nun ob es sinnvoll wäre für jede Unterseite eine eigene function.php zu erstellen und nur die Funktionen welche auf dieser Seite auch gebraucht werden eingefügt werden. Würde dies bezüglich Serverlast / Kompilierzeit etwas bringen oder gar eher das gegenteil?

Zum zweiten: Ich bin seit langem an experimentieren um eine Funktion wie es facebook hat: "Gemeinsame Freunde"
Kann mir jemand sagen wie dabei die mysql query aussehen müsste?
 
Zum zweiten: Ich bin seit langem an experimentieren um eine Funktion wie es facebook hat: "Gemeinsame Freunde"
Kann mir jemand sagen wie dabei die mysql query aussehen müsste?

Falsche Frage. Du solltest eine Tabellenstruktur vorschlagen. Ebenso solltest du uns mitteilen was du als Resultat des Queries haben willst. Dann können wir die auch sagen, wie das Query aussehen soll
 
Okay, dann mach ich doch das, ich dachte es wäre einfach möglich.

Tabelle Benutzer:

id, nickname, lastonline, ...

Tabelle Freunde:

idf, profil, freund, ip, access, nachricht


Aufbau: Ein User Klickt auf "Als Freund hinzufügen" und kann dann eine Nachricht an die gegen person stellen (Tabelle Freunde: nachricht). Beim Freund (Tabelle Freunde: freund) blinkt nun eine Nachricht auf welche ihm sagt das er eine neue frendesanfrage hat. Er kann nun auswählen ob er diese Person hinzufügen möchte, selbst auch im Freundeskreis haben will oder die Freundschaft nicht annimmt.
Einfaches hinzufügen = update der eingetragenen Zeile bei access auf "2" setzen. Zusätzlich eine Nachricht (über eine andere tabelle) an den anderen user senden.
Selbst auch hinzufügen= Updaten wie oben + Eintragen der Zeile im gegensinn (profil / freund ID vertauscht)
Ablehnen: Zeile Löschen + Nachricht an den User

Soweit der Aufbau.
Die normale Ausgabe erfolgt dann entweder über "Alle Freunde" oder auf dem Profil über eine Box "Freunde Online"

Ausgabe aller Freunde:
PHP:
$q = mysql_query("SELECT benutzer.id , benutzer.level, benutzer.nickname, benutzer.lastonline , 
benutzer.sex, freunde.idf, freunde.profil, freunde.freund , freunde.access  FROM freunde , benutzer 
WHERE benutzer.id = freunde.freund AND profil='".mysql_real_escape_string($nid)."' AND access = '2'") ;
while(mysql_fetch_object($q))
{
//... Tabelle...
}

Nun möchte ich in die funktion gemeinsame Freunde haben, welche mir anzeigt welche Freunde ein User den ich Besuche gemeinsam wie oben hat.

Nun eine Möglichkeit wäre ja jetzt all meine Freunde in ein Array zu Packen und disse bei dem user mit einer foreach() Schlaufe durchzugehen, denke aber das dies extrem viel Serverlast brauchen würde, wenn ich bei jedem User aufruf meine Freunde Laden müsste und alle Freunde des anderen users durchgehen müsste.
 
SQL:
SELECT
	freundesFreundBenutzer.nickname
FROM
	(	SELECT
			profil
		FROM
			freunde f
		WHERE
			f.idf = {$myId}
			AND f.access = '2'
	) AS myFreunde,
	(	SELECT 
			* 
		FROM 
			freunde f 
		WHERE 
			f.access = '2'
	) AS freundesFreund,
	benutzer AS freundesFreundBenutzer
WHERE
	myFreunde.profil = freundesFreund.idf
	AND freundesFreund.profil = freundesFreundBenutzer.id
 
Zuletzt bearbeitet von einem Moderator:
Zurück