Avatar billede Weedfald Juniormester
04. februar 2019 - 17:42 Der er 1 kommentar og
2 løsninger

MySQL Desc limit

Spørgsmål:
Én kode der automatisk tømmer databasen når desc limit er nået?
Det drejer sig om lagring af chatbeskeder, som eksempel:
Når brugerne har skrevet 200 beskeder, så slettes beskederne sådan, at der er plads til nye.

Evt. en løsning hvorpå beskeder slettes efter x-antal sekunder?

Min kode so far:

if(isset($_SESSION['logget_ind']) && $_SESSION['logget_ind'] == true) {
    $getRoom = mysql_query("SELECT `rum` FROM `chat_brugere` WHERE `id` = '".$_SESSION['id']."'");
    $showRoom = mysql_fetch_array($getRoom);
   
    $getMessages = mysql_query("SELECT `bruger`, `besked` FROM `chat_beskeder` WHERE `rum` = '".$showRoom['rum']."' ORDER BY `id` DESC LIMIT 200");
   
    if (mysql_num_rows($getMessages) == 0) {
        echo 'Ingen beskeder...';
    } else {
        while ($showMessages = mysql_fetch_array($getMessages)) {
           
            echo '<head>
<meta http-equiv="refresh" content="1">
</head><meta charset=UTF-8><font style="font-weight: bold;">'.$showMessages['bruger'].'</font>: '.htmlspecialchars($showMessages['besked']).'<br />';

        }
    }
}
Avatar billede arne_v Ekspert
04. februar 2019 - 17:56 #1
Maaske:

DELETE FROM chat_beskeder WHERE rum=? AND id NOT IN (SELECT id FROM chat_beskeder WHERE rum=? ORDER BY id DESC LIMIT 200)

Huske at teste grundigt!!!!
Avatar billede Weedfald Juniormester
04. februar 2019 - 18:10 #2
Så min kode i så fald ser således ud?
Ret mig gerne, jeg er ikke skarp i MySQL!

Kode:

$deleteMessages = mysql_query("DELETE FROM `chat_beskeder` WHERE `rum`= '".$showRoom['rum']."' AND `id` NOT IN (SELECT `id` FROM `chat_beskeder` WHERE `rum` = '".$showRoom['rum']."' ORDER BY `id` DESC LIMIT 200");
Avatar billede arne_v Ekspert
04. februar 2019 - 20:37 #3
Jeg tror der mangler en parentes.

LIMIT 200");

->

LIMIT 200)");
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester