Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL][PHP]Weryfikacja kodu, obiektowe php
pablo_83
post 15.09.2009, 11:01:03
Post #1





Grupa: Zarejestrowani
Postów: 200
Pomógł: 16
Dołączył: 11.01.2009
Skąd: wrocław

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


Witam,
ponieważ uczę się dopiero obiektowego php, proszę o pomoc. Napisałem poniższy kod, który wyświetla nazwiska z BD. W tej postaci działa poprawnie.
Proszę o zweryfikowanie kodu bo na pewno zawiera on błędy, których ja nie widzę.
Czy w funkcji ShowClient może być echo? Wydaje mi się że powinno być to chyba inaczej rozwiązane ale nie wiem jak.
Nie mam konstruktora ale nie wiem co do niego mam wstawić, defakto można by całą funkcje connecting zawrzeć jako konstruktor ale czy to dobre rozwiązanie?
Proszę o weryfikacje i pomoc przy poprawkach kodu, dzięki.
  1. <?php
  2.  
  3. class Db_connect
  4. {
  5.  
  6. private function connecting ()
  7. {
  8. $host = 'localhost';
  9. $user = 'root';
  10. $password = 'xxx';
  11. $db = 'Serwis';
  12.  
  13. $this->db = mysql_connect($host, $user, $password, $db) or die (mysql_error('Nie mogę nawiązać połaczenia'));
  14. mysql_select_db($db, $this->db) or die (mysql_error('Nie mogę połaczyć z bazą danych'));
  15. mysql_query("Set Names 'utf8'");
  16. mysql_query("Set collation_connection = utf8_polish_ci");
  17.  
  18. }
  19.  
  20. private function closing ()
  21. {
  22. $this->connecting ();
  23. $close =$this->db;
  24. mysql_close($close);
  25. }
  26.  
  27. public function ShowClient ()
  28. {
  29. $this->connecting();
  30. //$nazwisko = $this->nazwisko;
  31.  
  32. $query = ('Select * from Klient');
  33. $results = mysql_query($query);
  34. $ile = mysql_num_rows($results) or die (mysql_error('Nie mogę wykonać zapytania.'));
  35. if ($ile>0)
  36. {
  37. for ($i=0;$i<$ile;$i++)
  38. {
  39. $row = mysql_fetch_array($results);
  40. echo $row['Nazwisko'].'</br>';
  41. }
  42. }
  43. $this->closing();
  44. }
  45. }
  46.  
  47. $baza = new Db_connect();
  48. $baza->ShowClient();
  49. ?>

jak mogę wstawić hasła z innego pliku? tzn jak użyć include/require i jak ma wyglądać plik z hasłami?
Wystarczy że będzie on zwykłym plikiem php i będzie wyglądał tak:
  1. <?php
  2. $host = 'xxx';
  3. $user = 'xxx';
  4. itd.
  5. ?>
Go to the top of the page
+Quote Post
askone
post 15.09.2009, 11:15:09
Post #2





Grupa: Zarejestrowani
Postów: 654
Pomógł: 121
Dołączył: 27.10.2007
Skąd: Poznań, Łódź

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


Hej

Pomyśl nad dodaniem:
  • konstruktora w którym ustawiać będziesz dane odnośnie bazy, tabeli. Pola te powinny być private.
  • funkcji do połączenia, zadeklarowanej jako public
  • każda funkcja realizująca pewne ściśle określone zadanie np. close, ShowUser powinna ograniczać się tylko to zadań dla jakich została napisana... Usuń więc łączenie do bazy z każdej z tych metod. Ewentualnie możesz dodać pole, w którym będziesz trzymał info czy jest połączenie.
To tyle... smile.gif

ps. nazwa klasy sugeruje jej dużą elastyczność, jednak lista metod udostępnianych mocno ją ogranicza do konkretnych zadań. Rozwiązanie: zmień nazwę klasy winksmiley.jpg - lub zamiast np. ShowUser zrób metodę Select($query).

Ten post edytował fly474 15.09.2009, 11:17:51


--------------------
Kliknij jeśli moja odpowiedź Ci pomogła.
askone.pl
Go to the top of the page
+Quote Post
paw-e-l
post 15.09.2009, 11:22:32
Post #3





Grupa: Zarejestrowani
Postów: 115
Pomógł: 23
Dołączył: 27.06.2009
Skąd: Jaworzno

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


co do funkcji show_client to ja bym raczej postawił na return winksmiley.jpg
  1. public function ShowClient ()
  2. {
  3. $this->connecting();
  4. //$nazwisko = $this->nazwisko;
  5.  
  6. $query = ('Select * from Klient');
  7. $results = mysql_query($query);
  8. $ile = mysql_num_rows($results) or die (mysql_error('Nie mogę wykonać zapytania.'));
  9. if ($ile>0)
  10. {
  11. for ($i=0;$i<$ile;$i++)
  12. {
  13. $row = mysql_fetch_array($results);
  14. $output .= $row['Nazwisko'].'</br>';
  15. }
  16. }
  17. $this->closing();
  18. return $output;
  19. }


a jeszcze lepszym rozwiązaniem wydaje się zwracanie tablicy
  1. public function ShowClient ()
  2. {
  3. $this->connecting();
  4. //$nazwisko = $this->nazwisko;
  5.  
  6. $query = ('Select * from Klient');
  7. $results = mysql_query($query);
  8. $ile = mysql_num_rows($results) or die (mysql_error('Nie mogę wykonać zapytania.'));
  9. if ($ile>0)
  10. {
  11. for ($i=0;$i<$ile;$i++)
  12. {
  13. $row = mysql_fetch_array($results);
  14. $output[] = $row['Nazwisko'];
  15. }
  16. }
  17. $this->closing();
  18. return $output;
  19. }


i potem przy wypisywaniu tylko

  1. $tablica = $twoja_klasa->ShowClient();
  2. foeach ($tablica as $row) {
  3. echo $row.'<br />';
  4. }


sorry jeśli namieszałem bo teraz bawie się w kohanie winksmiley.jpg
Pozdrawiam

Ten post edytował paw-e-l 15.09.2009, 11:27:04
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: 12.07.2025 - 22:51