2016-12-24 4 views
0

Ich habe 2 dbs, die hier wichtig sind - systemmsg (Systemmeldungen) und friendrequests (enthält alle Freunde/ausstehende/abgelehnte Anfragen). HierMySQL und PHP-Fehler

ist der Haupt-Code, die ich für dieses Skript:

if(isset($invitefriend)){ 
if(!empty($invitefriendname)){ 
    if($invitefriendname !== $sessionname){ 
     $sqlcheckforrequest = "SELECT * FROM friendrequests WHERE sendername='$sessionname' AND recipientname='$invitefriendname'"; 
     $resultcheckforrequest = mysqli_query($conn, $sqlcheckforrequest); 
     if(mysqli_num_rows($resultcheckforrequest) == 0){ 
      $sqlscheckforusername = "SELECT * FROM registered WHERE userName='$invitefriendname'"; 
      $resultcheckforusernamesql = mysqli_query($conn, $sqlscheckforusername); 
      if(mysqli_num_rows($resultcheckforusernamesql) !== 0){ 
       while($reqfriend = mysqli_fetch_array($resultcheckforusernamesql)){ 
        $frsendid = $reqfriend['id']; 
        $frsendname = $reqfriend['userName']; 
       } 
       $sqlsendrequest = "INSERT INTO friendrequests (senderid,recipientid,sendername,recipientname,status) VALUES ('$sessionid','$frsendid','$sessionname','$frsendname','0')"; 
       $resultsendrequest = mysqli_query($conn, $sqlsendrequest); 
       if($resultsendrequest == true){ 
        if($rights = 0){ 
         $myusernamefriendupdate = "<a href=\'profile.php?id=$sessionid\' class=\'u-onsys\'>$sessionname</a>"; 
        } 
        if($rights = 1){ 
         $myusernamefriendupdate = "<a href=\'profile.php?id=$sessionid\' class=\'cmod-onsys\'>$sessionname</a>"; 
        } 
        if($rights = 2){ 
         $myusernamefriendupdate = "<a href=\'profile.php?id=$sessionid\' class=\'mod-onsys\'>$sessionname</a>"; 
        } 
        if($rights = 3){ 
         $myusernamefriendupdate = "<a href=\'profile.php?id=$sessionid\' class=\'adm-onsys\'>$sessionname</a>"; 
        } 
        if($rights = 4){ 
         $myusernamefriendupdate = "<a href=\'profile.php?id=$sessionid\' class=\'root-onsys\'>$sessionname</a>"; 
        } 
       $systemmessage = "$myusernamefriendupdate invited you to become his friend."; 
       $systemtitle = "Friend request"; 
       $sqlupdatesystemmessage = "INSERT INTO systemmsg (systemtitle, systemto, systemtext) VALUES ('$systemtitle','$frsendname','$systemmessage')"; 
       mysqli_query($conn, $sqlupdatesystemmessage); 
       $countsystemmessages++; 
       $invitefrerror = "Success"; 
       } 
      } else { 
       $invitefrerror = "We couldn't find that username"; 
      } 
     } else { 
      $invitefrerror = "You already invited this user"; 
     } 
    } else { 
     $invitefrerror = "Inviting yourself"; 
    } 
} else { 
    $invitefrerror = "Empty"; 
} 

}

Also das Skript sollte auf diese Weise arbeiten:

Benutzer 1 sendet Freund Anfrage an Benutzer 2 , Benutzer 2 erhält Systemmeldung mit den folgenden Angaben: usericon (variabel durch die Benutzerrechte, die die Anfragen gesendet haben) Der Benutzername hat Ihnen eine Einladung gesendet. (oder was auch immer)

Wir haben eine normale Form mit 2 Eingaben Text und senden. Wir haben unsere Sitzung Rechte aus der db registriert (Anwender) ausgewählt, und es ist

$rights = $row['rights']; 

Bevor ich „Anfrage senden“ meinen (die Sitzungsrechte) fein arbeiten (immer die reelle Zahl aus der db (0 Benutzer , 1 für Chat Moderator, 2 für Moderator, 3 für Admin und 4 für root.) Aber wenn ich diesen kleinen frechen Knopf klicke, ändern sich die Rechte zu einer konstanten Zahl (4 in diesem Beispiel) und es zeigt eine Einladung von einem normalen an Benutzer zum Beispiel mit dem Root-Symbol Ich weiß nicht, wie das zu beheben ist und wo der eigentliche Fehler ist

Ich hoffe, die meisten von euch können meine Frage verstehen, denn es gibt buchstäblich niemand anderen als Sie fragen im Moment.

Danke für Ihre Zeit!

+0

'if ($ rights = 0) {' Sie ordnen es zu, also werden alle diese 'if' Anweisungen wahr zurückgegeben. Schau dir das an: http://StackOverflow.com/a/2063500/7334173 – Tolios

+0

Das hat funktioniert, danke ... So ein dummer Fehler. – simplepickup

Antwort

0

Ändern Sie Ihre Instanzen von if ($rights = 1) { in if ($rights == 1) {, um den Vergleichsoperator anstelle der Variablenzuweisung zu verwenden. Ein einzelnes Gleichheitszeichen (=) gibt immer den zugewiesenen Wert zurück und kann verkettet werden, und daher wird ($ rights = 1) immer wahr sein.

Weitere Informationen finden Sie unter The 3 different equals.