 |
| Hinweise |
Willkommen im TP-Hilfe-Forum!Dies ist ein Forum zu den Themen Photoshop, Dreamweaver, Flash, Selbständigkeit und mehr, in dem Du Hilfe, Anleitung oder eine Lösung zu Deinen Problemen erhältst. Aktuell bist Du in unseren Foren als Gast mit reinen Leserechten unterwegs. Wenn Du Dich registrierst, kannst Du eigene Themen verfassen, Deine Frage stellen und privat mit anderen TPlern kommunizieren. Weitere Foren werden zugänglich, und Du wirst – falls gewünscht – per Mail über neue Beiträge informiert. Die Registrierung ist schnell und kostenlos. Sollten bei der Registrierung Fragen auftauchen, reicht ein Klick in unsere Hilfe - Häufig gestellte Fragen oder eine kurze Mitteilung an das Support-Team. Viel Spaß bei Traum-Projekt.com |
04.02.2006, 18:09
|
#1
|
|
TP-Member
Registriert seit: Jan 2006
Ort: NRW
|
[mysql] Proglem mit delete-befehl
Guten Tag.
Folgender Befehl für Mysql funktioniert nicht:
DELETE FROM nlarchiv ORDER BY zeitstempel LIMIT 0 ,2
kann mir jemand sagen, was daran falsch ist?
Danke im Vorraus.
mfG: Nepochal
|
|
|
04.02.2006, 18:11
|
#2
|
|
TP-Special Mod
Registriert seit: Feb 2005
Ort: Haan / NRW
|
limit wird nur im Zusammenhang mit SELECT benutzt.
Du kannst nur schreiben
DELETE FROM `tabelle`
das löscht alles
oder
DELETE FROM `tabelle` WHERE ...
|
|
|
04.02.2006, 18:13
|
#3
|
|
TP-Member
Registriert seit: Jan 2006
Ort: NRW
|
In der Tabelle werden bei mir alte geschriebene Newsletter gespeichert.
ich möchte aber, dass immer nur die neusten 10 gespeichert sind.
und wenn man die einstellungen auf 5 herabsetzt, dass beim nächsten Newsletter den man schreibt, nur noch die 5 neusten gespeichert sind.
wüsstest du, wie ich das am besten machen kann?
|
|
|
04.02.2006, 18:17
|
#4
|
|
TP-Member
Registriert seit: Jan 2006
Ort: NRW
|
ich packe hier einfach mal das Script rein, wie ich mir das gedacht hatte:
PHP-Code:
$sql="insert into nlarchiv (nick, headline, message, datum, zeit, zeitstempel) values ('$_SESSION[nick]','$_POST[headline]','$_POST[message]',now(),now(),'$stempel')";
mysql_query($sql,$db);
$sql="select * from nlarchiv";
$sql=mysql_query($sql,$db);
$nlaanz=mysql_num_rows($sql);
$delete=$nlaanz - $config[nlanz];
echo "$nlaanz $delete";
if($delete>0){
$sql="delete from nlarchiv order by zeitstempel limit 0,'$delete'";
mysql_query($sql,$db);
in $config[nlanz] wird gespeichert, wie viele Newsletter archiviert werden sollen.
|
|
|
04.02.2006, 19:15
|
#5
|
|
TP-Member
Registriert seit: Dec 2005
Ort: Braunschweig
|
Du kannst es so machen dass du eine ID für die Newsletter speicherst und dann die aktuellste ID ausliest. Von der ziehst du dann die eingestellte Zahl von zu löschenden Newslettern ab und löscht dann einfach alle Newsletter deren ID kleiner gleich der Zahl ist.
|
|
|
04.02.2006, 19:16
|
#6
|
|
TP-Special Mod
Registriert seit: Feb 2005
Ort: Haan / NRW
|
Habe gerade nochmal nachgeschaut und muss meine Aussage revidieren, es geht tatsächlich mit Limit, aber nur mit einer Angabe (absolute Anzahl) und nicht wie bei SELECT mit LIMIT Start, Anzahl
Also lass einfach die 0 weg:
$sql="delete from nlarchiv order by zeitstempel limit $delete";
das sollte gehen.
http://dev.mysql.com/doc/refman/4.0/de/delete.html
|
|
|
04.02.2006, 19:38
|
#7
|
|
TP-Member
Registriert seit: Jan 2006
Ort: NRW
|
okay, vielen Dank euch beiden
ich habe es jetzt so gemacht, dass ich in einer while-schleife per select immer den ältesten Eintrag gelesen und daraufhin aus der datenbank entfernt habe, aber ich glaube ich nehme dann doch lieber deinen vorschlag, st@eff.en
|
|
|
05.02.2006, 10:58
|
#8
|
|
TP-Supporter
Registriert seit: Dec 2005
|
du brauchst das nichtmal mit ner while schleife zu machen
du könntest es ungefähr so machen, um die älteste newsletter-id auszulesen:
select * from tabelle order by timestamp_spalte desc limit 1
damit hast du den ältesten newsletter (vorrausgesetzt du hast in deiner tabelle ne timestampspalte), und dann kannste ja einfach alles ältere löschen:
delete from tabelle where id <= $id_vom_anderen_query
aber ich denke wirklich, dass steffens methode besser ist. wollte das hier nur nochmal zur erklärung zeigen 
|
|
|
05.02.2006, 14:51
|
#9
|
|
TP-Member
Registriert seit: Jan 2006
Ort: NRW
|
jo, so meine ich das ja.
aber die while-schleife benutze ich, damit auch mehrere newsletter gelöscht werden, falls man die einstellungen (anzahl der zu speichernden Newsletter) ändert.
auch an dich nochmal vielen dank 
|
|
|
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
|
| Themen-Optionen |
Thema durchsuchen |
|
|
|
| Thema bewerten |
|
|
Forumregeln
|
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:49 Uhr.
|
 |