Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP][MySQL]Usuwanie danych w bazie MySQL po osiągnięciu piętnastu wpisów
Zeelof
post 4.02.2011, 14:39:21
Post #1





Grupa: Zarejestrowani
Postów: 83
Pomógł: 0
Dołączył: 7.02.2008

Ostrzeżenie: (0%)
-----


Piszę skrypt shoutboxa na swoją witrynę, jednak nie mogę dojść jak usuwać dane z tabeli po osiągnięciu 15 rekordów.
Prosić kogoś o pomoc?
Go to the top of the page
+Quote Post
jaworr
post 4.02.2011, 14:42:37
Post #2





Grupa: Zarejestrowani
Postów: 27
Pomógł: 5
Dołączył: 29.09.2010

Ostrzeżenie: (0%)
-----


mysql_num_rows
http://php.net/manual/en/function.mysql-num-rows.php
Go to the top of the page
+Quote Post
nospor
post 4.02.2011, 14:44:59
Post #3





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




  1. DELETE FROM tabela ORDER BY date DESC LIMIT 15,200000000

To ci powinno skasowac wszystkie rekordy oprocz 15-stu najswieższych


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Zeelof
post 4.02.2011, 14:59:01
Post #4





Grupa: Zarejestrowani
Postów: 83
Pomógł: 0
Dołączył: 7.02.2008

Ostrzeżenie: (0%)
-----


Cytat(nospor @ 4.02.2011, 14:44:59 ) *
  1. DELETE FROM tabela ORDER BY date DESC LIMIT 15,200000000

To ci powinno skasowac wszystkie rekordy oprocz 15-stu najswieższych


To teraz mam coś takiego:
  1. $shoutbox_usuniecie = "DELETE FROM shoutbox WHERE * DESC LIMIT 10,200000000";
  2. $usuniecie_z_shoutbox = mysql_query ($shoutbox_usuniecie);

I nadal nic ;/

Poza tym co oznacza "200000000"?
Go to the top of the page
+Quote Post
melkorm
post 4.02.2011, 15:12:09
Post #5





Grupa: Zarejestrowani
Postów: 1 366
Pomógł: 261
Dołączył: 23.09.2008
Skąd: Bydgoszcz

Ostrzeżenie: (0%)
-----


  1. WHERE * DESC


a cóż to ?


--------------------
Go to the top of the page
+Quote Post
Zeelof
post 4.02.2011, 15:16:13
Post #6





Grupa: Zarejestrowani
Postów: 83
Pomógł: 0
Dołączył: 7.02.2008

Ostrzeżenie: (0%)
-----


Cytat(melkorm @ 4.02.2011, 15:12:09 ) *
  1. WHERE * DESC


a cóż to ?


A co powinno być w miejscu "*"?
Chciałbym usuwać wszystkie dane w tabeli shoutbox
Go to the top of the page
+Quote Post
thek
post 4.02.2011, 15:18:46
Post #7





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




Widzisz różnicę między swoją składnią a nospora? Po co Where, czemu brak ORDER BY? Tu kompletnie chyba nie wiesz co robisz?


--------------------
Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
Go to the top of the page
+Quote Post
Zeelof
post 4.02.2011, 15:29:34
Post #8





Grupa: Zarejestrowani
Postów: 83
Pomógł: 0
Dołączył: 7.02.2008

Ostrzeżenie: (0%)
-----


Cytat(thek @ 4.02.2011, 15:18:46 ) *
Widzisz różnicę między swoją składnią a nospora? Po co Where, czemu brak ORDER BY? Tu kompletnie chyba nie wiesz co robisz?


No dobrze, ale jak mam:
  1. $shoutbox_usuniecie = "DELETE FROM shoutbox ORDER BY * DESC LIMIT 2,200000000";
  2. $usuniecie_z_shoutbox = mysql_query ($shoutbox_usuniecie);

To mimo wszystko nie działa...
Go to the top of the page
+Quote Post
osl
post 4.02.2011, 15:41:27
Post #9





Grupa: Zarejestrowani
Postów: 260
Pomógł: 41
Dołączył: 6.04.2009
Skąd: Gdańsk/okolice

Ostrzeżenie: (0%)
-----


co się tak uparłeś na tą "*"?
Go to the top of the page
+Quote Post
Zeelof
post 4.02.2011, 15:43:04
Post #10





Grupa: Zarejestrowani
Postów: 83
Pomógł: 0
Dołączył: 7.02.2008

Ostrzeżenie: (0%)
-----


Cytat(osl @ 4.02.2011, 15:41:27 ) *
co się tak uparłeś na tą "*"?


A co zamiast niej czy też "date" powinno być?
Go to the top of the page
+Quote Post
osl
post 4.02.2011, 15:46:15
Post #11





Grupa: Zarejestrowani
Postów: 260
Pomógł: 41
Dołączył: 6.04.2009
Skąd: Gdańsk/okolice

