Ich würde noch einen Schritt weiter gehen und nur die CSS-Klasse auf dem Modulo basieren lassen, anstatt die gesamte Zeilenausgabe.
Die Ausgabe wird vom Typ immer gleich sein, bspw.:
<div class="chatmsgrow">
<div class="author"><span>Hans Wurst</span><span>27.07.2018 07:05:23</span></div>
<div class="message">foobar is baz</div>
</div>
Je nach Modulo gibst Du dann dem Container die zusätzliche Klasse left oder right, bspw.:
<div class="chatmsgrow left">
...
</div>
<div class="chatmsgrow right">
...
</div>
Wenn Du die chatmsgrow nach dem Flexmodell aufbaust, kannst Du per CSS die Anordnung der Childs für right einfach umdrehen:
flex-direction:row-reverse;
Dein PHP sähe dann in etwa so aus:
$aChatMessages = [];
$sChatMessageTemplate =<<<EOHTML
<div class="chatmsgrow _ANCHOR_">
<div class="author"><span>Hans Wurst</span><span>27.07.2018 07:05:23</span></div>
<div class="message">foobar is baz</div>
</div>
EOHTML;
if ( $result ) {
$iCount = 0;
while ( $row = mysqli_fetch_assoc($result) )
$aChatMessages[] = str_replace( '_ANCHOR_', (($iCount++%2) ? 'left':'right'), $sChatMessageTemplate );
}
Alles anzeigen
Nur als Beispiel, die Namen und Datum/Uhrzeit, sowie die Nachricht selber musst Du natürlich mit ersetzen.
Im HTML kannst Du die Messages dann komplett ausgeben: echo implode( $aChatMessages );