Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> 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
 
Start new topic
Odpowiedzi (1 - 8)
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 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 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 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ć 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
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 21.08.2025 - 17:01