letzte Zeile löschen

yaga

Grünschnabel
Hi Leute,

kann mir jemand sagen wie man die letzte Zeile einer Tabelle löschen kann, wenn diese ein bestimmets beinhaltet.

Habe es über:

$elisa = "Elisa";
$query = "DELETE MAX(id) FROM chat WHERE name like '$name'";
$res = mysql_query ($query) OR die(mysql_error());

versucht. Funktioniert aber nicht.


Grüße
yaga
 
Habe danach schon in mehreren Tutorials nachgeschaut, doch diesen Spezialfall nirgends entdeckt.

Es wird noch schlimmer, wenn man versucht die letzte Zeile immer dann zu löchen wenn sie der vorletzten vom Inhalt her gleicht.
Es geht hier um ein refresh-Problem in einem chat. Ich möchte es vermeiden, dass lauer gleiche Zeilen auftauchen.

Habe es vergeblich damit versucht:

PHP:
$query_z = "SELECT MAX(id) as last_id FROM chat;"; 
$res_z = mysql_query ($query_z) OR die(mysql_error()); 

while ($row_z = mysql_fetch_array($res_z))
{
$query_y = "SELECT MAX(id)-1 as vor_last_id FROM chat;"; 
$res_y = mysql_query ($query_y) OR die(mysql_error()); 

while ($row_y = mysql_fetch_array ($res_y)) 
{
$query = "DELETE FROM chat WHERE '".($row_z['last_id'])."' LIKE '".($row_y['vor_last_id'])."'"; 
mysql_query ($query) OR die(mysql_error()); 
}}

Kann mir jemand weiterhelfen?

Gruß
yaga
 
Servus!

Würde das grob so machen, geht aber bestimmt auch anders:

while((Zeile = lies_Zeile)!=null ){

index=ZeilenIndex // kann lieder kein PHP

}
... wenn das Script den Whileblock verlässt hast es ja den letzten Datensatz als "letztes" passiert (wenn der Datensatz nach der aktuellen Sortierung der letzte ist ...) d.h. in unserer Variable Index, in dr wir uns immer den jeweiligen Zeilenindex Merken steht noch der Index der letzten Zeile ...

jetzt gehen wir nur noch hin und sagen:

delete * from tabelleXXX where zeilenindex = index ...

...fertig!

Gruss Tom
 
Das geht auch mit sql allein:

$query = "DELETE FROM chat WHERE name like '$name' order by id dec limit 1";
 
das:

delete from apo_aktuell order by apo_aktuellID asc limit 1

oder auch das:

delete from apo_aktuell order by asc limit 1


und so ähnlich wie das:

DELETE FROM chat WHERE name like '$name' order by id dec limit 1
klappt bei mir nich, ich will den letzten Éintrag sprich die letzte zeile weg haben und immer nur Fünf haben, immer wenn er merkt da is eine 6 Zeile dann muss die erste wieder weg.

nur meine aktuellID is auto increment unsigned und primary key deshalb nimmt sie zahlen an wie sie lust hast und nciht immer nur 1bis 5 bzw bis 6


Wer hat eine schnelle Lösung?

gesucht hab ich im forum schon;-)
 
Hmmm in melmagers Syntax ist zumindest ein Fehler drin:

Das "dec" (würde für decimal stehen" muss eigentlich "desc" (absteigend) heissen.

Ausserdem könnte es sein, dass das "Limit 1" nicht bei allen Datenbanken funktioniert.
Probiers dann mal mit "top 1"
 

Neue Beiträge

Zurück