Hallo, Gast! (Registrieren)

Letzte Ankündigung: MyBB 1.8.38 veröffentlicht (30.04.24)


Benutzer, die gerade dieses Thema anschauen: 2 Gast/Gäste
PN's sortieren ob Freund oder normaler User
#1
Hallo,
ich habe ein Problem.

Mein PHP Code sollte festlegen, ob der $freundstatus ="ja" oder ="nein" ist.
Im Template private_messagebit kann ich die Variable $freundstatus verwenden, aber es wird immer "nein" angezeigt.

So sieht der Code in der private.php in Zeile 2128 aus:

PHP-Code:
                $query2 $db->simple_select("users""*""uid IN ({$mybb->user['buddylist']})");
    while(
$message2 $db->fetch_array($query2))
    
     
$stringmessage "".$message2['buddylist']."";
  
$array explode(","$stringmessage);
  

if((
strpos($stringmessage,"".$tofromuid."")!==false)) 
        {
            
$freundstatus 'ja';
        }
        else
        {
            
$freundstatus 'nein';
        }
                    
            eval(
"\$messagelist .= \"".$templates->get("private_messagebit")."\";"); 
Zitieren
#2
Ich kann dir zwar keine Hilfe zu deinem Problem anbieten, aber ich gebe dir zwei Tipps zu deinem Programmierstil.
1)
PHP-Code:
"".$message2['buddylist']."" //$stringmessage = "".$message2['buddylist']."";, if((strpos($stringmessage,"".$message['toid']."")!==false)) 
Unter lass sowas, ja? Wenn du eine Variable übergibst, brauchst du keine Anführungszeichen um die Variable zu machen. Ab PHP 5.2 (war's glaub ich), kannst du, wenn du den Typ einer Variable umwandeln willst, einfach vor der Variable in Klammern den Typ schreiben. Also so:
PHP-Code:
$array = (array) $string//Konventiert die Variable vom Typ String in Array 

2)
PHP-Code:
if((strpos($stringmessage,"".$message['toid']."")!==false)) 
Zwei Klammern zu machen ist einfach nur unnötige Arbeit. Ich würde ja sowieso so wenige Klammern machen wie notwendig - und gewöhn dir bitte an, Leerzeichen zu machen, das macht den Code einfacher zu lesen.
PHP-Code:
if(strpos($stringmessage,"".$message['toid']."") !== false
Zitieren
#3
Das brauchst du doch gar nicht so kompliziert machen.
Du kannst doch einfach über der Zeile:

PHP-Code:
eval("\$messagelist .= \"".$templates->get("private_messagebit")."\";"); 

zB. das hier einfügen:

PHP-Code:
$freundstatus 'nein';
$pmbuddy explode(","$mybb->user['buddylist']);
if (
in_array($tofromuid$pmbuddy))
{
    
$freundstatus 'ja';


und dann die Variable {$freundstatus} im Template private_messagebit verwenden.
Zitieren
#4
Erstmal danke für die Lösung waldo!
Zweitens auch danke für die Verbesserungsvorschläge meines Programmierstils. Ich habe mir alles selbst beigebracht, nur aus Abfragen, die man so findet, deshalb bin ich über jede Verbesserung dankbar.

Lg Lukas
Zitieren