Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> dwie bazy MySql i zapytania
WMP
post
Post #1





Grupa: Zarejestrowani
Postów: 35
Pomógł: 0
Dołączył: 23.01.2006
Skąd: Lublin

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


Witam, chiałbym żeby zapytanie db było wysyłane do wóch baz($db i $db2)
oto przyładowe zapytanie
  1. <?php
  2. $db -> Execute("UPDATE players SET credits=credits-".$cost." WHERE id=".$player -> id);
  3. ?>


Oczywiście nie chodiz mi o to żeby kopiowac je dógi raz tylko że z $db2 tylko zeby zorbić jakoś aby w jednej lini wysyłało to zapytanie do obu baz
Go to the top of the page
+Quote Post
ennics
post
Post #2





Grupa: Zarejestrowani
Postów: 312
Pomógł: 0
Dołączył: 29.12.2004

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


zdefiniuj klase osłonową.
  1. <?php
  2.  
  3. class foo {
  4.   private $db1;
  5.   private $db2;
  6.  
  7.   public function __construct() {
  8.     if(!$this->db1) {
  9.       $this->db1 = new DB_MySQL();
  10.     }
  11.     if(!$this->db1) {
  12.       $this->db2 = new DB_PGSQL();
  13.     }
  14.   }
  15.  
  16.   public function run($query) {
  17.     $this->db1->execute($query);
  18.     $this->db2->execute($query);
  19.   }
  20. }
  21. $db = new foo();
  22. $db->run($query);
  23.  
  24. ?>


Ten post edytował ennics 23.01.2006, 19:25:31
Go to the top of the page
+Quote Post
WMP
post
Post #3





Grupa: Zarejestrowani
Postów: 35
Pomógł: 0
Dołączył: 23.01.2006
Skąd: Lublin

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


Czyli co z tym zorbić? bo nigdy nie maiłęm klasy w ręku. Mam jeszcze pytanko jedno, czy dało by się zrobić tak ze dane tabele wędrują tylko do $db2 i $db3 a inne do $db i $db3 (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif)
Go to the top of the page
+Quote Post
ennics
post
Post #4





Grupa: Zarejestrowani
Postów: 312
Pomógł: 0
Dołączył: 29.12.2004

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


Cytat
li co z tym zorbić? bo nigdy nie maiłęm klasy w ręku

ale korzystasz z klas... zapewne z jakiejś biblioteki??
  1. <?php
  2. $db -> Execute("...");
  3. ?>

to nic innego jak odwołanie się do obiektu klasy która zawiera w sobie metodę Execute. Skoro używasz metody tej klasy to musiałeś wcześniej utworzyć jej instancję. np tak.
  1. <?php
  2.  
  3. //...
  4. $db1 = new Biblioteka_do_bazy_danych1();
  5. $db2 = new Biblioteka_do_bazy_danych2();
  6. $db3 = new Biblioteka_do_bazy_danych3();
  7. //...
  8.  
  9. ?>


znajdź to miejsce w którym tworzysz obiekty klas i "wrzuć" je do klasy osłonowej:
  1. <?php
  2.  
  3. //...
  4. public function __construct() {
  5. if(!$this->db1) {
  6. $this->db1 = new Biblioteka_do_bazy_danych1();
  7. }
  8. if(!$this->db2) {
  9. $this->db2 = new Biblioteka_do_bazy_danych2();
  10. }
  11. if(!$this->db3) {
  12. $this->db3 = new Biblioteka_do_bazy_danych3();
  13. }
  14. }
  15.  
  16. public function run($query) {
  17. $this->db1->execute($query);
  18. $this->db2->execute($query);
  19. $this->db3->execute($query);
  20. }
  21. //...
  22.  
  23. ?>

Cytat
dane tabele wędrują tylko do $db2 i $db3 a inne do $db i $db3

sprecyzuj, jakie tabele masz na myśli?
Go to the top of the page
+Quote Post
WMP
post
Post #5





Grupa: Zarejestrowani
Postów: 35
Pomógł: 0
Dołączył: 23.01.2006
Skąd: Lublin

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


alchemy_mill
bad_words
bows
bridge
bugtrack
categories
core
core_market
cores
court
court_cases
czary
equipment
events
farm
farms
farmy_palyer
halloffame
herbs
hmarket
houses
kopalnie
kowal
kowal_praca
lib_comments
library
mage_items
mail
miasto
mill
mill_work
monsters
news
news_comments
newspaper
newspaper_comments
notatnik
outpost_monsters
outpost_veterans
outposts
pmarket
potions
praca
questaction
quests
replies
reset
sklepy
sklepy1
topics
tribe_mag
tribe_oczek
tribe_perm
tribe_rank
tribe_replies
tribe_topics
tribe_zbroj
tribes
upd_comments
updates
warehouse

te ^^ tabele są w bazie $db2

w $db są to:
adodb_logsql
aktywacja
ban
chat
chat_config
jail
log
players
polls
sessions
settings


