Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Funkcja i PDO
Forum PHP.pl > Forum > Przedszkole
materkamil
Nie wiem dlaczego wyświetla mi błąd:

Cytat
Undefined variable: database in


W takim kodzie:

  1. $database = new PDO('mysql:host=localhost;dbname=SCMS','root','');
  2. function funkcja() {
  3. $database->query('SELECT * FROM tabela');
  4. }


Gdy linię:

database->query('SELECT * FROM tabela');

dam wyżej, żeby nie była w funkcji wszystko jest ok.
viking
A jaki jest zasięg zmiennych w php? http://php.net/manual/pl/language.variables.scope.php
Niktoś
No jakbyś użył akcesorów lub nadał zmiennej status global'ny to może w funkcji zmienna ta byłaby widoczna, a tak to sobie w niej siedzi jako niezdefiniowana.
materkamil
Czyli rozwiązanie jest takie:

  1. function funkcja() {
  2. global $database;
  3. $database->query('SELECT * FROM users');
  4. }
Damonsson
Jeśli działa haha.gif
!*!
Cytat(materkamil @ 25.09.2012, 19:00:11 ) *
Czyli rozwiązanie jest takie:

  1. function funkcja() {
  2. global $database;
  3. $database->query('SELECT * FROM users');
  4. }


Tylko po co Ci taka funkcja?
materkamil
Nie dokładnie taka, ale chodzi właśnie o tą formę gdzie dzięki funkcji uzyskujemy dane z bazy. Funkcja jest potrzebna do nowego projektu CMSa który niedługo dostanie się do oceny
binprogrammer
Więc jak skończysz to życzę Ci, aby nie trafił do działu humor smile.gif
materkamil
Spokojnie, poprawiłem się. Po ostatniej krytyce nowy projekt będzie zdecydowanie bardziej zaawansowany. Dokładniej mówiąc ta funkcja potrzebna mi jest do systemu szablonów, do tego cmsa, bo jedną z głównych zmian jest właśnie odcięcie mechanizmu działania w php od wyglądu w html i css. Jak skończę sami zobaczycie, gwarantuje, nie będzie to tak "okropne" jak ostatni CMS.
untorched
Dlaczego forum zamiast pomagać chce się nabijać z użytkowników? Nie pojmę tego, ale spróbuję zasugerować stworzenie klasy obsługi bazy, co będzie chyba bardzo dobrym rozwiązaniem. Prosty przykład(sic!):
  1. class Database {
  2.  
  3. private $hDB = NULL;
  4.  
  5. public function connect($host, $login, $pass, $db)
  6. {
  7. if($hDB !== NULL) return;
  8.  
  9. $this->hDB = new PDO('mysql:host='.$host.';dbname='.$db, $login, $pass);
  10. }
  11.  
  12. public function jakas_funkcja($sql)
  13. {
  14. return $this->hDB->query($sql);
  15. }
  16. }
  17.  
  18. $baza = new Database();
  19. $baza->connect($host, $login, $pass, $db);
  20. $zwrot = $baza->jakas_funkcja('SELECT * FROM users');
Niktoś
Nie za bardzo wiem co kombinujesz.Może o takie coś chodzi:

  1. function funkcja( $database) {
  2. $database->query('SELECT * FROM tabela');
  3. return $database;
  4. }
  5.  
  6. foreach (funkcja(new PDO('mysql:host=localhost;dbname=SCMS','root','')) as $row) {
  7. print $row['name'] . "\t";
  8. print $row['color'] . "\t";
  9. print $row['calories'] . "\n";
  10. }
Damonsson
@untorched: Poczytaj sobie wszystkie posty autora, to pojmiesz wink.gif
materkamil
Nie, kompletnie nic podobnego nie będzie jak ten przykład. Nie potrafię tego wytłumaczyć dopóki nie ujrzycie kodu o co chodzi. Wykorzystanie tej funkcji jest w szablonach, aby nie zaśmiecać kodu HTML wstawkami z PHP
untorched
Aha.
peter13135
Materkamil, Nie korzystaj z kursów UW-Team, bo potem takie kfiatki wychodzą. Korzystaj tylko ze swoich kursów.
!*!
Cytat(materkamil @ 25.09.2012, 20:42:28 ) *
Nie, kompletnie nic podobnego nie będzie jak ten przykład. Nie potrafię tego wytłumaczyć dopóki nie ujrzycie kodu o co chodzi. Wykorzystanie tej funkcji jest w szablonach, aby nie zaśmiecać kodu HTML wstawkami z PHP


Tylko co ma baza danych do szablonów? Stosuj MVC(P) i nie udziwniaj.

untorched - nie nabijamy się z użytkowników, pomagamy im. materkamil ma tylko ten zaszczyt wink.gif przestaniemy, jak Nas zaskoczy i nie mam tu na myśli jego kodu.
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.