Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> 3 tygodnie temu..., -jak obliczyc ta date ?
venom-ek
post 25.10.2004, 17:51:38
Post #1





Grupa: Zarejestrowani
Postów: 23
Pomógł: 0
Dołączył: 3.09.2004

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


czesc, chcialem napisac skrypt, ktory bo 3 tygodniach od wpisu usuwalby jakies tam rekordy z bazy MySQL - chodzi wylacznie o wybrane wiersze w tabeli. wszystko wiem jak zrobic, bo:

  1. <?php 
  2.  
  3. // zmienne do ustawienia jak zawsze
  4.  
  5. $host=localhost;
  6. $user=root;
  7. $password=&#092;"*****\";
  8.  
  9. $sql=mysql_connect($host, $user, $password);
  10. mysql_select_db(&#092;"ogloszenia\");
  11.  
  12. $data=date(&#092;"Y.m.j\");
  13. $stara_data= NO WLASNIE CO questionmark.gif?!!!
  14.  
  15. $rodzaj=&#092;"sprzedam\";
  16.  
  17. $zapytanie = &#092;"SELECT * FROM \".$rodzaj.\" WHERE data LIKE \"%\".$stara_data.\"%\" \";
  18.  
  19. $search = mysql_query($zapytanie);
  20. $znalezione = mysql_num_rows($search);
  21.  
  22. if($znalezione > 0)
  23.  {
  24.  print(&#092;"usuwanie);
  25.  }
  26.  
  27. ?>


Oczywiscie zamiat wydrukowania usuwania bedzie to co trzeba ;-)

chcialbym teraz od was dowiedziec sie jak zrobic, aby $stara_data byla taka, jaka byla 3 tygodnie wczesniej od $data, a takze jak przeprowadzic takie kasowanie ze wszystkie OD daty powiedzmy 25.10.2004 - 15.10.2004 czy ile tam tez 3 tygodnie by wynosily. no bo tutaj usunie tylko ta konkretna. jezeli mialbym pewnosc ze skrypt bedzie odpalany codziennie, to ok. ale takiej pewnosci miec nie moge ;-) chociaz jakby to dodac na stronie glownej.... ;]]]]]

z gory dziekuje za pomoc !
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 14)
rogrog
post 25.10.2004, 18:10:31
Post #2





Grupa: Zarejestrowani
Postów: 602
Pomógł: 1
Dołączył: 3.04.2004
Skąd: Trójmiasto (Gdańsk)

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


hej

najlepiej to zrobić bezpośrednio w zapytaniu SQL, bez podawania daty z PHPa. btw nie powinieneś używać LIKE '%%' do daty, jak już to =. LIKE jest do tekstu...

na dole forum masz link do manuala MySql

zainteresuj się:
- operatorem BETWEEN
- funkcą NOW()
- konstrukcjami z INTERVAL

ta wiedza powinna Ci wystarczyć do tego zadania smile.gif

pozdrawiam
rogrog


--------------------
Go to the top of the page
+Quote Post
Vertical
post 25.10.2004, 19:03:22
Post #3





