Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Pobieranie danych ze słownika
Largo
post 11.04.2009, 11:29:53
Post #1





Grupa: Zarejestrowani
Postów: 203
Pomógł: 6
Dołączył: 11.09.2005

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


Witam,

Mam pewien problem związany ze słownikiem w bazie danych. Problem polega na tym, że muszę dodać ikonkę obok nazwy użytkownika zależną od ilości wpłaconych realnych pieniędzy. Sprawa wygląda tak - mam tabelę fg_transactions i tam jest pole price ( cena/kwota ) i po jego ilości mam sprawdzać czy w słowniku ( tabela donate_images ) znajduje się przedział dla tej kwoty. Oto przedziały:

0.00 - 9.99
10.00 - 29.99
30.00 - 49.99
50.00 - 99.00
100.00 - 199.99
200.00 - 449.99
500+

I jeżeli znajduje się w przedziale, to ustawianie ikonki sam zrobię Jak zapytanie ogarnąć? JOIN nie wchodzi w grę, nie ma klucza... Czy w tabeli użytkowników dodać pole np. donate_amount i podczas transakcji SMS inkrementować to pole? Jak Wy to widzicie? Chodzi o problem, nie o gotowy kod :-) Zapytanie, mniej więcej miałej wizję:

  1. SELECT img_url AS donate_icon FROM ibf_members WHERE ( sposób ) BETWEEN min_range AND max_range


min i max to wiadomo zakresy podane powyżej.

Pozdrawiam,
Largo
Go to the top of the page
+Quote Post
korro
post 11.04.2009, 15:45:54
Post #2





Grupa: Zarejestrowani
Postów: 259
Pomógł: 42
Dołączył: 8.04.2005
Skąd: Mława

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


Witam.
Wklej skrypt tych tabel, będzie łatwiej.


--------------------
Go to the top of the page
+Quote Post
Largo
post 12.04.2009, 09:06:58
Post #3





Grupa: Zarejestrowani
Postów: 203
Pomógł: 6
Dołączył: 11.09.2005

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


Witaj,

Tabela members:

  1. CREATE TABLE ibf_members (
  2. id mediumint(8) NOT NULL DEFAULT '0',
  3. name varchar(255) NOT NULL DEFAULT '',
  4. mgroup smallint(3) NOT NULL DEFAULT '0',
  5. email varchar(150) NOT NULL DEFAULT '',
  6. joined int(10) NOT NULL DEFAULT '0',
  7. ip_address varchar(16) NOT NULL DEFAULT '',
  8. posts mediumint(7) DEFAULT '0',
  9. title varchar(64) DEFAULT NULL,
  10. allow_admin_mails tinyint(1) DEFAULT NULL,
  11. time_offset varchar(10) DEFAULT NULL,
  12. hide_email varchar(8) DEFAULT NULL,
  13. email_pm tinyint(1) DEFAULT '1',
  14. email_full tinyint(1) DEFAULT NULL,
  15. skin smallint(5) DEFAULT NULL,
  16. warn_level int(10) DEFAULT NULL,
  17. warn_lastwarn int(10) NOT NULL DEFAULT '0',
  18. LANGUAGE varchar(32) DEFAULT NULL,
  19. last_post int(10) DEFAULT NULL,
  20. restrict_post varchar(100) NOT NULL DEFAULT '0',
  21. view_sigs tinyint(1) DEFAULT '1',
  22. view_img tinyint(1) DEFAULT '1',
  23. view_avs tinyint(1) DEFAULT '1',
  24. view_pop tinyint(1) DEFAULT '1',
  25. bday_day int(2) DEFAULT NULL,
  26. bday_month int(2) DEFAULT NULL,
  27. bday_year int(4) DEFAULT NULL,
  28. new_msg tinyint(2) DEFAULT '0',
  29. msg_total smallint(5) DEFAULT '0',
  30. show_popup tinyint(1) DEFAULT '0',
  31. misc varchar(128) DEFAULT NULL,
  32. last_visit int(10) DEFAULT '0',
  33. last_activity int(10) DEFAULT '0',
  34. dst_in_use tinyint(1) DEFAULT '0',
  35. view_prefs varchar(64) DEFAULT '-1&-1',
  36. coppa_user tinyint(1) DEFAULT '0',
  37. mod_posts varchar(100) NOT NULL DEFAULT '0',
  38. auto_track varchar(50) DEFAULT '0',
  39. temp_ban varchar(100) DEFAULT '0',
  40. sub_end int(10) NOT NULL DEFAULT '0',
  41. login_anonymous char(3) NOT NULL DEFAULT '0&0',
  42. ignored_users text NULL,
  43. mgroup_others varchar(255) NOT NULL DEFAULT '',
  44. org_perm_id varchar(255) NOT NULL DEFAULT '',
  45. member_login_key varchar(32) NOT NULL DEFAULT '',
  46. member_login_key_expire INT(10) NOT NULL DEFAULT '0',
  47. subs_pkg_chosen smallint(3) NOT NULL DEFAULT '0',
  48. has_blog tinyint(1) NOT NULL DEFAULT '0',
  49. has_gallery tinyint(1) NOT NULL DEFAULT '0',
  50. members_markers text NULL,
  51. members_editor_choice char(3) NOT NULL DEFAULT 'std',
  52. members_auto_dst tinyint(1) NOT NULL DEFAULT '1',
  53. members_display_name varchar(255) NOT NULL DEFAULT '',
  54. members_created_remote tinyint(1) NOT NULL DEFAULT '0',
  55. members_cache MEDIUMTEXT NULL,
  56. members_disable_pm INT(1) NOT NULL DEFAULT '0',
  57. members_l_display_name VARCHAR(255) NOT NULL DEFAULT '0',
  58. members_l_username VARCHAR(255) NOT NULL DEFAULT '0',
  59. failed_logins TEXT NULL,
  60. failed_login_count SMALLINT(3) DEFAULT '0' NOT NULL,
  61. members_profile_views INT(10) UNSIGNED NOT NULL DEFAULT '0',
  62. )


