kostenloser Webspace werbefrei: lima-city


MySQL Tabellen-datensätze anzahl begrenzen und alte löschen

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    nacave

    nacave hat kostenlosen Webspace.

    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("&nbsp;");
    			} 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
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. 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.
  4. e********l

    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.
  5. Autor dieses Themas

    nacave

    nacave hat kostenlosen Webspace.

    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...
  6. e********l

    Eine DELETE Anweisung mit Limit 50,999999999 ;)
  7. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!