System Nachricht nach 5 sekunden automatisch wieder aus der Datenbank löschen.

Fonex47

Mitglied
Hallo lieber Tutos,

Ich habe hier eine Funktion die automatisch rein schreibt wenn jemand den Raum im Chat betritt.

PHP:
function joinRoom(){
    global $lang, $data, $cody;
    if(allowLogs() && isVisible($data) && $cody['join_room'] == 1){
        $content = str_replace('%user%', systemNameFilter($data), $lang['system_join_room']);
        systemPostChat($data['user_roomid'], $content, array('type'=> 'system__join'));
    }
}

Ich möchte das nach 5 sekunden diese Nachricht wieder aus der Datenbank gelöscht wird, sprich das es so animiert wieder verschwindet.
Ich habe es jetzt mit css so hinbekommen es sieht zwar toll aus aber beim neu laden der seite logischerweise diese Nachricht noch zu sehen ist.

Das ist die Funktion selber:

PHP:
function systemPostChat($room, $content, $custom = array()){
    global $mysqli, $data;
    $def = array(
        'type'=> 'system',
        'color'=> 'chat_system',
        'rank'=> 99,
    );
    $post = array_merge($def, $custom);
    $mysqli->query("INSERT INTO `boom_chat` (post_date, user_id, post_message, post_roomid, type, log_rank, tcolor) VALUES ('" . time() . "', '{$data['system_id']}', '$content', '$room', '{$post['type']}', '{$post['rank']}', '{$post['color']}')");
    chatAction($room);
    return true;
}


Das ist der code mit dem ich es versucht habe:


CSS:
.system__join {
  -webkit-animation: seconds 1.0s forwards;
  -webkit-animation-iteration-count: 1;
  -webkit-animation-delay: 3s;
  animation: seconds 1.0s forwards;
  animation-iteration-count: 1;
  animation-delay: 3s;
  position: relative;
    
}
@-webkit-keyframes seconds {
  0% {
    opacity: 1;
  }
  100% {
    opacity: 0;
    left: -9999px;
    position: absolute;   
  }
}
@keyframes seconds {
  0% {
    opacity: 1;
  }
  100% {
    opacity: 0;
    left: -9999px;
    position: absolute;     
  }
}

Würde mich über ratschläge echt freuen.
Mfg Fonex
 

Loddar1

Erfahrenes Mitglied
Ich verstehe zwar deinen Code nicht wirklich, aber wo holst du denn das Css her
Aus der Datenbank oder von wo?
 

Fonex47

Mitglied
Ich verstehe zwar deinen Code nicht wirklich, aber wo holst du denn das Css her
Aus der Datenbank oder von wo?
Nein das Css wird normal geladen und ist gespeichert in der .css datei.

ich dachte vllt kann man hier mit einem timer die nachricht wieder gleichzeitig entfernen nach dem es rein geschrieben wird mit dem mysql query.


PHP:
function systemPostChat($room, $content, $custom = array()){
    global $mysqli, $data;
    $def = array(
        'type'=> 'system',
        'color'=> 'chat_system',
        'rank'=> 99,
    );
    $post = array_merge($def, $custom);
    $mysqli->query("INSERT INTO `boom_chat` (post_date, user_id, post_message, post_roomid, type, log_rank, tcolor) VALUES ('" . time() . "', '{$data['system_id']}', '$content', '$room', '{$post['type']}', '{$post['rank']}', '{$post['color']}')");
    chatAction($room);
    return true;
}
 

Loddar1

Erfahrenes Mitglied
Aus der CSS-Datei ist es immer vorhanden.
Du könntest einen Container mit deinen css laden, welcher nach Zeit x durch einen anderen Container mit anderen css ersetzt wird.
 

Fonex47

Mitglied
Aus der CSS-Datei ist es immer vorhanden.
Du könntest einen Container mit deinen css laden, welcher nach Zeit x durch einen anderen Container mit anderen css ersetzt wird.
Ja ich habe es ja so hinbekommen, nur möchte ich das die Einträge aus der Datenbank wieder gelöscht werden.
Das Problem ist beim neu laden der Seite werden die wieder angezeigt und halt das selbe von vorn ne, die werden dann ausgeblendet wieder.
 

basti1012

Erfahrenes Mitglied
Dein Chat aktualisiert sich ja alle x Sekunden. Da wird irgendwo über Ajax ein PHP Script aufgerufen, wo die neuen Nachrichten geholt werden.
Da könntest du ja auch abfragen, ob sich einer in den letzten Sekunden eingeloggt hat und dann die Willkommensnachricht löschen.
 

Fonex47

Mitglied
Wenn du es unbedingt mit DB machen willst, versuche es mit IP-Adresse und zeitstempel
Das hört sich gut an.

Dein Chat aktualisiert sich ja alle x Sekunden. Da wird irgendwo über Ajax ein PHP Script aufgerufen, wo die neuen Nachrichten geholt werden.
Da könntest du ja auch abfragen, ob sich einer in den letzten Sekunden eingeloggt hat und dann die Willkommensnachricht löschen.
Es ist die Nachricht vom
System: “User x kommt hinein“.

Möchte halt das sie nach 2-3 Sekunden wieder von der Datenbank gelöscht wird.