MySQL-> Einträge löschen
Übersicht

![]() |
FirstdeathmakerBetreff: MySQL-> Einträge löschen |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hi,
ich versuche gerade selber einen onlinehighscore zusammen zu basteln, bin auch schon fast fertig, nur will mir das löschen von zu vielen Einträgen noch nicht gelingen. Ich möchte immer nur die 10 besten behalten und alle anderen darunter löschen. In meinem Script steht also: Code: [AUSKLAPPEN] $loeschen = "DELETE FROM highscore ORDER BY points LIMIT 10,0";
$ergebnis = mysql_query($loeschen); Es wird kein Fehler ausgegeben, aber es wird auch nix gelöscht. Was mache ich also falsch? Ich hab es auch schon mal hiermit versucht, aber das geht auch nicht: Code: [AUSKLAPPEN] $abfrage = "SELECT * FROM highscore ORDER BY points DESC LIMIT 10,0";
$ergebnis = mysql_query($abfrage); while($row = mysql_fetch_object($ergebnis)) { $id = $row->id; $loeschen = "DELETE FROM highscore Where id = $id"; $loesch = mysql_query($loeschen); } Kann mir jemand sagen was ich falsch mache? |
||
www.illusion-games.de
Space War 3 | Space Race | Galaxy on Fire | Razoon Gewinner des BCC #57 User posted image |
![]() |
Silver_Knee |
![]() Antworten mit Zitat ![]() |
---|---|---|
ich würd einfach alles nach punkten sortiert selecten, in die schleife einen counter setzten und wenn der über 10 geht den aktuellen eintrag löschen:
Code: [AUSKLAPPEN] $abfrage = "SELECT * FROM `highscore` ORDER BY `points`";
$ergebnis = mysql_query($abfrage); while($row = mysql_fetch_object($ergebnis)){ $id = $row['id']; $loeschen = "DELETE FROM `highscore` WHERE `id` = '$id' "; $loesch = mysql_query($loeschen); } so dürfte es gehen. ich hab mal anführungsstriche an alles gesetzt. |
||
![]() |
PddBetreff: Re: MySQL-> Einträge löschen |
![]() Antworten mit Zitat ![]() |
---|---|---|
Firstdeathmaker hat Folgendes geschrieben: Hi,
Code: [AUSKLAPPEN] $loeschen = "DELETE FROM highscore ORDER BY points LIMIT 10,0";
$ergebnis = mysql_query($loeschen); Ich bin in MySQL auch nicht so fit, aber meines Wissens müsste es so heißen: Code: [AUSKLAPPEN] $loeschen = "DELETE FROM `highscore` ORDER BY `points` DESC LIMIT 10,0;"; $ergebnis = mysql_query($loeschen); - (Bei den Namen der Tabellen auf Groß/Klein-Schreibung achten!) - Ausserdem weiß ich nicht, was das ",0" bei Limit zu suchen hat. - Du hast das abschließende ";" in der Query vergessen! Wenn das nicht funktioniert, versuche noch ein "WHERE 1 = 1" mit einzubringen. Viel Glück! ![]() |
||
Lieber Apfel als Birne. |
![]() |
Firstdeathmaker |
![]() Antworten mit Zitat ![]() |
---|---|---|
Edit: @ Pd: Wo hab ich da das Semikolon bei Querry vergessen? In deinem Zitat meines Posts und in meinem Post ist es enthalten...
Funktioniert aber leider so immer nocht nicht. @Silver_Knee: Meinst du so? Code: [AUSKLAPPEN] $abfrage = "SELECT * FROM `highscore` ORDER BY `points`";
$ergebnis = mysql_query($abfrage); $counter = 0; while($row = mysql_fetch_object($ergebnis)){ $counter++; if ($counter>10){ $id = $row['id']; $loeschen = "DELETE FROM `highscore` WHERE `id` = '$id' "; $loesch = mysql_query($loeschen); } } Da meckert der aber wegen der Zeile Code: [AUSKLAPPEN] $id = $row['id'];
und sacht Zitat: Cannot use object of type stdClass as array
Ich hab jetzt noch was anderes probiert, aber das funktioniert auch nicht: Code: [AUSKLAPPEN] $abfrage = "DELETE FROM highscore WHERE id NOT IN (select id from highscore ORDER BY points LIMIT 10)";
$ergebnis = mysql_query($abfrage); echo "Gelöscht: $ergebnis"; |
||
www.illusion-games.de
Space War 3 | Space Race | Galaxy on Fire | Razoon Gewinner des BCC #57 User posted image |
![]() |
D2006Administrator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Code: [AUSKLAPPEN] $loeschen = "DELETE FROM highscore ORDER BY points LIMIT 10";
"LIMIT 10,0" heißt er soll die ersten 10 überspringen und dann 0 löschen. Wenn du nur einen Parameter angibst, dann heißt das er soll die ersten 10 löschen. |
||
Intel Core i5 2500 | 16 GB DDR3 RAM dualchannel | ATI Radeon HD6870 (1024 MB RAM) | Windows 7 Home Premium
Intel Core 2 Duo 2.4 GHz | 2 GB DDR3 RAM dualchannel | Nvidia GeForce 9400M (256 MB shared RAM) | Mac OS X Snow Leopard Intel Pentium Dual-Core 2.4 GHz | 3 GB DDR2 RAM dualchannel | ATI Radeon HD3850 (1024 MB RAM) | Windows 7 Home Premium Chaos Interactive :: GoBang :: BB-Poker :: ChaosBreaker :: Hexagon :: ChaosRacer 2 |
![]() |
Silver_Knee |
![]() Antworten mit Zitat ![]() |
---|---|---|
@my code
Code: [AUSKLAPPEN] mysql_fetch_object($ergebnis)
ahaaa ich nutze immer Code: [AUSKLAPPEN] mysql_fetch_array($ergebnis)
woraufhin meine schreibweise mit dem $row['id'] benutzbar wird also entweder: Code: [AUSKLAPPEN] $abfrage = "SELECT * FROM `highscore` ORDER BY `points`";
$ergebnis = mysql_query($abfrage); $counter = 0; while($row = mysql_fetch_array($ergebnis)){ $counter++; if ($counter>10){ $id = $row['id']; $loeschen = "DELETE FROM `highscore` WHERE `id` = '$id' "; $loesch = mysql_query($loeschen); } } oder Code: [AUSKLAPPEN] $abfrage = "SELECT * FROM `highscore` ORDER BY `points`";
$ergebnis = mysql_query($abfrage); $counter = 0; while($row = mysql_fetch_object($ergebnis)){ $counter++; if ($counter>10){ $id = $row->id; $loeschen = "DELETE FROM `highscore` WHERE `id` = '$id' "; $loesch = mysql_query($loeschen); } } |
||
![]() |
Firstdeathmaker |
![]() Antworten mit Zitat ![]() |
---|---|---|
Dann müsste das hier aber funktionieren (tut es aber nicht):
Code: [AUSKLAPPEN] $anfrage = "DELETE FROM `highscore` ORDER BY `points` DESC LIMIT 10,9999;";
$ergebnis = mysql_query($anfrage); Edit: Aha, @Silver_Knee: Jetzt funktionierts. Ich glaube mein Fehler war auch, das man LIMIT bei DELETE nicht mit 2 Parametern einsetzen kann, sondern nur mit einem. Dankeschön! |
||
www.illusion-games.de
Space War 3 | Space Race | Galaxy on Fire | Razoon Gewinner des BCC #57 User posted image |
![]() |
Justus |
![]() Antworten mit Zitat ![]() |
---|---|---|
Entschuldige, wenn es nicht ganz ontopic ist:
Ich würde dir davon abraten, nur 10 Scores in der Datenbank zu behalten. Niemand weiß, ob du irgendwann nicht nochmal eine längere Liste brauchst und sei es nur interessehalber. Eine MySQL-Datenbank verbraucht lächerlich wenig Speicherplatz, ich würde dir empfehlen, zwischen 500 und 1000 Beiträgen zu speichern; wie viele du davon ausgibst, ist natürlich eine andere Frage. |
||
![]() |
Farbfinsternis |
![]() Antworten mit Zitat ![]() |
---|---|---|
Justus hat recht, gucke Dir mal den Source an den ich in Deinen Thread gepostet habe. Dieser erlaubt es Dir nur die besten zehn anzuzeigen.
Code: [AUSKLAPPEN] highscore.GetScores(0, 10) |
||
Farbfinsternis.tv |
![]() |
Pdd |
![]() Antworten mit Zitat ![]() |
---|---|---|
Firstdeathmaker hat Folgendes geschrieben: Edit: @ Pd: Wo hab ich da das Semikolon bei Querry vergessen? In deinem Zitat meines Posts und in meinem Post ist es enthalten...
Funktioniert aber leider so immer nocht nicht. Nein, ich meinte das Semilikon innerhalb der Query. Das hast du vergessen und ich habe es eingefügt ![]() ![]() |
||
Lieber Apfel als Birne. |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group