Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][PHP] Prosta klasa do obsługi bazy danych, problem z dodaną funkcją obsługującą mysql_fetch_array
@rtur
post
Post #1





Grupa: Zarejestrowani
Postów: 254
Pomógł: 3
Dołączył: 23.02.2006

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


Znalazłem tutaj prostą klasę do obsługi bazy mysql, ale klasa nie ma obsługi mysql_num_rows i mysql_fetch_array więc postanowiłem dodać, ale nie działa jak powinna, mogę prosić o sprawdzenie i naprowadzenie co jest nie tak?

Baza.class.php
  1. <?
  2. class db {
  3. private $db_host = DB_HOST;
  4. private $db_name = DB_NAME;
  5. private $db_user = DB_USER;
  6. private $db_passw = DB_PASSW;
  7. // zmienne publiczne - dostępne poza klasą
  8. public $connection; // połączenie
  9. public $error; // ew. błąd zwrócony przez bazę danych
  10.  
  11. public function connect(){
  12. if ($connection = mysql_connect($this->db_host, $this->db_user, $this->db_passw)) {
  13. if(mysql_select_db($this->db_name, $connection)) {
  14. $this->connection = $connection;
  15. return true;
  16. } else {
  17. $this->error = mysql_error();
  18. return false;
  19. }
  20. } else {
  21. $this->error = mysql_error();
  22. return false;
  23. }
  24. } // eof connect()
  25.  
  26. public function select($sql) {
  27. if ($this->connection) {
  28. mysql_set_charset('utf8', $this->connection);
  29. if (isset($sql) && $sql != '') {
  30. if($result = mysql_query($sql)) {
  31. return $result;
  32. } else {
  33. $this->error = mysql_error();
  34. return false;
  35. }
  36. } else {
  37. $this->error = 'Błąd zapytania SQL';
  38. return false;}
  39. } else {
  40. $this->error = 'Brak połączenia z bazą danych';
  41. return false;}
  42. } // eof select()
  43. public function query($sql){
  44. if (isset($sql) && $sql != '') {
  45. if ($this->connection) {
  46. mysql_set_charset('utf8', $this->connection);
  47. if (mysql_query($sql)){
  48. return true;
  49. } else {
  50. $this->error = mysql_error();
  51. return false;}
  52. } else {
  53. $this->error = 'Brak połączenia z bazą danych';
  54. return false;}
  55. } else {
  56. $this->error = 'Błąd zapytania SQL';
  57. return false;}
  58. } // eof query()
  59. // start dodane przeze mnie ======================================================
  60. public function numrows($sql){
  61. if ($this->connection) {
  62. mysql_set_charset('utf8', $this->connection);
  63. if (isset($sql) && $sql != '') {
  64. if($result = mysql_num_rows($this->select($sql))) {
  65. return $result;
  66. } else {
  67. $this->error = mysql_error();
  68. return false;}
  69. } else {
  70. $this->error = 'Błąd zapytania SQL';
  71. return false;}
  72. } else {
  73. $this->error = 'Brak połączenia z bazą danych';
  74. return false;}
  75. } // eof numrows()
  76.  
  77. public function fetcharray($sql){
  78. if ($this->connection) {
  79. mysql_set_charset('utf8', $this->connection);
  80. if (isset($sql) && $sql != '') {
  81. if($result = mysql_fetch_array($this->select($sql))) {
  82. return $result;
  83. } else {
  84. $this->error = mysql_error();
  85. return false;
  86. }
  87. } else {
  88. $this->error = 'Błąd zapytania SQL';
  89. return false;
  90. }
  91. } else {
  92. $this->error = 'Brak połączenia z bazą danych';
  93. return false;}
  94. } // eof fetcharray()
  95. // koniec - dodane przeze mnie ======================================================
  96. public function close(){
  97. if ($this->connection){
  98. if (mysql_close($this->connection)){
  99. return true;
  100. } else {
  101. $this->error = mysql_error();
  102. return false;}
  103. } else {
  104. $this->error = 'Brak aktywnego połączenia';
  105. return false;}
  106. } // eof close()
  107.  
  108. }


fragment kodu php z index.php (wcześniej inicjuje połączenie $db->connect() i definiuje zmienną $db odnoszącą się do klasy)
  1. $sql = "SELECT wid,czas,podpis FROM tabela WHERE status = '1' ORDER BY 'czas' DESC;";
  2. if ($db->select($sql)){
  3. if ($db->numrows($sql) == 0) {
  4. echo 'brak wyników';
  5. } else {
  6. $wierszy = $db->numrows($sql);
  7. for ($i=0;$i<$wierszy;$i++) {
  8. $dane = $db->fetcharray($sql);
  9. echo $dane['wid'].$dane['czas'].$dane['podpis'];}
  10. }
  11. }


ten fragment pokazuje mi 17 razy jeden wiersz. Znalezionych wierszy jest 17 i to jest prawidłowy wynik, co jest nie tak że tylko jeden wiersz w pętle wrzuca? db
Go to the top of the page
+Quote Post

Posty w temacie


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: 23.08.2025 - 10:01