Tutaj dodaję 2 pola.

Tabela donate_images ( słownik ):

  1. CREATE TABLE ibf_donate_images (
  2. image_url varchar( 255 ) NOT NULL,
  3. min_range decimal( 4, 2 ) NOT NULL DEFAULT '0.00',
  4. max_range decimal( 4, 2 ) NOT NULL DEFAULT '0.00',
  5. )
Go to the top of the page
+Quote Post
Methestel
post 12.04.2009, 10:53:08
Post #4





Grupa: Zarejestrowani
Postów: 46
Pomógł: 10
Dołączył: 30.06.2008

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


Jeśli dobrze zrozumiełem problem to radze podejść problem od innej strony.

Ikonka użytkownika może się zmienić tylko jeśli dokona jakiejś wpłaty dlatego radze dodać do tabeli ibf_members kolumne na url-a albo (moim zdaniem lepsze rozwiazanie) połączyć kolumnę ibf_members z ibf_donate_images kluczem obcym.

Update w tabeli ibf_members robiłbyś dla konkretnego użytkownika zawsze po dokonaniu przez niego jakiejkolwiek wpłaty a url-a obrazka wyciągałbyć prostym zapytaniem, bez żadnego kombinowania. Jeśli możesz skorzystać z triggerów to wszystkim może zając się sama baza danych beż zbędnego komplikowania skryptu PHP.

Wszystko to przy założeniu że żadziej zapisujesz do tabeli z tranzakcjami niż wyciągasz dane z tabeli ibf_members

Ten post edytował Methestel 12.04.2009, 10:56:21
Go to the top of the page
+Quote Post
Largo
post 12.04.2009, 14:33:45
Post #5





Grupa: Zarejestrowani
Postów: 203
Pomógł: 6
Dołączył: 11.09.2005

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


Witaj,

Aktualnie z kolegą mamy taki zamysł:

Dodajemy do tabeli ibf_members 2 pola -> donate_amount i donate_icon. donate_amount byłoby inkrementowane podczas każdej aktualizacji ( udanej transakcji, wtedy dodaję kwotę w FG ), następnie w momencie kiedy jest wpłata zakończona ( po aktualizacji kwot ) wywołać funkcję set_donate_icon( $amount = 0 ) i w jego ciele tym zapytaniem sprawdzać wynik, wyciągnąć URL i aktualizować pole donate_icon z linkiem do obrazka. Czy dobrze myślimy?

Pozdrawiam,
Largo

Ten post edytował Largo 12.04.2009, 14:35:00
Go to the top of the page
+Quote Post
Methestel
post 13.04.2009, 06:02:18
Post #6





Grupa: Zarejestrowani
Postów: 46
Pomógł: 10
Dołączył: 30.06.2008

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


Tak, mniej więcej o to mi chodziło chociaż tak jak już pisałem, nie mieszał bym w to php-a tylko zwalił obowiązek uaktualniania tego na bazę danych.
Go to the top of the page
+Quote Post
erix
post 14.04.2009, 10:24:27
Post #7





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Cytat
donate_amount byłoby inkrementowane podczas każdej aktualizacji ( udanej transakcji, wtedy dodaję kwotę w FG )

A triggery?


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

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
Largo
post 15.04.2009, 08:40:02
Post #8





Grupa: Zarejestrowani
Postów: 203
Pomógł: 6
Dołączył: 11.09.2005

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


Witaj,

A standardy forum? Dokładnie to na którym stoi Forum.PHP.pl :-) Dostosowuje się do ich standardów.

Pozdrawiam,
Largo
Go to the top of the page
+Quote Post
erix
post 15.04.2009, 09:08:27
Post #9





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Ale będzie wydajniej, jeśli chodzi o triggery...


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

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
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: 19.07.2025 - 05:14