Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Nie widzi funkcji
Forum PHP.pl > Forum > PHP
Balas
Mam problem, a mianowicie wywoluje klase do obslugi bazy danych i includuje plik templatki
  1. <?php
  2. /*polaczenie z baza danych*/
  3. $db=new db($db['host'] , $db['user'] , $db['pass'] , $db['name'] );
  4.  
  5. /*generowanie strony*/
  6. include('./template/index.php');
  7.  
  8. /*koniec polaczenia*/
  9. $db->close();
  10. ?>


w templatce mam:
  1. <? page('page_body'); ?>

gdzie funkcja page (z podanym parametrem) includuje odpowiedni modul.

Problem w tym, ze modul nie widzi polaczenia z baza danych (tym samym zainicjonowania klasy i funkcji w niej zawartch sad.gif ), a gdy umieszcze polaczenie bezposrednio w module to nie widzi parametrow :/ Jak to rozwiazac?

Klasa do obslugi bazy danych jest includowana, tak samo jak konfiguracja bazy.
dr_bonzo
Problem masz z "modulem" -- dlaczego jego kodu nie pokazesz?

Masz kilka opcji
1. przekaz obiekt polaczenia do "modulu"
2. uzyj Singleton'a dla obiektu polaczenia
3. przekaz parametry polaczenia do "modulu"
4. no i jeszcze nieszczesne "global" w funkcjach, niepolecam
Balas
Ograniczylem wszystko do jednego pliku, nadal nie działa sad.gif
  1. <?
  2. /*includowanie klas*/
  3. include('./includes/db.php');
  4. include('./includes/pager.php');
  5.  
  6. /*includowanie configu*/
  7. include('./cfg.php');
  8.  
  9. /*ustalenie tresci strony*/
  10. function page($element)
  11. {
  12. /*moduly w glownej czesci forum*/
  13. if($element=='page_body') {
  14. $row_number = $db -> row_number('pages WHERE frontpage=1');
  15. //stworzenie pagera
  16. $pager=new pager($row_number, $page_id);
  17. //nadanie nazwy klasy dla pagera
  18. $pager -> setClass('pager_nav');
  19. //zapytanie dal ktorego przeznaczony jest pager
  20. $query='SELECT * FROM pages WHERE frontpage=1 LIMIT '.$pager -> limit().', '.$pager -> onPage();
  21. $result = $db -> query($query);
  22. while($row = mysql_fetch_array($result))
  23. {
  24. echo '<div class="news"><h3>';
  25. echo $row['title'];
  26. echo '</h3><h4>napisal: ';
  27. echo $row['autor'].', '.$row['data'];
  28. echo '</h3><div class="text">';
  29. echo $row['text_small'];
  30. if($row['text_all'] !== '') {
  31. echo '<br />';
  32. echo '<a href="index.php?mod=pages&id='.$row['id'].'">wiecej</a>'; }
  33. echo '</div></div>';
  34. }
  35. // wyswietlenie nawygacji pagera
  36. $pager -> render();
  37. echo 'cos';
  38.  
  39. }
  40. }
  41. /*polaczenie z baza danych*/
  42. $db=new db($db['host'] , $db['user'] , $db['pass'] , $db['name'] );
  43.  
  44. page('page_body');
  45.  
  46.  
  47. /*koniec polaczenia*/
  48. $db->close();
  49. ?>


Moglby ktos napisac co i jak ?
Cytat
2. uzyj Singleton'a dla obiektu polaczenia

Znalazlem troche o tym na wiki.php i webcity.pl ale nie znajduje dla tego wykozystania u mnie (chyba ze zle zrozumialem).
koala
W najgorszym przypadku możesz zrobić :
Kod
function page($element)
{
    global $db;

// tu Twój istniejący kod

}


albo :
Kod
function page($element, $db)
{

}

linia 46: page('page_body', $db);
Balas
Problem juz rozwiazalem tongue.gif

  1. <?php
  2. db::query('xxx');
  3. ?>
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.