Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!

Ogłoszenie

Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.

#1  2015-03-10 16:20:52

  ethanak - Użytkownik

ethanak
Użytkownik
Skąd: Ungwenor
Zarejestrowany: 2010-07-19
Serwis

[MySQL] Niby proste zadanie...

Hej

Jest sobie wordpress, jakieś tam mniej lub bardziej szemrane wtyczki, no i trzeba toto zmusić do działania tak jak ja chcę a nie tak jak chciał wtyczkopisacz :)

Jest sytuacja zastana:
W tabeli wp_options jest sobie rekord z name='wtyczka' i value (text) na którym wtyczka sobie operuje

Sytuacja wymagana:
Jest dodatkowa tabela, zawierająca jakiś klucz i wartość, coś w stylu:

Kod:

create table wp_dupa (
  klucz text unique not null,
  value text
);

W tabeli wp_options jest sobie dodatkowy rekord zawierający aktualny klucz i name powiedzmy "pupa".
Cały pic polega na tym, aby:
a) jakakolwiek zmiana rekordu 'wtyczka' w tabeli wp_options spowodowała przepisanie value do tabeli wp_dupa do rekordu określonego przez klucz pobrany z rekordu "pupa" w wp_options;
b) zmiana wartości w rekordzie "pupa" w wp_options powodowała przepisanie odpowiedniej wartości z tabeli wp_dupa do wp_options do rekordu "wtyczka";

ale

c) przepisanie z punktu b) nie może wywoływać akcji z punktu a)

Czyli co chcę osiągnąć:

a) wtyczka sobie cały czas operuje na swoim rekordzie
b) chcę umożliwić operowanie owej wtyczki na różnych rekordach (z zastrzeżeniem, że zawsze podaję "rekord aktualny") - czyli zawsze mam w wp_dupa aktualną kopię rekordu z wp_options;
c) nie mam możliwości zmiany kodu wtyczki (z przyczyn czysto technicznych)

W postgresie to bym zrobił w ciągu paru minut (trigger w pgplsql) - ale w MySQL jakoś nie bardzo wiem od której strony to chwycić...

Jakieś pomysły?

@Jacekalex - Ty zdaje się piałeś peany na temat MySQL-a, może coś podpowiesz?


Nim mechaniczne larum zagrasz mi, kanalio,
głosząc nadejście Javy - śmiertelnego wroga!
Zespół Adwokacki Dyskrecja

Offline

 

#2  2015-03-10 16:44:19

  winnetou - złodziej wirków ]:->

winnetou
złodziej wirków ]:->
Skąd: Jasło/Rzeszów kiedyś Gdańs
Zarejestrowany: 2008-03-31
Serwis

Re: [MySQL] Niby proste zadanie...

może normalny trigger zgodnie z dokumentacją? :> coś w stylu

Kod:

create trigger dupa_update after update on wp_options
update wp_dupa set pole_z_wp_dupa = NEW.interesujące_pole_z_tableli_wp_options

LRU: #472938
napisz do mnie: ola@mojmail.eu
Hołmpejdż | Galerie | "Twórczość" || Free Image Hosting

Offline

 

#3  2015-03-10 16:50:57

  Jacekalex - Podobno człowiek...;)

Jacekalex
Podobno człowiek...;)
Skąd: /dev/random
Zarejestrowany: 2008-01-07

Re: [MySQL] Niby proste zadanie...

@Jacekalex - Ty zdaje się piałeś peany na temat MySQL-a, może coś podpowiesz?

Możesz w kodzie wtyczki dać, aby inserta puszczał równocześnie na rożne tabele, albo Trigger, jak wyżej Winnetou napisał.
Zależy, gdzie to chcesz mieć robione, na poziomie bazy (automat w SQL),
czy wtyczki (kod PHP).

A poza tym, to nie napisałeś, co to za wtyczka, i czego od niej dokładnie oczekujesz.

PS:
Moje Peany na temat Mysqla dotyczyły (jak zapewne pamiętasz) łatwości konfigurowania uprawnień, i bardzo szczelnej separacji uprawnień poszczególnych użytkowników bazy, czego w Postgresie nie zauważyłem na razie, mam na myśli konkretnie dostęp pacjenta do informacji o uprawnieniach innych pacjentów, tego dotyczyła nasza ówczesna dyskusja.

Pozdro
;-)

Ostatnio edytowany przez Jacekalex (2015-03-10 16:53:38)


W demokracji każdy naród ma taką władzę, na jaką zasługuje ;)
Si vis pacem  para bellum  ;)       |       Pozdrawiam :)

Offline

 

#4  2015-03-10 16:53:00

  ethanak - Użytkownik

ethanak
Użytkownik
Skąd: Ungwenor
Zarejestrowany: 2010-07-19
Serwis

Re: [MySQL] Niby proste zadanie...

Tak mam i niestety działa źle - czasami myli rekordy i wpisuje do wp_dupa niewłaściwe wartości (tzn. przełączenie zmiany w wp_options(pupa) powoduje niepotrzebne przepisanie wartości)

___


Jacekalex napisał(-a):

Zależy, gdzie to chcesz mieć robione, na poziomie bazy (automat w SQL),
czy wtyczki (kod PHP).

Niestety na poziomie bazy - nie panuję nad tym co robi wtyczka

A poza tym, to nie napisałeś, co to za wtyczka, i czego od niej dokładnie oczekujesz.

Konkretnie to NXS (aka SNAP) a chodzi o możliwość istnienia zamiennie kilku(set) konfiguracji na jednym wordpressie.


Nim mechaniczne larum zagrasz mi, kanalio,
głosząc nadejście Javy - śmiertelnego wroga!
Zespół Adwokacki Dyskrecja

Offline

 

#5  2015-03-10 16:58:19

  winnetou - złodziej wirków ]:->

winnetou
złodziej wirków ]:->
Skąd: Jasło/Rzeszów kiedyś Gdańs
Zarejestrowany: 2008-03-31
Serwis

Re: [MySQL] Niby proste zadanie...

Daj fragment obu interesujących Cię tabel (1 rekord styknie) razem z konkretnymi nazwami pól i rozpisz jakie przypadki konkretnie Cię interesują :)

P.S.
Logika w bazie (zwłaszcza w mysqlu) to ZUO :)


LRU: #472938
napisz do mnie: ola@mojmail.eu
Hołmpejdż | Galerie | "Twórczość" || Free Image Hosting

Offline

 

#6  2015-03-10 17:00:14

  Jacekalex - Podobno człowiek...;)

Jacekalex
Podobno człowiek...;)
Skąd: /dev/random
Zarejestrowany: 2008-01-07

Re: [MySQL] Niby proste zadanie...

Kilkaset konfigów na jednym WP? Jaja sobie robisz?

Łatwiej zatrudnić wp_cli, i metodą pętli zrobić kilkaset instalacji WP.
Zawsze możesz też na bazie oryginalnej wtyczki napisać własną, a potem zarabiać na dobrowolnych datkach zachwyconych pacjentów, jak niejaki Wladimir Palant.
Wielkiego majątku na tym nie zrobisz, ale na porządnego UPSa do RPi pewnie uzbierasz. xD

Ostatnio edytowany przez Jacekalex (2015-03-10 17:08:21)


W demokracji każdy naród ma taką władzę, na jaką zasługuje ;)
Si vis pacem  para bellum  ;)       |       Pozdrawiam :)

Offline

 

#7  2015-03-10 17:07:10

  ethanak - Użytkownik

ethanak
Użytkownik
Skąd: Ungwenor
Zarejestrowany: 2010-07-19
Serwis

Re: [MySQL] Niby proste zadanie...

Tabela wp_options - dwa rekordy:

Kod:

(option_name='wtyczka', option_value='jakiś_serializowany_pehap')
(option_name='klucz_ethanaka', option_value='jeden')

Tabela wp_dupa (n rekordów):

Kod:

(klucz='jeden', value='jakiś_serializowany_pehap')
(klucz='dwa', value='inny_serializowany_pehap)
(klucz='trzy', value='jeszcze inny_serializowany_pehap)
...

W tabeli wp_dupa musi zawsze siedzieć kopia aktualnego (pokazywanego przez klucz_ethanaka) rekordu z wp_options z option_name='wtyczka';
W tabeli wp_options w rekordzie opisywanym przez option_name='wtyczka' zawsze musi siedzieć kopia rekordu z wp_dupa wskazywanego przez klucz_ethanaka.

Chyba nic nie pominąłem...

@jacekalex: nie, nie robię jaj, ja z tego mam na chleb i nawet na kiełbasę do chleba.
Owszem mógłbym - tylko że wtyczka dostaje upgrady dość często, poza tym część jest wojennotajna (wtyczka nie jest niestety open).
Kilkuset wordpressów próbowałem - niestety zarzyna to serwer.

Ostatnio edytowany przez ethanak (2015-03-10 17:09:44)


Nim mechaniczne larum zagrasz mi, kanalio,
głosząc nadejście Javy - śmiertelnego wroga!
Zespół Adwokacki Dyskrecja

Offline

 

#8  2015-03-10 17:09:53

  Jacekalex - Podobno człowiek...;)

Jacekalex
Podobno człowiek...;)
Skąd: /dev/random
Zarejestrowany: 2008-01-07

Re: [MySQL] Niby proste zadanie...

@jacekalex: nie, nie robię jaj, ja z tego mam na chleb i nawet na kiełbasę do chleba.

Ja nie robię jaj, pytałeś konkretnie mnie, to masz odpowiedź konkretnie ode mnie.


W demokracji każdy naród ma taką władzę, na jaką zasługuje ;)
Si vis pacem  para bellum  ;)       |       Pozdrawiam :)

Offline

 

#9  2015-03-10 17:15:55

  ethanak - Użytkownik

ethanak
Użytkownik
Skąd: Ungwenor
Zarejestrowany: 2010-07-19
Serwis

Re: [MySQL] Niby proste zadanie...

Ej, to Ty mnie posądzałeś o robienie jaj ;) A ja mam po prostu taką pracę :(


Nim mechaniczne larum zagrasz mi, kanalio,
głosząc nadejście Javy - śmiertelnego wroga!
Zespół Adwokacki Dyskrecja

Offline

 

#10  2015-03-10 17:24:09

  Jacekalex - Podobno człowiek...;)

Jacekalex
Podobno człowiek...;)
Skąd: /dev/random
Zarejestrowany: 2008-01-07

Re: [MySQL] Niby proste zadanie...

Ja niestety też mam podobną robotę, ale chyba w  mniejszej skali. ;)

A do robienia jaj są koguty, kaczory i indyki.

W każdym razie, wtyczka NXS jest do spamowania wpisami na społecznościówkach, chyba, że mówimy o dwóch różnych wtyczkach.
Ja znam tą:
http://www.nextscripts.com/products/

Pozdro
;-)

Ostatnio edytowany przez Jacekalex (2015-03-10 17:24:45)


W demokracji każdy naród ma taką władzę, na jaką zasługuje ;)
Si vis pacem  para bellum  ;)       |       Pozdrawiam :)

Offline

 

#11  2015-03-10 17:44:59

  ethanak - Użytkownik

ethanak
Użytkownik
Skąd: Ungwenor
Zarejestrowany: 2010-07-19
Serwis

Re: [MySQL] Niby proste zadanie...

Jacekalex napisał(-a):

W każdym razie, wtyczka NXS jest do spamowania wpisami na społecznościówkach

To następną razą się uprzejmie nie pytaj co to za wtyczka jeśli masz jakieś wątpliwości do czego może służyć.


Nim mechaniczne larum zagrasz mi, kanalio,
głosząc nadejście Javy - śmiertelnego wroga!
Zespół Adwokacki Dyskrecja

Offline

 

#12  2015-03-10 18:19:23

  Jacekalex - Podobno człowiek...;)

Jacekalex
Podobno człowiek...;)
Skąd: /dev/random
Zarejestrowany: 2008-01-07

Re: [MySQL] Niby proste zadanie...

Chwileczkę, jest sobie wtyczka NXS, i jeśli zrozumiałem, kiedy ta wtyczka dodaje wpis np do Twittera, to równocześnie ma dodać wpis do tabeli wp-dupa na temat  wplsanej na Twittera wiadomości, tak? ma to być zrobione w bazie?
Triggery, we wszystkich systemach bazodanowych to robią, albo jakiś skrypt Crona, który kopiuje co trzeba między tabelami.

