Macht das sinn? oder hat jemand eine bessere lösung?

harderph

Erfahrenes Mitglied
Also ich versuche es so gut wie möglich zu beschreiben wie ich kann!
Ich bastel gerade ein "freund-manager" das heisst ein user schickt eine anfrage raus ob der andere user zu seiner freundesliste aufgenommen werden darf! Wenn der andere user sagt JA dann müssen die user sich gegenseitig in der liste haben! Jetzt ist die frage:
User1 schickt ein anfrage ,ein datensatz wird eingefügt mit folgenen daten :

User Id 1 (der, der die anfrage stellt)
User ID 2 (Den user ID1 in seine liste haben möchte)
Status (mit den werten Wartend, geblockt, abgewiesen, aktiv)
und natürlich die Id (automatisch)

jetzt nehmen wir an das User ID2 Angenommen hat dann wird der aktuelle datensatz aktualesiert auf "AKTIV"! User ID 1 Hat User ID2 in seiner liste aber User ID2 hat user ID1 nicht in der liste!
Muss ich dann ein neuen datenstz schreiben das user ID2 auch user ID1 n der liste hat?
Finde ich irgendwie zuviel, wenn 1000 user jeweils eine freundschaft haben dann wären es 2000 datensätze! Und die freundschafts anzahl hat eigendlich kein limit pro user! Hat jemand eine bessere lösung oder ist das schon eine gute lösung
Ich hoffe doch das man mir foögen kann!
MFG björn
 
Ein Datensatz reicht schon aus, um die Beziehung zwischen den beiden Datensätzen herzustellen. Du musst dann eben nur immer beide Felder prüfen.
 
Wenn ich jetzt von user1 die liste haben möchte filter ich ja die DB abfrage
PHP:
$sql = "SELECT * FROM tabelle WHERE userID1='".$_SESSION["user_id"]."';
So bekomm ich ja die daten angezeigt von USER1 aber da USER2 in eine andere spalte sitzt bekommt user2 Kein daten! Wie stelle ich dasmit dem vergleich den an?
 
Wie Gumbo schon schrieb, musst Du beide Felder prüfen:
PHP:
$sql = "SELECT * FROM tabelle WHERE userID1 = '".$_SESSION["user_id"]."' 
    or userID2 = '".$_SESSION["user_id"]."'";
Gruß, Sparks
 
Oder:
Code:
(
	SELECT `userID2` AS `userID` FROM … WHERE `userID1` = …
) UNION (
	SELECT `userID1` AS `userID` FROM … WHERE `userID2` = …
)
 
ok danke für eure hilfe aber da gibt es noch ein kleines problemchen was ich noch nie hatte!

Wie soll ich das bloss erklaren: Also Die abfrage wird ja auch gebraucht weil ich mit den UserIDs noch eine zweite DB abfrage starte! jetzt ist es allerdings so das ich aus zweispalten lesen muss um mir die datenanzeigen zu lassen vom user der die nachricht geschickt hat!
Es wird ja aus der zweiten Db abfrage ja der username ermittelt und so!
hier mal ein bischen code
PHP:
$sql = 'SELECT * FROM profil_friends WHERE fuid='.$_SESSION["user_id"].' or user_fri='.$_SESSION["user_id"].' AND rechte = "aktiv" ORDER BY date_f LIMIT '.($blaettern->get_Epp() * $blaettern->get_Active_Page()).', '.$blaettern->get_Epp();

$data_user = $rowst["user_fri"];

		
//
$result=mysql_query('SELECT *
					 FROM user_account  WHERE uid="'.$data_user.'"');
Also der jenige der die frage zur freundschaft haben möchte kommt in "fuid" und der jenige der die anfrage bekommt ist user_fri! jetzt ist momentarn die situation das der jenige der sie abgeschickt hat den Freund sehen kann und der jenige der die anfrage bekommen hat kann garnichts sehen! Es wird momentarn von spalte "fuid" in die zweite Db abfrage gebracht!
Nochmal der den sinn des ganzen:
Also das wird ein freundschafts manager! User können bei anderen usern ein antrag zur freundschaft stellen! Der user der die einladung verschickt hat, hat den user in der Warteliste! Der user der die einladung bekommen hat kann garnichts sehen wenn er die freundschaft angenommen hat( user ist in Spalte "user_fri")! Also alle die ein antrag stellen können ihre user sehen! Die user die die anträge bekommen haben und angenomm haben können nichts sehen! Vieleicht klärt sich das ja auch von selber wenn man das script sieht! Sorry für die erklärung weiss nicht wie ich das machen soll!

oder mal so eine frage gibt es etwas womit ich die user-id des users ausschliessen kann so das er selber nicht angezeigt wird sondern nur seine freunde?


//EDIT

So ich h ab das jetzt erstmal so gelöst ob das schlau ist weiss ich allerdings nicht aber es wird zumindistens alles richtig angezeigt! Der user selber der sich seine freundschaftsliste anschauen möchte sieht sich selber nicht mehr!
PHP:
$sql = 'SELECT * FROM profil_friends WHERE fuid='.$_SESSION["user_id"].' or user_fri='.$_SESSION["user_id"].' AND rechte = "aktiv" ORDER BY date_f LIMIT '.($blaettern->get_Epp() * $blaettern->get_Active_Page()).', '.$blaettern->get_Epp();
$query = mysql_query($sql) or die (mysql_error());
while($rowst = mysql_fetch_array($query)){
$data_user = $rowst["user_fri"];
$data_user1 = $rowst["fuid"];

$result=mysql_query('SELECT *
					 FROM user_account WHERE uid="'.$data_user.'" or uid="'.$data_user1.'" AND NOT '.$_SESSION["user_id"].' ');

vergesst das mal hiermit t nicht wirklich! LÖL zu frph gefreut!
 
Zurück