Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Problem z zapytaniami w klasie
sledziu1
post 5.11.2007, 15:28:37
Post #1





Grupa: Zarejestrowani
Postów: 19
Pomógł: 1
Dołączył: 10.07.2006

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


Witam, mam problem z zapytaniem do sql w klasie. Napisałem sobie zapytanie i przeprowadziłem test:

plik:
  1. <?PHP
  2. // tutaj jest połącznie do mysqla
  3.  
  4. $q = mysql_query("SELECT * 
  5. FROM ships s
  6. LEFT JOIN body b ON s.body = b.id
  7. AND s.user_id = b.user_id
  8. LEFT JOIN art art1 ON b.art1 = art1.id
  9. AND s.user_id = art1.user_id
  10. LEFT JOIN art art2 ON b.art2 = art2.id
  11. AND s.user_id = art2.user_id
  12. LEFT JOIN shield sh ON b.shield = sh.id
  13. AND s.user_id = sh.user_id
  14. AND b.lvl >= sh.lvl
  15. LEFT JOIN engine en ON b.engine = en.id
  16. AND s.user_id = en.user_id
  17. AND b.lvl >= en.lvl
  18. LEFT JOIN system sys1 ON b.sys1 = sys1.id
  19. AND s.user_id = sys1.user_id
  20. AND b.lvl >= sys1.lvl
  21. LEFT JOIN system sys2 ON b.sys2 = sys2.id
  22. AND s.user_id = sys2.user_id
  23. AND b.lvl >= sys2.lvl
  24. LEFT JOIN wing w ON s.wing = w.id
  25. AND s.user_id = w.user_id
  26. AND b.lvl >= w.lvl
  27. LEFT JOIN weapon wp1 ON w.Pid = wp1.id
  28. AND s.user_id = wp1.user_id
  29. AND w.Plvl >= wp1.lvl
  30. LEFT JOIN weapon wp2 ON w.Sid = wp2.id
  31. AND s.user_id = wp2.user_id
  32. AND w.Slvl >= wp2.lvl
  33. LEFT JOIN armor a ON s.armor = a.id
  34. AND s.user_id = a.user_id
  35. AND b.lvl >= a.lvl
  36. WHERE s.id = 1");
  37.  
  38. $r = mysql_fetch_row($q);
  39.  
  40. echo("<pre>");
  41. print_r($r);
  42. echo("<pre>");
  43. ?>

wynik:
Array
(
[0] => 1
[1] => Testowy Statek
[2] => 1
[3] => 1
[4] => 1
[5] => 1
[6] => 1
[7] => Testowy kadłub
[8] => 1
[9] => 3
[10] => 1
[11] => 2
[12] => 1
[13] => 1
[14] => 1
[15] => 2
[16] => 0
[17] => test.jpg
[18] => 1
[19] => Artefakt 1
[20] => 1
[21] => aim
[22] => 10
[23] => test.jpg
[24] => 2
[25] => Art 2
[26] => 1
[27] => shield
[28] => 20
[29] => test2.jpg
[30] => 1
[31] => Testowa powłoka
[32] => 1
[33] => 2
[34] => 8
[35] => 3
[36] => obrazek.jpg
[37] => 1
[38] => Mały silnik
[39] => 1
[40] => 1
[41] => 3
[42] => 2
[43] => brak.jpg
[44] => 1
[45] => System A waga
[46] => 1
[47] => 1
[48] => weight
[49] => 20
[50] => sss.jpg
[51] => 2
[52] => Sys engine
[53] => 1
[54] => 2
[55] => engine
[56] => 21
[57] => aaa.zzz
[58] => 1
[59] => Testowe skrzydło
[60] => 1
[61] => 1
[62] => 2
[63] => 2
[64] => 1
[65] => 2
[66] => 6
[67] => skrzydlo.jpg
[68] => 1
[69] => Lekki laser
[70] => 1
[71] => 2
[72] => 5
[73] => 50
[74] => 30
[75] => 2
[76] => laser.jpg
[77] => 2
[78] => Rakiety
[79] => 1
[80] => 1
[81] => 30
[82] => 5
[83] => 70
[84] => 3
[85] => rakieta.jpg
[86] => 1
[87] => Lekkie opancerzenie
[88] => 1
[89] => 2
[90] => 30
[91] => 10
[92] => panc.jpg
)


Wygląda na to, że działa, postanowiłem zrobić z tego klasę (dopiero zaczynam przygodę z obiektówką więc może być trochę błędów)
  1. <?php
  2. class ship
  3. {
  4. private $query;
  5. private $result;
  6. private $id;
  7.  
  8. public function __construct($id) // pobranie danych statku z SQL
  9. {
  10. $query = mysql_query("SELECT * 
  11. FROM ships s
  12. LEFT JOIN body b ON s.body = b.id
  13. AND s.user_id = b.user_id
  14. LEFT JOIN art art1 ON b.art1 = art1.id
  15. AND s.user_id = art1.user_id
  16. LEFT JOIN art art2 ON b.art2 = art2.id
  17. AND s.user_id = art2.user_id
  18. LEFT JOIN shield sh ON b.shield = sh.id
  19. AND s.user_id = sh.user_id
  20. AND b.lvl >= sh.lvl
  21. LEFT JOIN engine en ON b.engine = en.id
  22. AND s.user_id = en.user_id
  23. AND b.lvl >= en.lvl
  24. LEFT JOIN system sys1 ON b.sys1 = sys1.id
  25. AND s.user_id = sys1.user_id
  26. AND b.lvl >= sys1.lvl
  27. LEFT JOIN system sys2 ON b.sys2 = sys2.id
  28. AND s.user_id = sys2.user_id
  29. AND b.lvl >= sys2.lvl
  30. LEFT JOIN wing w ON s.wing = w.id
  31. AND s.user_id = w.user_id
  32. AND b.lvl >= w.lvl
  33. LEFT JOIN weapon wp1 ON w.Pid = wp1.id
  34. AND s.user_id = wp1.user_id
  35. AND w.Plvl >= wp1.lvl
  36. LEFT JOIN weapon wp2 ON w.Sid = wp2.id
  37. AND s.user_id = wp2.user_id
  38. AND w.Slvl >= wp2.lvl
  39. LEFT JOIN armor a ON s.armor = a.id
  40. AND s.user_id = a.user_id
  41. AND b.lvl >= a.lvl
  42. WHERE s.id = '$id'");
  43. if(!is_resource($query) || mysql_num_rows($query) !=) throw new Exception('W bazie nie ma takiego ID!');
  44.  
  45. $result = mysql_fetch_row($query);
  46. }
  47.  
  48.  
  49.  
  50. public function shipName() {return $result[1];}
  51. }
  52. ?>


postanowiłem przetestować:
  1. <?PHP
  2. require_once('includes/sql.php');
  3. require_once('class.ship.php');
  4.  
  5. $test = new ship(1);
  6.  
  7. echo($test->wp2Name());
  8. ?>


a tu klapa - plik nic nie pokazał sciana.gif

w klasie wkleiłem print_r($result); i wynik był tylko "Array" dry.gif

co może być tego przyczyną? "private $result" nie może być tablicą?

Ten post edytował sledziu1 5.11.2007, 15:31:54
Go to the top of the page
+Quote Post
sf
post 5.11.2007, 15:31:29
Post #2





Grupa: Zarejestrowani
Postów: 1 597
Pomógł: 30
Dołączył: 19.02.2003
Skąd: Tychy

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


$this->result używaj w środku metod, a nie $result

PS ta Twoja baza to jest jakaś schiza


--------------------
Zapraszam na mój php blog, tworzenie stron.
Go to the top of the page
+Quote Post
sledziu1
post 5.11.2007, 15:38:06
Post #3





Grupa: Zarejestrowani
Postów: 19
Pomógł: 1
Dołączył: 10.07.2006

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


dzięki, działa

takie błędy, że aż wstyd wstydnis.gif

a co do bazy to i tak jest wersja odchudzona haha.gif
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.04.2024 - 21:17