a $db3 to jest poproztu kopia danych z tych obu baz, tylko że tworzona na bierząco przy zapytaniach
Go to the top of the page
+Quote Post
ennics
post
Post #6





Grupa: Zarejestrowani
Postów: 312
Pomógł: 0
Dołączył: 29.12.2004

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


nooo stary to już jest prawie praca oferowana (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif) nie bardzo rozumiem na czym polega działanie Twojego skryptu. Zaprojektowanie klasy do obsługi trzech uchwytów do bazy (trzech instancji klas) wymaga trochę czasu i wysiłku.
Zamiast na tabelach może skoncentruj się na samych zapytaniach, bo przecież nie używasz tych samych zapytań do zapisu/odczytu ze wszystkich baz.
Mogę Cię naprowadzić ale nic więcej (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)
  1. <?php
  2.  
  3. class query_factory {
  4.   private $db1;
  5.   private $db2;
  6.   private $db3;
  7.  
  8.   public function __construct() {
  9.     if(!$this->db1) {
  10.       $this->db1 = new Biblioteka_do_bazy_danych1();
  11.     }
  12.     if(!$this->db2) {
  13.       $this->db2 = new Biblioteka_do_bazy_danych2();
  14.     }
  15.     if(!$this->db3) {
  16.       $this->db3 = new Biblioteka_do_bazy_danych3();
  17.     }
  18.   }
  19.   private function query_f1() {
  20.     $data= $this->db1->execute("SELECT alchemy_mill, bad_words, bows, bridge, bugtrack ... updates,
  21. warehouse FROM tabela1 WHERE ...");
  22.     $res = $data->fetch_assoc();
  23.     return $res;
  24.   }
  25.   private function query_f2() {
  26.      $data= $this->db2->execute("SELECT aadodb_logsql, aktywacja, ban, chat,  FROM tabela2 WHERE ...");
  27.      $res = $data->fetch_assoc();
  28.      return $res;
  29.   }
  30.   public function run() {
  31.     $data_form_db1 = $this->query_f1();
  32.     $data_form_db2 = $this->query_f2();
  33.     $synergy[1] = $data_form_db1;
  34.     $synergy[2] = $data_form_db2;
  35.     $return $synergy;
  36.   }
  37. }
  38. $db = new query_factory();
  39. $wszystko = $db->run($query); 
  40. // matoda foo::run zwraca dane z obu tabel umieszczone w tablicy $synergy
  41.  
  42. ?>

psiałem z palca, może coś nie grać (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)
PS. jeśli nie miałeś wcześniej do czynienia z klasami możesz poszukać prostszych (proceduralnych) rozwiązań, albo (i to jest lepsze wyjście) zacznij poznawać OOP http://pl2.php.net/manual/pl/language.oop.php

Ten post edytował ennics 23.01.2006, 20:22:54
Go to the top of the page
+Quote Post
WMP
post
Post #7





Grupa: Zarejestrowani
Postów: 35
Pomógł: 0
Dołączył: 23.01.2006
Skąd: Lublin

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


i teraz jak zorbie zapytanie $wszytko -> execute ... to mi już wybierze do której bazy itp?

I oczywiście musze tą klase dodać takim czymś:
  1. <?php
  2.  
  3. require_once("class/mysql_class.php");
  4.  
  5. ?>
Go to the top of the page
+Quote Post
ennics
post
Post #8





Grupa: Zarejestrowani
Postów: 312
Pomógł: 0
Dołączył: 29.12.2004

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


nie... klasa query_factory którą wyżej napisałem jest praktycznie bezużyteczna. To jest tylko przykład, zarys, jak może wyglądać Twoja klasa która będzie implementowała metody obsługujące klasę bazy danych.
Koniecznie poczytaj manual o programowaniu obiektowym. To jest podstawa. Bez tego nie ruszysz. Czytaj i stosuj w praktyce. Musisz zrozumieć mechanizm funkcjonowania obiektów, potem będzie z górki. Poczytaj potem o wzorcach projektowych, ta klasa powyżej stosuje wzorzec Factory...
Przed Tobą długa droga. Ale będziesz miał satysfakcję jak "łykniesz" ten temat.

Ten post edytował ennics 24.01.2006, 13:06:25
Go to the top of the page
+Quote Post
WMP
post
Post #9





Grupa: Zarejestrowani
Postów: 35
Pomógł: 0
Dołączył: 23.01.2006
Skąd: Lublin

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


ennics, zrezygnowałem z tego pomysłu. Wielkie dizęi za to że straciłeś tyle czasy aby mi to wytłumaczyć, ale i tak nie załapałem, cuż narazie potrafie php w podstawach. Z manuali niegdy sie nie naucze bo nie potrafie. CO gorsza nei czytałęm nic o php tylko opierałem sie na przykładach iuczyłem w praktyce bo nic nie rozumiałem z "php Kompedium(Helion)"taki już muj los. Do zobaczenia(pewnie za sekunde walne następny temat, ale tacy ludize jak ja napędzją to foum)

Ten post edytował WMP 24.01.2006, 17:14:41
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: 14.09.2025 - 21:19