MySQL Tabellen-datensätze anzahl begrenzen und alte löschen
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
after
anweisung
anzahl
break
code
date
datei
datenbank
datensatz
ergebnis
helfen
jemand
kontrollieren
limit
mittel
nutzen
referenz
tabelle
trigger
url
-
Hi, ich hab einen Chat geschrieben und möchte nun die anzahl der datensätze in dieser tabelle auf 50 begrenzen und dass der älteste datensatz wenn die 50 überschritten wurde gelöscht wird.
Kann mir da jemand helfen?
$db=mysql_connect("localhost","root",""); mysql_select_db("nacave"); $query="SELECT * FROM Chat"; $ergebnis=mysql_query($query); $ex=mysql_fetch_row($ergebnis); while($anz=mysql_num_rows($ergebnis)!=false) { print("<b id=\"chatname\">[".$ex[3]."]".$ex[1].":".$ex[2]."</b><br />\n"); $ex=mysql_fetch_row($ergebnis); if($ex[0]=="") { break; } } $anz=mysql_num_rows($ergebnis); print(' <br /><form action="chat.php" method="post"> <input type="text" id="chat" name="c"> <input type="submit" value="Senden">'); print("<script language=\"JavaScript\" type=\"text/javascript\">if(document.getElementById) document.getElementById('chat').focus();</script>"); print('</form> <script language="javascript"> <!-- setTimeout("location.reload()", 3000); // --> </script>'); $a=$usercsv[0]; $b=":"; $c=$_POST['c']; $c=htmlspecialchars($c); $c=htmlentities($c); $d=date("G:i:s"); $id=$anz+1; if($c=="") { print(" "); } else { $query="INSERT INTO Chat VALUES( '".$id."', '".$usercsv[0]."', '".$c."', '".$d."' )"; mysql_query($query); mysql_close($db); print(' <script language="javascript"> <!-- var weitergeleitet = "chat.php"; function weiterleitung() { window.location = weitergeleitet ; } setTimeout("weiterleitung()", 0); // --> </script>'); }
PS: die variable $usercsv[0] wird aus einer CSV-datei eingelesen.....
PS²: Ich benutze datenbanken erst seit gestern
Thx schonmal -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Also. Eine wirklich elegante Lösung wäre, die Anzahl der Datensätze mit einem Trigger zu kontrollieren. Das ist aber ein recht professionelles SQL-Mittel, weiß nicht, ob du damit klar kommst...
Aber hier mal der Link zur MySQL-Referenz:
Create Trigger
Das ganze würde etwa so aussehen (ohen konkrete Spaltennamen...)
CREATE TRIGGER maxfithty AFTER INSERT ON Chat FOR EACH ROW BEGIN DELETE FROM Chat WHERE (SELECT Count(*) FROM Chat) > 50 AND id = (SELECT min(id) FROM Chat); END;
Ich bin mir aber nicht sicher obs funktioniert. Nicht getestet. Musst überhaupt mal sehen, ob man auf Lima das Trigger Recht hat. -
Alternativ schreibt er halt zwei Queries. Im ersten fügt er den Datensatz ein und im zweiten löscht er alle Datensätze die nach den ersten 50 kommen. Dann bräuchte er keinen Trigger zu nutzen. Klar ist der Trigger eine elegantere Lösung, aber AFAIK sind Trigger auf Lima nicht aktiv für uns.
-
und wie mach ich, dass die db weiß, dass der datensatz über 50 ist?
Habs mit mysql_num_rows probiert bin aber nicht weit gekommen... -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage