Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Klasa - łączenie z bazą i pobieranie danych
Forum PHP.pl > Forum > Przedszkole
Reiven
Witam,
mam pewną klase, która łaczy mi się z bazą danych i ma pobierać dane z niej.

klasy.php
  1. <?php
  2.  
  3. /**
  4. * @author Weogrim
  5. * @copyright 2009
  6. * Klasa do obsługi MySQL
  7. */
  8.  
  9. class db {
  10. private $db_host = 'localhost';
  11. private $db_name = 'klasy';
  12. private $db_user = 'root';
  13. private $db_pass = '';
  14. public $errors = 0;
  15. public $queries = 0;
  16. public $result;
  17. private $connection;
  18. public $time = 0;
  19.  
  20. public FUNCTION __construct() {
  21.  
  22. $this->connection = @mysql_connect($this->db_host, $this->db_user, $this->db_pass)
  23. OR die('Brak połączenia z serwerem MySQL. <br>Błąd: '.mysql_error());
  24. IF (!$this->connection) {
  25. $this->errors++;
  26. }else{
  27. $db = @mysql_select_db($this->db_name, $this->connection)
  28. OR die('Nie mogę połączyć się z bazą danych. <br>Błąd: '.mysql_error());
  29. }
  30. }
  31.  
  32. public FUNCTION close() {
  33. mysql_close($this->connection);
  34. }
  35.  
  36. public FUNCTION query($query) {
  37. $start = microtime(true);
  38. $this->result = @mysql_query($query);
  39. IF(!$this->result){
  40. $this->errors++;
  41. RETURN false;
  42. }else{
  43. $this->queries++;
  44. $this->time += microtime(true) - $start;
  45. RETURN true;
  46. }
  47. }
  48.  
  49. public FUNCTION fetch_array($result) {
  50.  
  51. $array = mysql_fetch_array(mysql_query($result));
  52. IF(!$array) {
  53. RETURN false;
  54. $this->errors++;
  55. }else{
  56. RETURN $array;
  57. $this->queries++;
  58.  
  59.  
  60.  
  61. }
  62. }
  63.  
  64. public FUNCTION rows($result) {
  65. $rows = mysql_num_rows(mysql_query($result));
  66. IF(!$rows) {
  67. RETURN false;
  68. $this->errors++;
  69. }else{
  70. $this->queries++;
  71. RETURN $rows;
  72. }
  73. }
  74.  
  75. }
  76.  
  77. ?>


index.php
  1. <?php
  2. require_once "klasy.php";
  3. $db = new db();
  4. #$gryonline = $db->fetch_array("SELECT * FROM gryonline");
  5.  
  6. $result = ("SELECT * FROM gryonline");
  7.  
  8. while($row = $db->fetch_array($result)) {
  9. echo $row['nazwa_gry'];
  10.  
  11. }
  12. ?>


z pobraniem jednego wpisu nie mam problemu, problem zaczyna się gdy chcę pobrać np wszystkie wpisy,,,
Wicepsik
  1. $res = $db->fetch_array($result);
  2. while($row = $res) {
  3. echo $row['nazwa_gry'];
  4. }
MateuszS
no ok ale po co tak kombinować? To już nie lepiej użyć poleceń mysqli (nie mysql) (wbudowana klasa) ? Albo zwyczajnie mysql_query, mysql_num_rows itd
Reiven
Cytat(Wicepsik @ 19.11.2009, 21:34:40 ) *
  1. $res = $db->fetch_array($result);
  2. while($row = $res) {
  3. echo $row['nazwa_gry'];
  4. }


no właśnie tak też próbowałem.. wynikiem tego jest wyświetlenie do bólu jednego rekordu i na końcu error

  1. Fatal error: Maximum execution time of 30 seconds exceeded in D:\serwer\httpd\klasy\index.php on line 18
PanGuzol
foreach a nie while.
  1. $res = $db->fetch_array($result);
  2. foreach($res as $row)
  3. {
  4. echo $row['nazwa_gry'];
  5. }
Reiven
Cytat(PanGuzol @ 19.11.2009, 22:12:25 ) *
foreach a nie while.
  1. $res = $db->fetch_array($result);
  2. foreach($res as $row)
  3. {
  4. echo $row['nazwa_gry'];
  5. }


niestety to też nie to..

to mi wyświetla:

  1. 2girlsrps_20072
  2. 2
  3. 2
  4. 2
  5. e
  6. e
  7. 2
  8. 2
  9. o
  10. o
  11. 2
  12. 2
  13. 1
  14. 1
  15. 2
  16. 2


a w tabeli mam całkiem co innego
piotr94
ludzie, ale w tym skrypcie nigdzie nie dajesz zapytania!!
poza tym klasa ma pełno błędów!!
np. linijka 51 powinna wyglądać tak:
  1. $array = mysql_fetch_array($this->result);

a 49:
  1. public FUNCTION fetch_array() {

a wtedy reszta kodu:

  1. ...
  2.  
  3. $db->query('SELECT * FROM gryonline');
  4. while($row=$db->fetch_array()){
  5. //tu w zmiennej $row masz w każdym powtórzeniu pętli kolejny wiersz z bazy danych w tablicy asocjacyjnej
  6. }
  7. //reszta kodu
  8. ...
Reiven
Cytat(piotr94 @ 20.11.2009, 11:31:30 ) *
ludzie, ale w tym skrypcie nigdzie nie dajesz zapytania!!
poza tym klasa ma pełno błędów!!
np. linijka 51 powinna wyglądać tak:
  1. $array = mysql_fetch_array($this->result);

a 49:
  1. public FUNCTION fetch_array() {

a wtedy reszta kodu:

  1. ...
  2.  
  3. $db->query('SELECT * FROM gryonline');
  4. while($row=$db->fetch_array()){
  5. //tu w zmiennej $row masz w każdym powtórzeniu pętli kolejny wiersz z bazy danych w tablicy asocjacyjnej
  6. }
  7. //reszta kodu
  8. ...


dzięki o to mi chodziło! leci + smile.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.