Nach jedem Eintrag eine andere Ausgabe

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Nach jedem Eintrag eine andere Ausgabe

    Hallo,

    mal wieder ein weiteres Problem.
    Ich Arbeite gerade an einem PM System für unseren Clan. Soweit funktioniert alles.
    Allerdings hätte ich noch gerne ein features. Wenn eine Nachricht eine Antwort oder mehrere erhällt soll sich bei jeder Antwort die Ausrichtung ändern.

    Einmal der Code:

    Quellcode

    1. $DB->set_sql('SELECT c.*, p.* FROM
    2. ' . ADMIN . ' AS c,
    3. ' . PM . ' AS p
    4. WHERE c.id = p.from
    5. AND p.tos =:1
    6. AND p.ID =:2
    7. ORDER BY time DESC');
    8. $DB->execute($admindata['id'],$pm_id);
    9. while ($row = $DB->fetch_assoc())
    10. {
    11. $row['message'] = '<li class="left">
    12. <div class="image">
    13. <img src="./ava/'.$row['ava'].'" alt="">
    14. </div>
    15. <div class="message">
    16. <span class="name">'.$row['name'].'</span>
    17. <p>'.$row['message'].'</p>
    18. <span class="time">
    19. '.$ACP->usertime($row['time']).'
    20. </span>
    21. </div>
    22. </li>';
    23. $pm[] = $row;
    24. }
    Alles anzeigen


    Bei jeder neuen Antwort soll sich <li class="left"> in <li class="right"> ändern bzw. immer Abwechseln. Mit Left soll es anfangen.
    Derzeit habe ich keine Ahnung wie ich das anstellen soll. Ich habe Smarty im Einsatz, evtl lässt sich das damit regeln oder wäre einfacher
  • Hi,

    also dafür ist weder str_replace noch mitzählen oder modulo oder so nötig ...
    Das vorhaben lässt sich schon mit ein paar zeilen css lösen --> jsfiddle.net/der_robert/EWn3y/

    Das einzige "problem" ist, wenn jemand auf eine nachricht zweimal nacheinander antwortet - dann würde natürlich die zweite nachricht (vom selben user) "die Richtung wechseln". Wenn dies nicht vorkommt das soltle das ausreichen - ansonsten.

    Wenn es doch vorkommen sollte würde ich es per smarty so lösen ->

    Quellcode

    1. {foreach form=$pm item=item key=key}
    2. <li class="{if $item.user_id == $user_id}right{else}left{/if}">
    3. <div class="image">
    4. <img src="./ava/{$item.ava}" alt="">
    5. </div>
    6. <div class="message">
    7. <span class="name">{$item.name}</span>
    8. <p>{$item.message}</p>
    9. <span class="time">
    10. {$item.time|irgendein_modifier_oder_so}
    11. </span>
    12. </div>
    13. </li>
    14. {/foreach}
    Alles anzeigen


    Prüfe einfach ob die user_id der Nachricht mit der user_id desjenigen übereinstimmt der sich die nachricht ansieht - right ansonsten left.

    Da ja idr die erste nachricht die jemand liest nich von einem selber stammt könnte man die zeile 2 auch so schreiben:

    Quellcode

    1. <li class="{if $item.user_id != $user_id}left{else}right{/if}">


    Das Ergebnis wäre aber das selbe.

    BTW.: Wenn du doch Smarty benutzt warum lässt du dann von php das array schon mit html zusammen bauen - eigendlich ist doch der sinn und zweck von Smarty das Design vom (php)-Code zu trennen.