Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Weryfikacja kodu
Forum PHP.pl > Forum > Przedszkole
pablo_83
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. ?>
askone
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).
paw-e-l
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
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.