miras
3.04.2013, 18:31:11
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
<?php
class klasa {
public function polacz() {
try
$pdo = new PDO('mysql:host=localhost;dbname=x', 'x', 'x');
}
public function wyswietl() {
$pdo -> setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$stmt = $pdo -> query('SELECT tytul, opis FROM tabela');
}
}
?>
index.php :
<?php
include("klasa.class.php");
polacz();
zapisz();
while($row = $stmt -> fetch())
{
echo '<li>'.$row['tytul'].': '.$row['opis'].'</li>'; }
?>
Dzięki z góry.
krzysiekk
3.04.2013, 18:33:27
public function polacz() {
try
$pdo = new PDO('mysql:host=localhost;dbname=x', 'x', 'x');
}
co to za TRY ?
bledy sie podaje zawsze pisał o tym ktoryś moderator.
artuross
3.04.2013, 18:34:04
try
$pdo = new PDO('mysql:host=localhost;dbname=x', 'x', 'x');
powinno byc
try{
$pdo = new PDO('mysql:host=localhost;dbname=x', 'x', 'x');
}
catch(jakis_exception $e)
{
// kod
}
miras
3.04.2013, 18:45:38
Ok.. dzięki, a mógłbyś mi jeszcze wytłumaczyć od czego jest ? :
catch(jakis_exception $e)
{
// kod
}
ta część?
artuross
3.04.2013, 19:51:54
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
miras
5.04.2013, 13:57:07
index.php:
<?php
include("bet.class.php");
$klasa = new klasa;
$klasa->polacz();
$klasa->wyswietl();
while($row = $stmt -> fetch())
{
echo '<li>'.$row['tytul'].': '.$row['opis'].'</li>'; }
?>
bet.class.php
<?php
class klasa {
public function polacz() {
try {
$pdo = new PDO('mysql:host=localhost;dbname=ng177441_cbr', 'ng177441_cbr', '{r^PHQhP#QLe');
$pdo -> setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch(PDOException $e){
echo 'Połączenie nie mogło zostać utworzone.<br />'; }
}
public function wyswietl() {
$stmt = $pdo -> query('SELECT tytul, opis FROM ogloszenia');
}
}
?>
I nadal mam błąd:
Call to a member function query() on a non-object in bet.class.php on line 17
Szymciosek
5.04.2013, 14:00:36
<?php
class klasa {
private $pdo;
public function polacz() {
try {
$this->pdo = new PDO('mysql:host=localhost;dbname=ng177441_cbr', 'ng177441_cbr', '{r^PHQhP#QLe');
$this->pdo -> setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch(PDOException $e){
echo 'Połączenie nie mogło zostać utworzone.<br />'; }
}
public function wyswietl() {
$stmt = $this->pdo -> query('SELECT tytul, opis FROM ogloszenia');
}
}
?>
nospor
5.04.2013, 14:00:41
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
miras
5.04.2013, 14:43:56
ok, dzięki:)
a jeszcze pytanko ostatnie ;>
<?php
class klasa {
private $pdo;
public $stmt;
public function polacz() {
try {
$this->pdo = new PDO('mysql:host=localhost;dbname=x', 'x', 'x');
$this->pdo -> setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch(PDOException $e){
echo 'Połączenie nie mogło zostać utworzone.<br />'; }
}
public function wyswietl() {
$this->stmt = $this->pdo -> query('SELECT tytul, opis, data FROM ogloszenia');
}
}
?>
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ć...
viking
5.04.2013, 14:50:49
Jak ci wygodnie. Przy takim kodzie prosi się o class klasa extends PDO...
miras
5.04.2013, 14:54:18
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.
viking
5.04.2013, 15:02:16
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.
markonix
5.04.2013, 15:05:35
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.
Szymciosek
5.04.2013, 15:07:23
Tu masz rację, też zacząłem jakiś czas temu MVC i jest o wiele lepsza organizacja projektu. Wszystko zaczyna mieć sens
miras
5.04.2013, 15:12:40
ok, dzięki za tą wskazówkę, dobrze, spróbuję oczywiście z MCV na początek
Szymciosek
5.04.2013, 15:13:36
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.
markonix
5.04.2013, 15:26:48
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".
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.