probleme mit friendlist abfrage

hups1803

Erfahrenes Mitglied
Hallo ,

ich habe folgendes abfrage problem.

ich habe eine datenbank Blogtime diese wird mit einer Abfrage so angezeigt.

db-blogtime.png

PHP:
//Mprefix== e107_


$sql = new db;
$sql = "
SELECT
 *
FROM     ".MPREFIX."blogtime 

ORDER BY id DESC";//abfrage array db e107_Blogtime

$res = mysql_query($sql);

while($row = mysql_fetch_array($res)){

//diverse tabellen und divs

url link zum eintragen in die e107_blogtime_friendslist datenbank  als Anfrage eine 1 in das freundesstatus feld.

(hierbei wird die userid der name  sowie die userid vom user der angefragt wird eingetragen )
z.b so .
userid = 1
usernamename =hups
freundesstatus=1
fromuserid=6

}

so sieht die e107_blogtime_friendslist Datenbank aus

db-friendlist.png

nun weiss ich nicht wie ich die abfrage erstelle, so das er bei den jeweiligen user das richtige anzeigt.

ich möchte das er bei status 1, bei den jeweiligen user "Anfrage" schreibt und bei status 2 "Freund".

wenn ich eingelogt bin und die userid 1 habe, soll er bei meinen Eintragungen nur anzeigen wenn ich Anfragen (count) habe .

ich habe schon versucht eine Array Anfrage innerhalb des blogtime Arrays zu schreiben

PHP:
//abfrage friendlist
//USERID = die beim einloggen des aktuellen User hinterlegte id

$sql9 = new db;
$sql9 = "
SELECT 
   * 
FROM   ".MPREFIX."blogtime_friendslist";

while($row9 = mysql_fetch_array($res9)){

$fromuserid        = $result['fromuserid'];	
$freundesstatus = $result['freundesstatus'];

// USERID != 1 hier als beispiel die id der user.php ==1

if(USERID != 1 AND $freundesstatus == 0 )//Anzeige wenn kein eintrag vorhanden ist
{
  $friendlist="Button  ich will dein freund sein";
}

if(USERID != 1 AND $freundesstatus == 1 )//Anzeige wenn eine Freund Anfrage ist 
{
$friendlist="anfragwe läuft";
}else{

$friendlist="";

}	

$text .= $friendlist;

kommt aber immer Kuddelmuddel raus, entweder er schreibt es überall hin oder gar nicht.

bekomme das nicht gebacken.

Bitte mal um hilfe.
 
Zuletzt bearbeitet:
PHP:
<?php
  $db  = new DB;
  $sql = sprintf('SELECT * FROM %sblogtime_friendslist WHERE `userid` = "%s" AND `freundestatus` <> 0', MPREFIX, USERID);
  
  while ($row = mysql_fetch_assoc($result))
  {
    if ($result['freundestatus'] == 1)
    {
      $text .= 'Anfrage läuft';
    }
    else
    {
      $text .= 'Freund';
    }
  }
?>
 
Ich würde dir empfehlen eine DB-Tabelle anzulegen, in der alle Status-Möglichkeiten mit Eigenschaften etc. hinterlegt sind. Dann kannst du mittels JOIN die entsprechenden Labels ziehen;

PHP:
$db = new DB;
$query = $db->query("SELECT `friendslist`.*, `friedstatus`.`label` FROM `friendslist` LEFT JOIN `friendstatus` ON(`friendstatus`.`id` = `friendslist`.`friendstatus_id`) WHERE `userid` = 'x' && `friendstatus`.`showInFriendlists` = TRUE");
while($sql = $query->fetch_object()){
...
}
 
@3Dnavigator wie meinst du das " alle Status-Möglichkeiten mit Eigenschaften ".

@Yaslaw interessante Seite werde ich mal versuchen zu beherzigen.
 
wie meinst du das..

Naja, ich denke es macht Sinn die verschiedenen Freundschafts-Stati auch in einer Datenbank-Tabelle abzulegen. Dadurch kannst du einerseits dein Problem lösen (siehe mein Query-Beispiel) und andererseits hast du damit auch in Zukunft die Möglichkeit jederzeit und flexibel die möglichen Eigenschaften dieser Stati auszubauen.
In meinem Beispiel habe ich die Eigenschaft "showInFriendlists" eingebaut. Das lässt sich beliebig erweitern. Vielleicht gibt es irgendwann ja eine Dauer, wie lange ein Status gültig sein darf (zB. bei einem Friend-Request), eine Eigenschaft "showAsPendingRequest" etc. etc.
 
Zurück