![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 80 Pomógł: 0 Dołączył: -- Ostrzeżenie: (0%) ![]() ![]() |
Witam,
Zachcialo mi sie poglebic moja wiedze (wlasiciwie to praktyke) o programowaniu obiektowym i napisalem wlasny sterownik MySQL. Oczywiscie taki obslugujacy kilka podstawowych funkcji, bez zadnych fajerwerkow ;) I mam w zasadzie 2 problemy: Chociaz najpierw moze przedstawie najwazniejsze czesci sterownika: [php:1:d81a0e5d22]<?php class db { var $query_array; var $query_result; function db_query_select($what,$table,$where="",$order="",$limit="") { $this->query_result=@mysql_query("SELECT $what FROM $table $where $order $limit") or die ($this->db_error()); $this->db_query_array(); } function db_query_array() { $this->query_array=mysql_fetch_array($this->query_result) or die ($this->db_error()); } function db_num_fields() { $a=mysql_num_fields($this->query_result) or die ($this->db_error()); return $a; } function db_field_name($field_nr) { $a=mysql_field_name($this->query_result,$field_nr) or die ($this->db_error()); return $a; } ?>[/php:1:d81a0e5d22] To chyba najwazniejsze do opisania mojego problemu. Zaczne od pierwszego, ktory w zasadzie rozwiazalem, ale mam pytanie :) Robie sobie cos takiego: [php:1:d81a0e5d22]<?php $bd=new db; $bd->db_query_select("*",$bd->jakas_tabela); $ile=$bd->db_num_fields(); ?>[/php:1:d81a0e5d22] I teraz jesli mialem: [php:1:d81a0e5d22]<?php function db_num_fields() { $a=mysql_num_fields($this->query_result) or die ($this->db_error()); return $a; } ?>[/php:1:d81a0e5d22] To $ile zwraca poprawna wartosc, a jesli mam: [php:1:d81a0e5d22]<?php function db_num_fields() { return mysql_num_fields($this->query_result) or die ($this->db_error()); } ?>[/php:1:d81a0e5d22] To nie zwraca nic.. Teoretycznie przeciez to jest to samo, dlaczego ten 2. przyklad nie dziala? I drugi problem, potrzebuje zrobic prosta petle while: [php:1:d81a0e5d22]<?php while ($tabela=mysql_fetch_array($wynik_zapytania)) { print "aa"; } ?>[/php:1:d81a0e5d22] I za pomoca mojego sterownika robie to tak: [php:1:d81a0e5d22]<?php while ($tabela=mysql_fetch_array($bd->query_result)) { print "a"; } ?>[/php:1:d81a0e5d22] Wczesniej $query_result zawiera wynik zapytania z bazy, gdy zrobie np. mysql_num_rows($bd->query_result) to zwraca mi prawidlowa liczbe. A ta petla nie dziala.. Macie jakies pomysly czemu to nie dziala? Jak to rozwiazac, najlepiej by sterownik w sobie zawieral funkcje mysql_fetch_array() i zeby dalo sie ja wywolywac wlasnie tak w petli.. Ja juz siedze nad tym sterownikiem kilka ladnych godzin i nic mi nie wychodzi.. :/ ------------- UPDATE Ciagle nad tym siedze i tak: jak dam: [php:1:d81a0e5d22]<?php $a=mysql_query("SELECT * FROM jakas_tabela"); while($dane=mysql_fetch_array($a)) { print "zz"; } ?>[/php:1:d81a0e5d22] To dziala. Jesli dam w tym samym miejscu taki kod: [php:1:d81a0e5d22]<?php $bd->db_query_select("*",$bd->jakas_tabela); while ($tabela=mysql_fetch_array($bd->query_result)) { print "aa"; } ?>[/php:1:d81a0e5d22] To z kolei zaczelo dzialac (nie wiem czemu ;), ale.. nie do konca. Nie uwzglednia pierwszego rekordu w tabeli. Jesli mam 9 rekordow - wyswietli 8, oprocz 1. Jesli mam 2 - wyswietli 1. Jesli mam 1 rekord - nie ma nic.. Co ja robie zle? |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 407 Pomógł: 0 Dołączył: 24.10.2002 Skąd: warszawa Ostrzeżenie: (0%) ![]() ![]() |
Cytat Nie uwzglednia pierwszego rekordu w tabeli. Jesli mam 9 rekordow - wyswietli 8, oprocz 1. Jesli mam 2 - wyswietli 1. Jesli mam 1 rekord - nie ma nic..
moze gdzies w swoich funkcjach nie uwzgledniles ze pierwszy rekord ma id 0 ? -------------------- Zalew :: http://jakubzalewski.info
|
|
|
![]()
Post
#3
|
|
![]() Grupa: Przyjaciele php.pl Postów: 786 Pomógł: 0 Dołączył: 18.03.2002 Skąd: Wroclaw/Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Hej
Cytat [php:1:5c1654b486]..
Na koncu db_query_select masz wywolanie $this->db_query_array(); - to ona opuszca jeden wiersz.
function db_query_select($what,$table,$where="",$order="",$limit="") { $this->query_result=@mysql_query("SELECT $what FROM $table $where $order $limit") or die ($this->db_error()); $this->db_query_array(); } function db_query_array() { $this->query_array=mysql_fetch_array($this->query_result) or die ($this->db_error()); } ... ?>[/php:1:5c1654b486] ... jak dam: [php:1:5c1654b486]<?php $a=mysql_query("SELECT * FROM jakas_tabela"); while($dane=mysql_fetch_array($a)) { print "zz"; } ?>[/php:1:5c1654b486] To dziala. Jesli dam w tym samym miejscu taki kod: [php:1:5c1654b486]<?php $bd->db_query_select("*",$bd->jakas_tabela); while ($tabela=mysql_fetch_array($bd->query_result)) { print "aa"; } ?>[/php:1:5c1654b486] To z kolei zaczelo dzialac (nie wiem czemu ;), ale.. nie do konca. Nie uwzglednia pierwszego rekordu w tabeli. Jesli mam 9 rekordow - wyswietli 8, oprocz 1. Jesli mam 2 - wyswietli 1. Jesli mam 1 rekord - nie ma nic.. Co ja robie zle? Pozdrawiam -------------------- .. make web your home ..
|
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 80 Pomógł: 0 Dołączył: -- Ostrzeżenie: (0%) ![]() ![]() |
Cytat Na koncu db_query_select masz wywolanie $this->db_query_array(); - to ona opuszca jeden wiersz.
Wlasnie wczoraj pozno w nocy do tego doszlem ![]() |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 19.07.2025 - 14:53 |