PHP/MySQLi Chat Anzeige

  • Hallo,


    momentan ist es so, dass alle User welche in tbl_users gespeichert sind, angezeigt werden. Jedoch hätte ich gerne, das nur Chats angezeigt werden, welche bereits existieren (mind. 1 Nachricht gesendet). Was müsste ich am jetzigen Code verändern um mein Wunsch Ergebnis zu erhalten?



    Würde mich über Hilfe freuen (bin absoluter Neuling in der Materie) :)


    Gruß
    Crowley

  • SQL
    SELECT DISTINCT `user_id` 
           (SELECT COUNT(*) FROM conversation
            WHERE (user_one='$ufromid' AND user_two='$user_two') OR (user_one='$user_two' AND user_two='$ufromid') AS messageCount)
    FROM tbl_users

    Damit erhältst du die Anzahl der Nachrichten einer Konversation mit einem Query, wie du weiter vorgehst, sollte selbsterklärend sein.

    Why do programmers always mix up Halloween and Christmas?
    Oct 31 == Dec 25

  • SQL
    SELECT DISTINCT `user_id` 
           (SELECT COUNT(*) FROM conversation
            WHERE (user_one='$ufromid' AND user_two='$user_two') OR (user_one='$user_two' AND user_two='$ufromid') AS messageCount)
    FROM tbl_users

    Damit erhältst du die Anzahl der Nachrichten einer Konversation mit einem Query, wie du weiter vorgehst, sollte selbsterklärend sein.

    Ich werde es gleich ausprobieren, bin grade noch an einer anderen Sache dran, die irgendwie nicht funktionieren möchte. Habe in meiner script.js einen Code-Teil, der die angegebene class komplett runter scrollen soll, macht er aber nicht.


    Hättest du da eventuell auch eine Idee, warum es nicht funktionieren könnte?


    JavaScript: script.js
    $('.display-message').scrollTop($('.display-message')[0].scrollHeight);

    //Edit: Habe das Problem selber lösen können. Ich werde diesen Beitrag editieren, wenn ich zum ursprünglichen Thema Fragen oder Probleme habe, danke schon im voraus! :)

    Einmal editiert, zuletzt von varrez ()

  • Verwende generell kein jQuery, jedoch scheint es, als würdest du dir die Scroll-Höhe vom display-message Element ziehen und auf die Höhe scrollen. Richtig wäre jedoch auf die Höhe vom Parent-Element zu scrollen, daher die zweite Klasse mal auf die Klasse des Wrappers ändern. Hoffe das stimmt so.

    Why do programmers always mix up Halloween and Christmas?
    Oct 31 == Dec 25

  • Zum ursprünglichen Thema:


    PHP
    $query3 = $DBcon->query("SELECT * FROM tbl_users WHERE user_id != $ufromid");
    while($row = mysqli_fetch_assoc($query3)){
    	echo '<a href="messages.php?id='.$row['user_id'].'"><li><img src="userfiles/avatar/'.$row['avatarname'].'"> '.$row['username'].'</li></a>';
    }

    Edit: Ich sehe gerade das ich ein völlig falschen Code gepostet habe, der oben in diesem Beitrag wäre der Richtige.


    Gruß

    Einmal editiert, zuletzt von varrez ()

  • Theoretisch sollte das passen.

    SQL
    $userId = $row[ 'user_id' ];
    SELECT DISTINCT * 
           (SELECT COUNT(*) FROM conversation
            WHERE user_one = '$userId' OR user_two = '$userId' as messageCount)
    FROM tbl_users

    Why do programmers always mix up Halloween and Christmas?
    Oct 31 == Dec 25

  • Ich hab einfach noch kein Verständnis dafür :wacko:


    Was mache ich falsche? :/


    PHP
    $query3 = $DBcon->query("SELECT * FROM tbl_users WHERE user_id != $ufromid");
    					while($row = mysqli_fetch_assoc($query3))
    					{
    						$userId = $row[ 'user_id' ];
    						$anzeigen = $DBcon->query($DBcon, "SELECT DISTINCT * (SELECT COUNT(*) FROM conversation WHERE user_one = '$userId' OR user_two = '$userId' as messageCount) FROM tbl_users");
    						if(mysqli_num_rows($anzeigen) == 1) 
    						{
    							echo '<a href="messages.php?id='.$row['user_id'].'"><li><img src="userfiles/avatar/'.$row['avatarname'].'"> '.$row['username'].'</li></a>';
    						}
    					}
  • Sollte beides in einem Query funktionieren, verwende kaum SQL oder PHP, klingt aber für mich logisch. :whistling:

    SQL
    $query3 = $DBcon->query("SELECT DISTINCT * (SELECT COUNT(*) FROM conversation WHERE user_one = '$ufromid' OR user_two = '$ufromid' as messageCount) FROM tbl_users WHERE user_id != $ufromid AND messageCount > 0");
    while($row = mysqli_fetch_assoc($query3))
    {
    	echo '<a href="messages.php?id='.$row['user_id'].'"><li><img src="userfiles/avatar/'.$row['avatarname'].'"> '.$row['username'].'</li></a>';
    }

    Why do programmers always mix up Halloween and Christmas?
    Oct 31 == Dec 25

    Einmal editiert, zuletzt von TPO ()

  • mysqli_fetch_assoc() expects parameter 1 to be mysqli_result, boolean given in 154


    PHP
    while($row = mysqli_fetch_assoc($query3))

    Außerdem: $userId = $row[ 'user_id' ];
    Kann man das Problem los vor dem query machen?



    Edit: Zur Fehler Meldung oben:


    Error description: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '(SELECT COUNT(*) FROM conversation WHERE user_one = '' OR user_two = '' as messa' at line 1


    Gruß