Dołącz do zespołu ekspertów! Backend lub Frontend Developer?

Sprawdź najnowsze oferty pracy naszego partnera - 8lines.io!

Piwa z przemo -> MyBB reputacja

Konfiguracja  Założony przez  ficus.

wersja skryptu MyBB: 1.8.4
adres forum: localhost
na czym polega problem (screen, opis, komunikaty):

Jestem po przenosinach pewnego forum z phpbb2 by przemo na MyBB 1.8.4, problem dotyczy przemowych "piw".

Czy istnieje jakiś prosty sposób na przeniesienie danych dot. piw do bazy MyBB jako punkty reputacji? Wartość komórek bez zmian - 10 piw to 10 reputacji, tylko nazwy tabel ew. W MySQL i poleceniach nie jestem obeznany, dlatego zwracam się o radę.

Wymyśliłem sobie by pobrać tabele z otrzymanymi piwami i zmienić co trzeba na nazwę kolumny z pkt. reputacji i wczytać do bazy MyBB - pytanie, co i jak należy zmienić? Jakieś pomysły?
"Try not. Do... or do not. There is no try."
Poświęć 5 minut. Nie bądź ignorantem!  -  Jak zbadać element?
jak wygląda struktura tej tabeli z piwami?
podaj tą tabele w zalaczniku (.sql)
Istnieje opcja eksportu tylko wybranej kolumny z tabeli w SQL?

Ilość piw jest po prostu kolumną w tabeli phpbb_users, tak więc wartość piw jest przypisana m.in do ID użytkownika.

O ile nie ma opcji eksportu wybranej kolumny to sprawa się trochę komplikuje zapewne...
"Try not. Do... or do not. There is no try."
Poświęć 5 minut. Nie bądź ignorantem!  -  Jak zbadać element?
skroro te piwa to tylko kolumna w jednej tabeli to w mybb trzeba by to przenieść do kolumny w users
i jeszcze na podstawie tego wypelnic tabele reputation jakimiś danymi daty, jako post (pid) najlepiej 0 i uid, add uid admina najlepiej
więc troche trzeba bedzie sie pobawić

druga tabela musi być uzupełniona ponieważ w momęcie przeglądania szczegółów reputacji użytkownika robi się przeliczanie reputacji
Jeśli mowa o Beer Mod modified by They2 - posiada tabelę:
CREATE TABLE *beers (
        beer_id int(10) unsigned NOT NULL auto_increment,
        beer_src int(10) NOT NULL,
        beer_dst int(10) NOT NULL,
        post_id int(10) NOT NULL,
        topic_id int(12) NOT NULL,
        forum_id int(12) NOT NULL,
        beer_time int(12) NOT NULL,
    PRIMARY KEY  (beer_id),
    KEY post_id (post_id),
    KEY topic_id (topic_id),
    KEY forum_id (forum_id) )
Więc trzeba by się tylko przyjrzeć, jakie kolumna za co odpowiada i przenieść to do tabeli reputacji w MyBB (jak widać są też informacje np. o postach, dla których wystawiono piwa).
no w takim przypadku moge to przenieść, jesli dasz tabele o której napisał @Devilshakerz
Załączam tabele z piwami.

  phpbb_beers.rar (Rozmiar: 67,26 KB / Pobrań: 213)
"Try not. Do... or do not. There is no try."
Poświęć 5 minut. Nie bądź ignorantem!  -  Jak zbadać element?
Konwersja kolumn do MyBB:
beer_idrid (identyfikator)
beer_srcadduid (użytkownik dodający)
beer_dstuid (użytkownik otrzymujący)
post_idpid (ID posta; 0 jeśli nie dotyczy)
+ reputation: 1 (ilość punktów reputacji)
beer_timedateline (czas dodania)
+ comments: NULL (komentarz; puste)

Dla reputation i comments można ustawić domyślne wartości w tymczasowej tabeli, aby zostały ustawione dla wszystkich wpisów - resztę (topic_id, forum_id) można usunąć.
Zawartość nowej tabeli będzie można wyeksportować i wgrać do tabeli *reputation MyBB oraz przebudować reputację w ACP.
Z jednej strony kusi mnie by zapytać wprost -> wystarczy, że zmienię w edytorze tekstowym wszystkie "beer_id" na "rid" etc. po czym wrzucę do mybb_reputation?

Z drugiej strony jednak, piszesz o zawartości nowej tabeli o wyeksportowania i dopiero wtedy wgrania, więc wnioskuje, że powinienem wykonać jakieś operacje na bazie danych jeszcze. I tu pojawia się problem, kompletnie nie jestem obeznany z tego typu operacjami.
"Try not. Do... or do not. There is no try."
Poświęć 5 minut. Nie bądź ignorantem!  -  Jak zbadać element?
nie, nie wystarczy zmienic w edytorze

