Warnung: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php (Zeile 58)
Datensätzen löschen ? [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr

- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
Datensätzen löschen ?


 
paddy
24-12-2001, 14:50 
 
Wie müsste eine Abfrage aussehen , mit der man die DAtensätze 10 - Unendlich löschen möchte .
Habs mit Linmit probiert - geht irgendwie nicht .
Ausserdem sollten nur die neusten 10 Datensätze übrigbleiben. Das habe ich mit ORDER BY versucht .

delanfrage = "DELETE FROM tabelle_1 ORDER BY spalte1 DESC LIMIT ??,??";

thanx

 
Sky
24-12-2001, 15:05 
 
DELETE FROM tabelle_1 ORDER BY spalte1 DESC LIMIT 9,(COUNT(spalte1))

 
paddy
24-12-2001, 16:22 
 
Original geschrieben von Sky
DELETE FROM tabelle_1 ORDER BY spalte1 DESC LIMIT 9,(COUNT(spalte1))

Hmmm , funktioniert irgendwie nicht . Bekomme immer Fehlermeldung :
You have an error in your SQL syntax near 'ORDER BY spalte1 DESC LIMIT 9,(COUNT(spalte1))' at line 1
Woran liegt's ?

 
Sky
24-12-2001, 16:30 
 
Hm, COUNT() geht offensichtlich nicht in einer LIMIT-Clause.
Mach vorher eine Abfrage

SELECT count(*) FROM tabelle_1

und bau das Ergebnis dann in ein Limit ein.

 
paddy
24-12-2001, 16:36 
 
Danke , werde es gleich mal probieren .

 
paddy
24-12-2001, 23:21 
 
Also irgendwie klapps nicht - scheinbar stört die ORDER BY anweisung !? Oder auch die LIMIT anweisung .
Vielleicht kanns jemand mal ausprobieren :

$anfrage = "SELECT COUNT(*) FROM tabelle1";
IF ($zahl = mysql_query($anfrage)) {
$anzahl = mysql_num_rows($zahl);
$delanfrage = "DELETE FROM tabelle1 ORDER BY datum DESC LIMIT 9,'$anzahl'";
IF ($deletenow = mysql_query($delanfrage)) {
echo "Befehl OK";
}
Else {
echo "Fehlermeldung=".mysql_error();
exit;
}
} Else {
echo "Fehlermeldung=".mysql_error();
exit;
}

Hmm bin mehr oder weniger am ende - habe jetzt einige situationen durchprobiert aber es will irgenwie nicht klappen :(

Thanx Paddy

 
Sky
24-12-2001, 23:26 
 
$anzahl = mysql_num_rows($zahl) - 10;
$delanfrage = "DELETE FROM tabelle1 ORDER BY datum DESC LIMIT 9,$anzahl";

 
paddy
24-12-2001, 23:55 
 
Es kommt immernoch die gleiche Fehlermeldung :
You have an error in your SQL syntax near 'ORDER BY datum DESC LIMIT 9,1' at line 1

Irgendwas stört da .

 
PAB
06-01-2002, 03:02 
 
Hat sich da schon was neues ergeben?

 
Berni
06-01-2002, 04:35 
 
order by in Delete? Das geht nicht!

 
paddy
06-01-2002, 10:20 
 
Nee hat sich noch nicht gekärt :(

 
MelloPie
06-01-2002, 12:08 
 
vielleicht solltest Du das Datum des letzten zu behaltenden Datensatz holen:
zB "select datum from tbl order by datum limit 9,1"
So jetzt hast Du das den 10. neuesten datensatz
und jetzt machste
"DELETE from tbl where datum > 'Ergebnis der 1. Query'"

 
PAB
06-01-2002, 13:29 
 
Das mit dem SELECT funzt gut.

$nrentry = mysql_result(mysql_query("SELECT COUNT(*) AS TOTAL FROM $maintab", $db), 0);
if($nrentry >= $numofposts)
{
$query = "SELECT * FROM $maintab ORDER BY date LIMIT 0,".($nrentry-$numofposts)."";
$result = mysql_query($query, $db);
if($result)
{
while($data = mysql_fetch_array($result))
{
$query = "DELETE FROM $maintab WHERE date = ".$data['date']."";
mysql_query($query, $db);
};
};
};


Wenn jemand noch was besseres hat, bitte posten!

Mfg PAB

 
paddy
06-01-2002, 16:21 
 
@MelloPie - Super Idee - so müßte es eigentlich gehen

- -

Alle Zeitangaben in WEZ +2. Es ist jetzt 16:51 Uhr.