Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]OOP, PDO łączenie się z bazą i wyświetlanie wyników., jw
miras
post 3.04.2013, 18:31:11
Post #1





Grupa: Zarejestrowani
Postów: 1 004
Pomógł: 9
Dołączył: 18.01.2011
Skąd: Siedlce

Ostrzeżenie: (30%)
XX---


Witam dalej męcze OOP i teraz mam taki problem, stworzyłem klasę a w niej 2 funkcje 1 - łącząca się z bazą danych 2 - wyświetlająca wyniki z bazy... jednak wywala mi tu błąd, podejrzewam, że jest to coś nieskomplikowanego i komuś kto jest w temacie nawet nie będzie trzeba go wklejac...

klasa.class.php

  1. <?php
  2.  
  3.  
  4. class klasa {
  5.  
  6. public function polacz() {
  7. try
  8. $pdo = new PDO('mysql:host=localhost;dbname=x', 'x', 'x');
  9.  
  10. }
  11.  
  12. public function wyswietl() {
  13. $pdo -> setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  14. $stmt = $pdo -> query('SELECT tytul, opis FROM tabela');
  15. }
  16.  
  17.  
  18. }
  19.  
  20. ?>




index.php :


  1. <?php
  2. include("klasa.class.php");
  3. polacz();
  4. zapisz();
  5. while($row = $stmt -> fetch())
  6. {
  7. echo '<li>'.$row['tytul'].': '.$row['opis'].'</li>';
  8. }
  9. ?>


Dzięki z góry.


--------------------
Go to the top of the page
+Quote Post
krzysiekk
post 3.04.2013, 18:33:27
Post #2





Grupa: Zarejestrowani
Postów: 155
Pomógł: 17
Dołączył: 13.03.2006
Skąd: Jaworze

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


  1.  
  2. public function polacz() {
  3. try
  4. $pdo = new PDO('mysql:host=localhost;dbname=x', 'x', 'x');
  5.  
  6. }



co to za TRY ?


bledy sie podaje zawsze pisał o tym ktoryś moderator.



Ten post edytował krzysiekk 3.04.2013, 18:35:43
Go to the top of the page
+Quote Post
artuross
post 3.04.2013, 18:34:04
Post #3





Grupa: Zarejestrowani
Postów: 164
Pomógł: 9
Dołączył: 30.12.2011

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


  1. try
  2. $pdo = new PDO('mysql:host=localhost;dbname=x', 'x', 'x');


powinno byc

  1. try{
  2. $pdo = new PDO('mysql:host=localhost;dbname=x', 'x', 'x');
  3. }
  4. catch(jakis_exception $e)
  5. {
  6. // kod
  7. }


Ten post edytował artuross 3.04.2013, 18:34:20


--------------------
Pomoglem? Daj pomogl!
Go to the top of the page
+Quote Post
miras
post 3.04.2013, 18:45:38
Post #4





Grupa: Zarejestrowani
Postów: 1 004
Pomógł: 9
Dołączył: 18.01.2011
Skąd: Siedlce

Ostrzeżenie: (30%)
XX---


Ok.. dzięki, a mógłbyś mi jeszcze wytłumaczyć od czego jest ? :

  1. catch(jakis_exception $e)
  2. {
  3. // kod
  4. }


ta część?


--------------------
Go to the top of the page
+Quote Post
artuross
post 3.04.2013, 19:51:54
Post #5





Grupa: Zarejestrowani
Postów: 164
Pomógł: 9
Dołączył: 30.12.2011

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


W bloku try chodzi o to, ze jesli cos pojdzie nie tak to jest wyrzucany wyjatek, ten wyjatek powinien zostac obsluzony w bloku catch, dzieki temu jak nie mozesz polaczyc sie z DB to mozesz ladnie zakonczyc skrypt, a nie na chama smile.gif


--------------------
Pomoglem? Daj pomogl!
Go to the top of the page
+Quote Post
miras
post 5.04.2013, 13:57:07
Post #6





Grupa: Zarejestrowani
Postów: 1 004
Pomógł: 9
Dołączył: 18.01.2011
Skąd: Siedlce

Ostrzeżenie: (30%)
XX---


index.php:

  1. <?php
  2. include("bet.class.php");
  3. $klasa = new klasa;
  4. $klasa->polacz();
  5. $klasa->wyswietl();
  6. while($row = $stmt -> fetch())
  7. {
  8. echo '<li>'.$row['tytul'].': '.$row['opis'].'</li>';
  9. }
  10. ?>