Ostrzeżenie: (0%)
-----


to zależy od tego jakie pola masz w bazie danych... potrzebujesz pola, po którym jesteś w stanie stwierdzić, która wiadomość była napisana ostatnio.
Go to the top of the page
+Quote Post
Zeelof
post 4.02.2011, 16:13:53
Post #12





Grupa: Zarejestrowani
Postów: 83
Pomógł: 0
Dołączył: 7.02.2008

Ostrzeżenie: (0%)
-----


Cytat(osl @ 4.02.2011, 15:46:15 ) *
to zależy od tego jakie pola masz w bazie danych... potrzebujesz pola, po którym jesteś w stanie stwierdzić, która wiadomość była napisana ostatnio.


A czy do tego potrzebuję również pole "id"?

Właściwie to obojętne w jakim miejscu kodu wstawię?
Aktualnie mam tak:
  1. // zapis do dwudziestu wiadomości shoutboxa
  2. if (isset ($_POST['wyslij']))
  3. {
  4. $shoutbox_zapis = "insert into shoutbox (login, tresc) values ('$login','{$_POST['tresc']}')";
  5. $obsluga_zapisu = mysql_query ($shoutbox_zapis);
  6. // usuwanie wiadomości shoutboxa, gdy więcej niż 20
  7. $shoutbox_usuniecie = "DELETE FROM shoutbox ORDER BY id, login, tresc DESC LIMIT 20,200000000";
  8. $usuniecie_z_shoutbox = mysql_query ($shoutbox_usuniecie);
  9. }


Nadal nie kasuję mi wiadomości...
Go to the top of the page
+Quote Post
kadlub
post 4.02.2011, 16:18:27
Post #13





Grupa: Zarejestrowani
Postów: 548
Pomógł: 105
Dołączył: 4.06.2010

Ostrzeżenie: (0%)
-----


Cytat(osl @ 4.02.2011, 15:46:15 ) *
to zależy od tego jakie pola masz w bazie danych... potrzebujesz pola, po którym jesteś w stanie stwierdzić, która wiadomość była napisana ostatnio.

a od czego jest id i auto_increment
wystarczy zapytanie sprawdzające ilość rekordów
zapytanie usuwające najmniejsze id
Go to the top of the page
+Quote Post
Zeelof
post 4.02.2011, 16:21:14
Post #14





Grupa: Zarejestrowani
Postów: 83
Pomógł: 0
Dołączył: 7.02.2008

Ostrzeżenie: (0%)
-----


Cytat(kadlub @ 4.02.2011, 16:18:27 ) *
a od czego jest id i auto_increment
wystarczy zapytanie sprawdzające ilość rekordów
zapytanie usuwające najmniejsze id


No to mam "id", ale powyższy skrypt nadal nie działa...
Go to the top of the page
+Quote Post
kadlub
post 4.02.2011, 16:37:59
Post #15





Grupa: Zarejestrowani
Postów: 548
Pomógł: 105
Dołączył: 4.06.2010

Ostrzeżenie: (0%)
-----


  1. <?php
  2. include("db.php");
  3. $zapytanie=mysql_query("SELECT * FROM pobrane");
  4. $ktory=mysql_fetch_array(mysql_query("SELECT id_pobrane FROM pobrane LIMIT 19,20") );
  5.  
  6. $ostatnie=$ktory['id_pobrane']-19;
  7. if (mysql_num_rows($zapytanie)=="20") {
  8.  
  9. $usun=mysql_query("DELETE FROM pobrane WHERE id_pobrane=$ostatnie");
  10.  
  11. $zmienna1=mysql_query("INSERT INTO pobrane (nazwa_pliku , liczba_pobran) values ('cośtam' , '54');");
  12. }
  13. else {
  14.  
  15. $zmienna2=mysql_query("INSERT INTO pobrane (nazwa_pliku , liczba_pobran) values ('costam' , '67');");
  16. }
  17.  
  18. ?>
  19.  
  20.  

może to coś ci pomoże tylko powstawiaj swoje nazwy pól z tabel i baze danych swoją

skrypt sprawdza ile jest rekordów w tabeli jeśli jest mniej niż 20 zapisuje normalnie jeśli jest wjęcej niż 20 usuwa ostatni i zapisuje nowy

Go to the top of the page
+Quote Post
nospor
post 4.02.2011, 20:20:06
Post #16





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Zeelof przeszedles chyba samego siebie z wariacjami bez powtórzen w cyklu "Jak zepsuc dobrze napisane zapytanie " :/
Skoro u Ciebie id określa kolejnosc wiadomosci to ma byc tak:
DELETE FROM shoutbox ORDER BY id DESC LIMIT 20,200000000

a 2000000 to poprostu okreslenie w tym przypadku wszystkich rekordów. mysql niestety nie posiada znaku nieskonczonosci wink.gif


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 1.07.2025 - 05:06