Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL] Zawartość każdego rekordu
benzulli
post
Post #1





Grupa: Zarejestrowani
Postów: 112
Pomógł: 0
Dołączył: 3.07.2013

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


Witam

Mam pewien problem z modyfikacją pewnego dodatku w wordpressie. Potrzebuję zrobić tak, że każdy rekord kolumny 'expiry' będzie zawierał w sobie '2020'. Za każdym razem kiedy się doda nowy rekord, stała wartość tej kolumny. Najłatwiej będzie jak po prostu baza danych zrobi to za mnie i nie będę musiał dodawać rekordu w formularzu.

Ten post edytował benzulli 27.08.2014, 11:37:28
Go to the top of the page
+Quote Post
mar1aczi
post
Post #2





Grupa: Zarejestrowani
Postów: 731
Pomógł: 141
Dołączył: 9.05.2011
Skąd: śląskie

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


trigger
Go to the top of the page
+Quote Post
by_ikar
post
Post #3





Grupa: Zarejestrowani
Postów: 1 798
Pomógł: 307
Dołączył: 13.05.2009
Skąd: Gubin/Wrocław

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


@mar1aczi - do tego nie może użyć triggera, dlatego że triggerem nie zmodyfikujesz tabeli na której aktualnie operujesz.

Cytat
Within a stored function or trigger, it is not permitted to modify a table that is already being used (for reading or writing) by the statement that invoked the function or trigger.


http://dev.mysql.com/doc/refman/5.0/en/sto...strictions.html

Chyba że są to operacje na dwóch różnych tabelach, ale o tym dowiemy się dopiero w momencie kiedy autor tematu napisz dokładniej o co mu chodzi.
Go to the top of the page
+Quote Post
benzulli
post
Post #4





Grupa: Zarejestrowani
Postów: 112
Pomógł: 0
Dołączył: 3.07.2013

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


(IMG:http://i.imgur.com/rQo1nZB.png)
(IMG:http://i.imgur.com/M1E5nLg.png)

Struktura tabeli i tabela chcę, żeby w kolumnie expiry zawsze była ta sama data (dajmy na to 2015-07-26 00:00:00)[nawet jeśli dodam nowe rekordy].

Ten post edytował benzulli 27.08.2014, 18:54:16
Go to the top of the page
+Quote Post
ZaXaZ
post
Post #5





Grupa: Zarejestrowani
Postów: 285
Pomógł: 18
Dołączył: 30.01.2014
Skąd: <?=$_GET['city']?>

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


Cytat
Struktura tabeli i tabela chcę, żeby w kolumnie expiry zawsze była ta sama data (dajmy na to 2015-07-26 00:00:00)[nawet jeśli dodam nowe rekordy].

  1. ALTER TABLE tabela
  2. CHANGE expiry expiry datetime DEFAULT '2015-07-26 00:00:00'

I pomijaj w insert/update kolumne expiry jak nie ma sie zmieniac.

Ten post edytował ZaXaZ 27.08.2014, 19:03:27
Go to the top of the page
+Quote Post
by_ikar
post
Post #6





Grupa: Zarejestrowani
Postów: 1 798
Pomógł: 307
Dołączył: 13.05.2009
Skąd: Gubin/Wrocław

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


Tak jak myślałem z tym triggerem. A co do twojego problemu, jeżeli w żaden sposób nie nadajesz tej daty z poziomu skryptu, a chyba tak nie robisz, bo widzę tam zera. To możesz ustawić wartość domyślną (default) dla tej kolumny.
Go to the top of the page
+Quote Post
mmmmmmm
post
Post #7





Grupa: Zarejestrowani
Postów: 1 421
Pomógł: 310
Dołączył: 18.04.2012

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


A po co ci kolumna z wartością, skoro to jest wartość stała?
Go to the top of the page
+Quote Post
benzulli
post
Post #8





Grupa: Zarejestrowani
Postów: 112
Pomógł: 0
Dołączył: 3.07.2013

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


To jest zbugowany plugin do wordpressa, na którym jest już cały sklepik i muszę po prostu przerobić tak, aby kolejny - zbugowany i niesupportowany plugin - wp e-commerce coupon codes - mógł działać. Jednym słowym kupony na zniżki działają tylko wtedy, kiedy jest podana data unieważnienia kuponu, a te z kolei są generowane z automatu i data jest zawsze 0000-00-00 00:00:00 (coś takiego) to muszę w bazie dać jakąś stałą wartość z przyszłą datą.

P.S.
Default nie działa.

Widzę, że chyba nie będzie innej opcji jak po prostu grzebanie w tych plikach, czasochłonne, ale w końcu pewno dotrę do tego zapytania.
Go to the top of the page
+Quote Post
by_ikar
post
Post #9





Grupa: Zarejestrowani
Postów: 1 798
Pomógł: 307
Dołączył: 13.05.2009
Skąd: Gubin/Wrocław

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


Zadziała, tylko zwróć uwagę że to jest datetime, czyli musisz podać date i czas, w twoim przypadku będzie to

Kod
2020-01-01 00:00:00
Go to the top of the page
+Quote Post
benzulli
post
Post #10





Grupa: Zarejestrowani
Postów: 112
Pomógł: 0
Dołączył: 3.07.2013

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


by_ikar, robiłem tak jak mówisz wcześniej i niestety nie działa.
Go to the top of the page
+Quote Post
by_ikar
post
Post #11





Grupa: Zarejestrowani
Postów: 1 798
Pomógł: 307
Dołączył: 13.05.2009
Skąd: Gubin/Wrocław

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


Więc ta data nieprawidłowa jest przesyłana na poziomie skryptu, cóż, nie pozostaje ci nic innego jak sprawdzić ten skrypt. Data jest niepoprawna, stąd ustawiana jest na same zera.
Go to the top of the page
+Quote Post
benzulli
post
Post #12





Grupa: Zarejestrowani
Postów: 112
Pomógł: 0
Dołączył: 3.07.2013

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


Obszedłem trochę problem i zrobiłem w cronie (co 5 sekund) coś takiego:

  1. $query = mysql_query("UPDATE wordpress_auto_wpsc_coupon_codes SET expiry = '2018-08-25 00:00:00'");


Moje pytanie brzmi następująco:

jak powinno brzmieć zapytanie, które zaktualizauje mi wszystkie te kolumny 'expiry', które mają wartość "0000-00-00 00:00:00" na "2018-08-25 00:00:00"?
Go to the top of the page
+Quote Post
nospor
post
Post #13





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




...where expiry='0000-00-00 00:00:00'
Go to the top of the page
+Quote Post
benzulli
post
Post #14





Grupa: Zarejestrowani
Postów: 112
Pomógł: 0
Dołączył: 3.07.2013

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


Dzięki mistrzu, do zamknięcia (IMG:style_emoticons/default/smile.gif)

Ten post edytował benzulli 27.08.2014, 20:24:51
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 24.08.2025 - 06:04