bet.class.php

  1. <?php
  2.  
  3.  
  4. class klasa {
  5.  
  6. public function polacz() {
  7. try {
  8. $pdo = new PDO('mysql:host=localhost;dbname=ng177441_cbr', 'ng177441_cbr', '{r^PHQhP#QLe');
  9. $pdo -> setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  10. } catch(PDOException $e){
  11. echo 'Połączenie nie mogło zostać utworzone.<br />';
  12. }
  13. }
  14.  
  15. public function wyswietl() {
  16.  
  17. $stmt = $pdo -> query('SELECT tytul, opis FROM ogloszenia');
  18. }
  19.  
  20.  
  21. }
  22.  
  23. ?>


I nadal mam błąd:

  1. Call to a member function query() on a non-object in bet.class.php on line 17


--------------------
Go to the top of the page
+Quote Post
Szymciosek
post 5.04.2013, 14:00:36
Post #7





Grupa: Zarejestrowani
Postów: 1 168
Pomógł: 126
Dołączył: 5.02.2010
Skąd: Świdnica

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


  1. <?php
  2.  
  3.  
  4. class klasa {
  5. private $pdo;
  6.  
  7. public function polacz() {
  8. try {
  9. $this->pdo = new PDO('mysql:host=localhost;dbname=ng177441_cbr', 'ng177441_cbr', '{r^PHQhP#QLe');
  10. $this->pdo -> setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  11. } catch(PDOException $e){
  12. echo 'Połączenie nie mogło zostać utworzone.<br />';
  13. }
  14. }
  15.  
  16. public function wyswietl() {
  17.  
  18. $stmt = $this->pdo -> query('SELECT tytul, opis FROM ogloszenia');
  19. }
  20.  
  21.  
  22. }
  23.  
  24. ?>
Go to the top of the page
+Quote Post
nospor
post 5.04.2013, 14:00:41
Post #8





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Zanim zaczniesz bawić się w obiektówki, poczytaj wpierw jakieś podstawy.

W twoim przypadku podstawami są właściwości klasy, do których należy dobierać się przez $this


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
miras
post 5.04.2013, 14:43:56
Post #9





Grupa: Zarejestrowani
Postów: 1 004
Pomógł: 9
Dołączył: 18.01.2011
Skąd: Siedlce

Ostrzeżenie: (30%)
XX---


ok, dzięki:)

a jeszcze pytanko ostatnie ;>

  1.  
  2. <?php
  3.  
  4.  
  5. class klasa {
  6. private $pdo;
  7. public $stmt;
  8.  
  9. public function polacz() {
  10. try {
  11. $this->pdo = new PDO('mysql:host=localhost;dbname=x', 'x', 'x');
  12. $this->pdo -> setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  13. } catch(PDOException $e){
  14. echo 'Połączenie nie mogło zostać utworzone.<br />';
  15. }
  16. }
  17.  
  18. public function wyswietl() {
  19.  
  20. $this->stmt = $this->pdo -> query('SELECT tytul, opis, data FROM ogloszenia');
  21.  
  22. }
  23.  
  24.  
  25. }
  26.  
  27. ?>
  28.  