Wtyczka NXS jest odpalana z Crona? to dopisać kolejne polecenie do Crona chyba potrafisz, także osobny skrypt by ewentualnie miał sens.

Tu ma blogu masz kompletny przykład Triggera:
http://blog.adamzawalski.com/trigger-mysql/

Ostatnio edytowany przez Jacekalex (2015-03-10 18:24:32)


W demokracji każdy naród ma taką władzę, na jaką zasługuje ;)
Si vis pacem  para bellum  ;)       |       Pozdrawiam :)

Offline

 

#13  2015-03-11 04:29:41

  ethanak - Użytkownik

ethanak
Użytkownik
Skąd: Ungwenor
Zarejestrowany: 2010-07-19
Serwis

Re: [MySQL] Niby proste zadanie...

Nie, troszkę inaczej.
Po prostu rozszerzam pewne możliwości wtyczki (raczej mało komu przydatne). W tabeli trzyma swoje ustawienia (tzn. dane konta na których ma zrobic wpis). Mi chodzi o to, aby można było mieć więcej niż jeden zestaw danych (np. informacje o stronach typu "a" wrzucam na firmowego facebooka, a o stronach typu "b" na prywatnego, dodatkowo dając znać na twitterze). Teoretycznie coś takiego we wtyczce istnieje ale nie ma praktycznie żadnej możliwości sensownego zarządzania takimi "profilami", a przy ilości profili większej niż trzy jest to nie do ogarnięcia.

Zresztą chyba przyśniło mi się rozwiązanie, tylko nie wiem jak to na pisać w MySQL-u.

Wprowdzam dodatkowe pole do tabeli wp_options - np. z nazwą 'stary_klucz'. Triger after update do tabeli wp_options.

I teraz działanie triggera:
a) jeśli option_name = 'wtyczka', sprawdzam, czy zawartość option_value w polach z option_name = 'klucz_ethanaka' i 'start_klucz' są identyczne. Jeślii tak, kopiuję nową zawartość option_value do rekordu wp_dupa wskazanego przez ów klucz. Zapobiega to niepotrzebnemu kopiowaniu z następnej sytuacji;
b) jeśli option_name = 'klucz_ethanaka', kopiuję zawartość odpowiedniego rekordu z wp_dupa['klucz_ethanaka'] do pola wp_options['wtyczka'], a następnie poprawiam wartość w wp_options['stary klucz'].

Spróbuję czegoś takiego ale wydaje mi się że można jakoś prościej... bez pworowadzania dodatkowych rekordów.
Dzięki za przykład - popatrzę sobie dokładniej ale już po kawie.


Nim mechaniczne larum zagrasz mi, kanalio,
głosząc nadejście Javy - śmiertelnego wroga!
Zespół Adwokacki Dyskrecja

Offline

 

#14  2015-03-11 05:05:20

  Jacekalex - Podobno człowiek...;)

Jacekalex
Podobno człowiek...;)
Skąd: /dev/random
Zarejestrowany: 2008-01-07

Re: [MySQL] Niby proste zadanie...

Po drugiej kawie rzuć okiem na to, ładny przykład, jak w Triggerze używać IF, ELSE, WHILE i dosyć rozbudowane konstrukcje:
http://www.freemindsystems.com/blog/post/mysql-trig … tical-example

Pozdro
;-)


W demokracji każdy naród ma taką władzę, na jaką zasługuje ;)
Si vis pacem  para bellum  ;)       |       Pozdrawiam :)

Offline

 

#15  2015-03-11 06:04:51

  ethanak - Użytkownik

ethanak
Użytkownik
Skąd: Ungwenor
Zarejestrowany: 2010-07-19
Serwis

Re: [MySQL] Niby proste zadanie...

Dzięki - o to chyba chodziło!


Nim mechaniczne larum zagrasz mi, kanalio,
głosząc nadejście Javy - śmiertelnego wroga!
Zespół Adwokacki Dyskrecja

Offline

 

Stopka forum

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson
To nie jest tylko forum, to nasza mała ojczyzna ;-)