Grupa: Zarejestrowani
Postów: 848
Pomógł: 0
Dołączył: 7.07.2004
Skąd: Wrocław

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


  1. <?php
  2. //łączenie się do bazy, ustawianie zmiennych (oprócz $stara_data) itp. itd.
  3. $zapytanie = &#092;"SELECT * FROM $rodzaj\";
  4. $query = mysql_query($zapytnie);
  5. $row = mysql_fetch_array($query);
  6. //definicja $stara_data
  7. $stara_data = $row['data'];
  8. if($stara_data = (date(Y-m-d, strtotime(&#092;"-21 days\")))
  9. {
  10. $sql = &#092;"DELETE FROM $rodzaj WHERE data = date(Y-m-d, strtotime(-21 days))\";
  11. }
  12. ?>


Ten post edytował Vertical 25.10.2004, 19:04:28
Go to the top of the page
+Quote Post
Aztech
post 25.10.2004, 19:16:29
Post #4





Grupa: Zarejestrowani
Postów: 276
Pomógł: 3
Dołączył: 22.10.2003
Skąd: Wrocław

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


w zadzie wystarczy taka modyfikacja:
  1. DELETE FROM $rodzaj WHERE DATA BETWEEN NOW() AND NOW() - INTERVAL 3 WEEKS;


Ten post edytował Aztech 25.10.2004, 19:18:15
Go to the top of the page
+Quote Post
venom-ek
post 25.10.2004, 19:25:48
Post #5





Grupa: Zarejestrowani
Postów: 23
Pomógł: 0
Dołączył: 3.09.2004

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


dziekuje wszystkim za odpowiedzi !

odnosnie skryptu Verticala (nie usuwa sad.gif) to sprawdzilem nawet samo to zapytanie:
DELETE FROM $rodzaj WHERE data = date(Y-m-d, strtotime(-21 days))

($rodzaj zamienilem oczywiscie) i nie chodzi. wywala mi cos takiego:

Cytat
Error

SQL-query : 

DELETE FROM zamienie WHERE DATA = date( Y - m - d, strtotime(
- 21days
) )

MySQL said:

#1064 - You have an error in your SQL syntax.  Check the manual that corresponds to your MySQL server version for the right syntax to use near '( Y - m - d, strtotime(  -21days ) )' at line 1


a jezeli chodzi o odp. Aztecha to tez sie pluje:
Cytat
#1064 - You have an error in your SQL syntax.  Check the manual that corresponds to your MySQL server version for the right syntax to use near 'WEEKS' at line 1


zastanawiam sie czy to nie jest problem tego, ze kolumna 'data' jest ustawiona jako TEXT , a wartosc podawana jest ze skryptu... chociaz problemow przeciez raczej byc nie powinno bo format daty ten sam, tzn np. 2004.10.26 ... a moze nie ten sam i trzeba odwrocic kolejnoscia lata/miesiace czy jakos :? ?
wiem ze durne bo moglem inaczej zrobic ale wolalbym teraz nie zamieniac typu zmiennych, chociaz jezeli nie bedzie innego wyjscia... :/

Ten post edytował venom-ek 25.10.2004, 19:33:04
Go to the top of the page
+Quote Post
Aztech
post 25.10.2004, 19:33:04
Post #6





Grupa: Zarejestrowani
Postów: 276
Pomógł: 3
Dołączył: 22.10.2003
Skąd: Wrocław

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


Wydaje mi sie ze Y-m-d musisz wziasc w apostrofy 'Y-m-d'
Go to the top of the page
+Quote Post
venom-ek
post 25.10.2004, 19:50:24
Post #7





Grupa: Zarejestrowani
Postów: 23
Pomógł: 0
Dołączył: 3.09.2004

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


zanim jeszcze cokolwiek wyskoczy, tzn blad wlacza mi sie okienko JavaScript :-)

undefined:
(....i cale zapytanie...)
Go to the top of the page
+Quote Post
Aztech
post 25.10.2004, 19:54:49
Post #8





Grupa: Zarejestrowani
Postów: 276
Pomógł: 3
Dołączył: 22.10.2003
Skąd: Wrocław

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


No jeśli chodzi o JavaScript to ja noga więc Ci nie pomogę - sry, ale przykład z BETWEEN powinien ma 100% działać
Go to the top of the page
+Quote Post
venom-ek
post 25.10.2004, 20:08:23
Post #9





Grupa: Zarejestrowani
Postów: 23
Pomógł: 0
Dołączył: 3.09.2004

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


no to ja juz nie wiem... sad.gif
zamienilem nawet typ na datetime i to samo sad.gif
Go to the top of the page
+Quote Post
Aztech
post 25.10.2004, 20:21:12
Post #10





Grupa: Zarejestrowani
Postów: 276
Pomógł: 3
Dołączył: 22.10.2003
Skąd: Wrocław

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


wpisz zamiast twojego SELECT
  1. <?php
  2.  
  3. sql = 'DELETE FROM '.$rodzaj.' WHERE data BETWEEN NOW() and NOW() - INTERVAL 3 WEEKS';
  4.  
  5. ?>


całość wygląda tak:
  1. <?php
  2.  
  3. $host=localhost;
  4. $user=root;
  5. $password=&#092;"*****\";
  6.  
  7. $sql=mysql_connect($host, $user, $password);
  8. mysql_select_db(&#092;"ogloszenia\");
  9. sql = 'DELETE FROM '.$rodzaj.' WHERE data BETWEEN NOW() and NOW() - INTERVAL 3 WEEKS';
  10.  
  11. ?>

(*) wtedy za każdym wywołaniem skryptu będzie ci usuwał z bazy niepotrzebne dane
Go to the top of the page
+Quote Post
venom-ek
post 26.10.2004, 15:20:30
Post #11





Grupa: Zarejestrowani
Postów: 23
Pomógł: 0
Dołączył: 3.09.2004

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


ale ja wiem ;]
i wiem ze to powinno dzialac

ale z *jakis* przyczyn nie dziala... a ja nie jestem w stanie rozgryzc z jakich sad.gif (samo zap. do mysql jest cos bledne - sprawdzalem na 2 bazach nie to zeby u mnie na komputerze cos nie tak bylo i to samo identycznie... jak wyzej pisalem sad.gif)
Go to the top of the page
+Quote Post
rogrog
post 26.10.2004, 17:00:49
Post #12





Grupa: Zarejestrowani
Postów: 602
Pomógł: 1
Dołączył: 3.04.2004
Skąd: Trójmiasto (Gdańsk)

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


  1. <?php
  2. ?>


questionmark.gif


--------------------
Go to the top of the page
+Quote Post
Aztech
post 26.10.2004, 17:39:50
Post #13





Grupa: Zarejestrowani
Postów: 276
Pomógł: 3
Dołączył: 22.10.2003
Skąd: Wrocław

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


(*) sprawdz jak radzi rogrog jaki masz ostatni error
(*) czy inne zapytania wykonuja sie poprawnie
(*) czy aby masz na pewno uprawnienia do tej bazy?
Go to the top of the page
+Quote Post
venom-ek
post 26.10.2004, 18:02:32
Post #14





Grupa: Zarejestrowani
Postów: 23
Pomógł: 0
Dołączył: 3.09.2004

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


no przeciez chlopaki pisalem winksmiley.jpg

Cytat
You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE data BETWEEN NOW() and NOW() - INTERVAL 3 WEEKS' at line


baza dziala jak nalezy - inne zapytania poprawnie sa wykonywane, a uprawnienia mam napewno winksmiley.jpg

Ten post edytował venom-ek 26.10.2004, 18:03:38
Go to the top of the page
+Quote Post
Aztech
post 26.10.2004, 21:19:22
Post #15





Grupa: Zarejestrowani
Postów: 276
Pomógł: 3
Dołączył: 22.10.2003
Skąd: Wrocław

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


Zapomniałeo o nawiasach smile.gif
  1. WHERE DATA BETWEEN NOW() AND (NOW() - INTERVAL 3 WEEKS)
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: 14.08.2025 - 09:08