i pytanie: jak np. chcę formatować datę ( w bazie jest zapisana data w formacie strtotime, a jak chciałbym ją normalnie wyświetlić: date("Y-m-d", $data); to po której stronie mam "przerobić" tą datę - przy wświetlaniu w index.php czy w klasie? jesli w klasie to prosiłbym o jakiś przykład jak to rozwiązać...


--------------------
Go to the top of the page
+Quote Post
viking
post 5.04.2013, 14:50:49
Post #10





Grupa: Zarejestrowani
Postów: 6 380
Pomógł: 1116
Dołączył: 30.08.2006

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


Jak ci wygodnie. Przy takim kodzie prosi się o class klasa extends PDO...


--------------------
Go to the top of the page
+Quote Post
miras
post 5.04.2013, 14:54:18
Post #11





Grupa: Zarejestrowani
Postów: 1 004
Pomógł: 9
Dołączył: 18.01.2011
Skąd: Siedlce

Ostrzeżenie: (30%)
XX---


Mógłbyś to zobrazować? sorry, za takie pytania prośby, ale czekam na książkę i próbuje uczyć się z tego, co znalazłem w sieci.. wiec niewiele rozumiem jeszcze.


--------------------
Go to the top of the page
+Quote Post
viking
post 5.04.2013, 15:02:16
Post #12





Grupa: Zarejestrowani
Postów: 6 380
Pomógł: 1116
Dołączył: 30.08.2006

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


A bez książki w dokumentację zajrzeć się nie da? Albo w sieci poszukać lepszych źródeł jeżeli nie rozumiesz innych? To są naprawdę podstawy podstaw.

Ten post edytował viking 5.04.2013, 15:02:59


--------------------
Go to the top of the page
+Quote Post
markonix
post 5.04.2013, 15:05:35
Post #13





Grupa: Zarejestrowani
Postów: 2 707
Pomógł: 290
Dołączył: 16.12.2008
Skąd: Śląsk

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


Pisanie na siłę obiektowo nie ma żadnych korzyści - wiem to z autopsji.

Lepiej nauczyć się najpierw dobrze strukturalnie pisać, tzn. dobrze poznać sam język (dostępne funkcje, instrukcje warunkowe itp).
Potem należy się nauczyć podstaw "klas", ale po to aby móc tylko z nich korzystać (tworzenie obiektów, wywoływanie metod, konstruktor), tzn. z gotowców.
Potem można się pokusić o własne klasy - zamiast zbioru funkcji i na tym poprzestać.
I tutaj jak bierzemy się za coś większego (a za to się bierzesz bo już masz tam bazę danych więc jest to jakiś cms, portal, serwis) to nie walisz wszystko w obiekty bo tak będzie fajnie, bo wychodzi z tego koszmar, i wolałbym już dobrze napisany strukturalnie kod, a nie na siłę operowanie na obiektach.

Od tego żeby nauczyć się zalet pisania obiektowego są frameworki - najpierw te prostsze.
Dopiero MVC otworzyło mi oczy i zacząłem pisać coś czego się nie wstydzę - moje poprzednie "CMSy" pisane "obiektowo" już dawno wyrzuciłem do kosza bo wstyd mi się byłoby do nich przyznać, pisałem też własny FW i tam już było troszkę lepiej bo koncepcyjnie jest zbliżony do tych co istnieją ale też nie używam go już nigdzie, bo wiem, że FW rozwijany dłużej, przez większą społecznością do której należą lepsi programiści ode mnie zawsze będzie bardziej "przewidywalny" (dostatecznie funkcjonalny, przemyślany) od mojego.

Ten post edytował markonix 5.04.2013, 15:08:10


--------------------
Go to the top of the page
+Quote Post
Szymciosek
post 5.04.2013, 15:07:23
Post #14





Grupa: Zarejestrowani
Postów: 1 168
Pomógł: 126
Dołączył: 5.02.2010
Skąd: Świdnica

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


Tu masz rację, też zacząłem jakiś czas temu MVC i jest o wiele lepsza organizacja projektu. Wszystko zaczyna mieć sens wink.gif
Go to the top of the page
+Quote Post
miras
post 5.04.2013, 15:12:40
Post #15





Grupa: Zarejestrowani
Postów: 1 004
Pomógł: 9
Dołączył: 18.01.2011
Skąd: Siedlce

Ostrzeżenie: (30%)
XX---


ok, dzięki za tą wskazówkę, dobrze, spróbuję oczywiście z MCV na początek wink.gif


--------------------
Go to the top of the page
+Quote Post
Szymciosek
post 5.04.2013, 15:13:36
Post #16





Grupa: Zarejestrowani
Postów: 1 168
Pomógł: 126
Dołączył: 5.02.2010
Skąd: Świdnica

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


Na początek sugeruję poznaj chociaż jakiekolwiek podstawy/zasady OOP, jak obchodzić się z klasami, ze zmiennymi, stałymi itd itp... a później dopiero weź się za MVC.
Go to the top of the page
+Quote Post
markonix
post 5.04.2013, 15:26:48
Post #17





Grupa: Zarejestrowani
Postów: 2 707
Pomógł: 290
Dołączył: 16.12.2008
Skąd: Śląsk

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


No dokładnie, nie napisałem żeby najpierw brać się za MVC, najpierw podstawy operowania na obiektach.
MVC potem - najpierw w teorii (ale pewnie i tak jej nie zrozumiesz), potem w praktyce -> i tu będzie te "Ooo".


--------------------
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: 15.08.2025 - 04:07