-
Hallo,
ich code zurzeit ein Soziales Netzwerk und habe dafür natürlich ein Freundesscript erstellt welches Freunde speichert und wiedergibt. Jetzt würde ich damit gerne gemeinsame Freunde ausgeben. (Beispiel: Personen die du vielleicht kennst: Beispiels User (2 gemeinsame Freunde). Mein Script zum ausgeben der Freunde ist folgendes:
Könnte mir vielleicht jemand einen Ansatz posten wie ich vorgehen kann? Wäre sehr nettPHP-Code:echo "<h2>Freunde:</h2>";
$query = mysql_query("SELECT freunde FROM benutzer WHERE ID = '" .$row->ID. "'"); }
while($row = mysql_fetch_array($query)) {
$friends = unserialize($row["freunde"]);
if(isset($friends[0])) {
foreach($friends as $friend) {
$_query = mysql_query("SELECT Vorname, bild, Name FROM benutzer WHERE ID = '" . $friend . "'");
$_row = mysql_fetch_array($_query);

Liebe Grüße tl2011
-
Du speicherst die Freunde also in ein Array serialisiert?
Ich zweifel ein wenig daran, ob das wirklich sinnvoll ist, wenn du funktionen wie Freundes-Freunde nutzen willst.
Du müsstest jetzt hingehen, und in deiner foreach noch eine abfrage machen, ob ein User eine Freundes id von dir in seiner Freundes-Spalte hat.
$ids = join(',',$);
WHERE freunde IN ($ids)
Allerdings, geht das wahrscheinlich nicht, weil du die freunde eben in einem array in MySQL ablegest.
Vielleicht WHERE freunde LIKE ':$freundid' -> Das müsste dann für jede deiner Freundes-IDs machen..
Wie gesagt, die serialize halte ich hier für wenig sinnvoll
Aber vielleicht vertue ich mich auch und jemand kann dir gleich eine Lösung nennen
paD
-
Ich stimme String zu, dass das der Ansatz nicht gut gewählt ist.
Lass die Relationale Datenbank das tun, wofür sie gemacht ist. Nämlich Relationen (Beziehungen, Verbindungen, also sowas wie Freundschaften
) zu modellieren.
Wirf die Spalte "freunde" raus und nimm stattdessen eine dritte Tabelle namens "freunde", in der du zwei Spalten für die ID der jeweiligen Personen hast.
Dann kannst du mit einer einzigen MySQL Abfrage dein Problem lösen und das völlig ohne PHP Code.
-
19.01.12 19:38 #4
Absolut richtig. Einfache Beziehungen sind das A und O in relationalen Datenbanken, um effizient zu sein.
mfg chmeeMein Blog - VideoFAQ - FotoFAQ - bei Flickr - DSLR Kleinanzeigen
Benutzt den DANKE-Knopf oder bewertet den Beitrag
"GEHT NICHT" HILFT NICHT, TESTET EURE CODES ONLINE UND GEBT KLARE INFOS!
-> Regexp <- -> php <- -> Javascript <-
-
Ich habe das mal schnell durchgespielt:
Code sql:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
mysql> SELECT * FROM users; +----+-------+ | id | name | +----+-------+ | 1 | alex | | 2 | hans | | 3 | peter | +----+-------+ 3 ROWS IN SET (0.00 sec) mysql> SELECT * FROM friends; +--------+----------+ | userid | friendid | +--------+----------+ | 1 | 2 | | 1 | 3 | | 2 | 3 | +--------+----------+ 3 ROWS IN SET (0.00 sec) mysql> SELECT users.name FROM users, friends AS f1, friends AS f2 WHERE f1.userid = 1 AND f2.userid = 2 AND users.id = f1.friendid AND f1.friendid = f2.friendid; +-------+ | name | +-------+ | peter | +-------+ 1 ROW IN SET (0.00 sec)
Es gibt drei Personen Alex, Hans und Peter. Alex hat Hans und Peter als Freunde. Hans hat nur Peter als Freunde. Die Letzte Abfrage liefert die gemeinsamen Freunde von Alex und Hans, also Peter.Geändert von CPoly (19.01.12 um 19:49 Uhr)
-
Hmm das heißt die Spalte Freunde würde in der Tabelle Benutzer wegfallen?
Ich frage das da bereits einige "Freundschaften" gespeichert habe und sie gerne übernehmen würde.
Liebe Grüße und danke für die Antworten
-
Ist doch ganz einfach, du kannst ein Script baslten, was die Freundschaften in die neue Tabelle schreibt.
Aber um es richtig zu machen, wirst du nicht drum rum kommen.
Gruß
-
Ja ok . Wie könnte ein solches Script denn aussehen?
Liebe Grüße Tl2011
-
Sowas in der Art
Das Skript brauchst du ja nur ein einziges mal.PHP-Code:$query = mysql_query("SELECT freunde FROM benutzer");
while($row = mysql_fetch_array($query)) {
$friends = unserialize($row["freunde"]);
//Jetzt über $friends iterieren und jeweils ein INSERT in die neue Tabelle machen.
}
-
Okay das werde ich morgen mal probieren und dann melde ich mich zurück.
Liebe Grüße
-
Ok ich hab das Script jetzt umgecodet und die Tabelle freunde angelegt. Die User Tabelle heißt benutzer und die Felder in der freundes Tabelle heißen: user (für den User selbst) und friend (für den Freund) Allerdings habe ich von dieses Abfragen wie CPoly sie gepostet hat keine Ahnung.
-
Dann solltest du es lernen. Immerhin willst du ein soziales Netzwerk programmieren.
Hier eine Erklärung: http://www.w3schools.com/sql/sql_join.asp Aber es gibt bestimmt bessere, vielleicht auch deutsche Tutorials. Ich habs durch probieren gelernt (http://dev.mysql.com/doc/refman/5.0/en/join.html).
-
Was hat in deinem Beispiel denn das f1 bzw f2 für eine Funktion?
-
Ich benutze zweimal die gleiche Tabelle, deshalb muss ich denen einen Alias geben. Das geht mittels "AS" Schlüsselwort oder auch ohne.
Code sql:1 2
SELECT * FROM meine_tabelle AS t ...; SELECT * FROM meine_tabelle t ...;
In beiden Beispielen kann man im Anschluss "t" anstatt "meine_tabelle" schreiben. In der Regel ist das eine Schreiberleichterung, in dem Fall aber wie gesagt sogar zwingend notwendig.
-
hmm ok bei folgendem Code bekomme ich allerdings einen Error
(Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in /home/hcsmfhii/thelasers-network.com/samplec.php on line 60)
So sieht mein Code aus:
Woran liegt das?PHP-Code:$abfrage = "SELECT benutzer.Vorname FROM benutzer, freunde AS f1, friends AS f2 WHERE f1.user = 1 AND f2.user = 2 AND benutzer.ID = f1.friend AND f1.friend = f2.friend";
$ergebnis = mysql_query($abfrage);
while($row = mysql_fetch_object($ergebnis)) {
echo "$row->Vorname"; //gemeinsamer Freund
}
Ähnliche Themen
-
Gemeinsame Freunde bestimmen?
Von Alexio Vay im Forum PHPAntworten: 5Letzter Beitrag: 04.06.11, 17:39 -
Gemeinsame Dateien
Von SteffenBoerner im Forum .NET CaféAntworten: 2Letzter Beitrag: 04.08.09, 15:00 -
Freunde Script
Von VanHellsehn im Forum Relationale DatenbanksystemeAntworten: 3Letzter Beitrag: 31.08.08, 13:12 -
Apaches Freunde...
Von Enumerator im Forum Coders TalkAntworten: 0Letzter Beitrag: 24.04.08, 02:54 -
Freunde System
Von aargau im Forum PHPAntworten: 2Letzter Beitrag: 18.04.07, 19:29



4Danke

Zitieren



Login






[PHP][Snippet] Array zu XML konvertieren