w zalaczniku masz plik sql, skasuj domyslna tabele mybb_reputation i wgraj to moja

Devilshakerz napisał(a):beer_src → adduid (użytkownik dodający)
beer_dst → uid (użytkownik otrzymujący)

o ile tu nie ma bledow, bedzie dobrze


Załączone pliki
  mybb_reputation.zip (Rozmiar: 66,09 KB / Pobrań: 179)
Supryk napisał(a):nie, nie wystarczy zmienic w edytorze
w zalaczniku masz plik sql, skasuj domyslna tabele mybb_reputation i wgraj to moja
U ciebie wartość forum_id jest teraz jako reputation, która zawsze powinna być równa 1 (1 piwo = 1 punkt reputacji).

Poniższe zapytania wykonają operacje, o których mówiłem (usunięcie zbędnych kolumn, dodanie nowych i zmiana nazw pozostałych). Do wykonania na starej tabeli:
ALTER TABLE `phpbb_beers`
  DROP `topic_id`,
  DROP `forum_id`;

ALTER TABLE `phpbb_beers`
  ADD `comments` TEXT NOT NULL ,
  ADD `reputation` INT NOT NULL DEFAULT '1' ;

ALTER TABLE `phpbb_beers`
  CHANGE `beer_id` `rid` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
  CHANGE `beer_src` `adduid` INT(10) NOT NULL,
  CHANGE `beer_dst` `uid` INT(10) NOT NULL,
  CHANGE `post_id` `pid` INT(10) NOT NULL,
  CHANGE `beer_time` `dateline` INT(12) NOT NULL;
Reputacja pomyślnie się uzupełniła, jednak niekoniecznie poprawnie.
Randomowi uzytkownicy mają po kilka tysięcy pkt. reputacji

http://i.imgur.com/eOsjhPB.png


// Zaraz przetestuje sposób Devilshakerz
"Try not. Do... or do not. There is no try."
Poświęć 5 minut. Nie bądź ignorantem!  -  Jak zbadać element?
Devilshakerz napisał(a):
Supryk napisał(a):nie, nie wystarczy zmienic w edytorze
w zalaczniku masz plik sql, skasuj domyslna tabele mybb_reputation i wgraj to moja
U ciebie wartość forum_id jest teraz jako reputation, która zawsze powinna być równa 1 (1 piwo = 1 punkt reputacji).
Poniższe zapytania wykonają operacje, o których mówiłem (usunięcie zbędnych kolumn, dodanie nowych i zmiana nazw pozostałych). Do wykonania na starej tabeli:
ALTER TABLE `phpbb_beers`
DROP `topic_id`,
DROP `forum_id`;
ALTER TABLE `phpbb_beers`
ADD `comments` TEXT NOT NULL ,
ADD `reputation` INT NOT NULL DEFAULT '1' ;
ALTER TABLE `phpbb_beers`
CHANGE `beer_id` `rid` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
CHANGE `beer_src` `adduid` INT(10) NOT NULL,
CHANGE `beer_dst` `uid` INT(10) NOT NULL,
CHANGE `post_id` `pid` INT(10) NOT NULL,
CHANGE `beer_time` `dateline` INT(12) NOT NULL;

zgodzę się, zapomniałem o tym, jednak domyślnie w mybb kolumna reputation ma wartość 0 wystarczy zrobić coś w stylu
update mybb_reputation set reputation 

poprawilem zalacznik
oczywiscie po wgraniu mojej tabeli trzeba przebudowac reputacjie z poziomu ACP
Ciekawa sprawa - najpierw spróbowałem ręcznie opcje proponowane przez Devil'a - reputacja miała już w miarę normalne wartości, jednak niepoprawne względem użytkowników.
Następnie wgrałem twoją poprawioną tabele - trochę inne wyniki niż powyżej, aczkolwiek efekt ten sam - niepoprawne wartości.

Widzę już z jakiego powodu tak się dzieje - UID na mybb niektórych użytkowników różni się od ID tychże użytkowników z phpbb3. Biorąc pod uwagę stare ID, reputacja przeniosła się prawidłowo.
Przypuszczam, że MyBB migrator podczas przenosin zmienił ID użytkowników uwzględniając "wolne" ID pozostałe po np. skasowanych użytkownikach. W tej sytuacji przypuszczam, że nic się już nie da zrobić, jednakże dziękuje za zaangażowanie.
"Try not. Do... or do not. There is no try."
Poświęć 5 minut. Nie bądź ignorantem!  -  Jak zbadać element?
Migrowałem już kilka for i jakoś nigdy na to nie zwróciłem uwagi, ale zmiana identyfikatorów w tabeli users jest bez sensu, musialo by je zmieniać w tematach, postach, ... i wielu wielu innych miejscach
Czy aby na pewno się tak dzieje?



Użytkownicy przeglądający ten wątek:

1 gości