Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Problem z "dziedziczeniem" zmiennej
Forum PHP.pl > Forum > Przedszkole
Onliner
Witam!
Z góry przepraszam za tytuł, bo pewnie zły, ale nie wiem jak to opisać. Sytuacja ma się tak. Są 4 pliki:
index.php, config.php, database.php i model.php
config.php - model, który pobiera konfguracje z mysql
  1. <?php
  2. /* Model służący do pobierania i zapisywania konfiguracji */
  3. class Config extends Model
  4. {
  5.  
  6. function getvar($name)
  7. {
  8. $this->select(array('var'), 'config', 'name = ' . "'" . $name . "'");
  9. return $this->get()
  10. or die('BŁĄD W PLIKU MODELS/CONFIG.PHP');
  11. }
  12.  
  13. }
  14. ?>

database.php - obsługa mysql
  1. <?php
  2. /* Skrypt ułatwiający korzystanie z baz danych */
  3. class DB
  4. {
  5. private $query;
  6. private $i;
  7.  
  8. function select($array, $skad, $where = 0)
  9. {
  10. $this->query = '';
  11. $this->query = "SELECT ";
  12. foreach($array as $i)
  13. {
  14. $this->query .= "`" . $i . '`,';
  15. }
  16. $this->query = substr($this->query, 0, -1);
  17. $this->query .= ' FROM ' . "`" . $skad . "`" . ' WHERE ' . $where;
  18. }
  19.  
  20. function get()
  21. {
  22. $wynik = mysql_query($this->query)
  23. or die("BŁAĐ W ZAPYTANIU MYSQL PLIK KERNEL/DATABASE.PHP");
  24. return mysql_fetch_assoc($wynik);
  25. }
  26.  
  27. }
  28. ?>

model.php - obsługa modeli
  1. <?php
  2. /* Klasa obssługująca modele MVC */
  3. /* Ładujemy pliki potrzebne do obsługi baz danych w modelach */
  4. include('Kernel/database.php');
  5. class Model extends DB
  6. {
  7. var $name;
  8.  
  9. function load()
  10. {
  11. include('Models/' . $this->name . '.php');
  12. }
  13.  
  14. }
  15. ?>

index.php
  1. <?
  2. /* INCLUDUJEMY PLIKI JĄDRA(KERNEL) */
  3. include('Kernel/template.php');
  4. include('Kernel/MVC/model.php');
  5. /* ŁĄCZYMY SIĘ Z BAZĄ */
  6. include('Config/mysql.php');
  7.  
  8. /* Załadowanie obsługi modułów oraz poszczególnych modułów */
  9. $model = new Model;
  10. $model->name = 'config';
  11. $model->load();
  12. $config = new Config;
  13. /* ------------------------------------------------------- */
  14. $szablon = new template;
  15. $tytu = $config->getvar('Title')
  16. or die('BŁĄD W PLIKU INDEX.PHP');
  17. foreach($tytu as $trymp)
  18. {
  19. $tytul = $trymp->var;
  20. }
  21. $array = array(
  22. 'Tytul' => $tytul,
  23. 'klucze' => 'CMS',
  24. 'opis' => 'CMS'
  25. );
  26. $szablon->load('Underground', $array);
  27. /* Koniec wyświetlania szablonu */
  28.  
  29. ?>

Kod błędu:
Cytat
Warning: Invalid argument supplied for foreach() in /opt/lampp/htdocs/CMS/index.php on line 17

Błagam o pomoc, męczę się z tym od wczoraj.
Pilsener
  1. <?php
  2. $tytu = $config->getvar('Title')
  3. ?>
- sprawdź, czy ten kod generuje poprawną tablicę, nie może ona być pusta, bo wtedy przy próbie jej parsowania wywali warning.
Onliner
No właśnie problem w tym, że nie przekazuje tablicy z config.php do index.php więc jest pusta.
l0ud
  1. <?php
  2. function get()
  3. {
  4. var_dump($this->query);
  5. $wynik = mysql_query($this->query);
  6. }
  7. ?>


Co wyrzuci kod po zamianie metody get na powyższą?
Onliner
Cytat
string(47) "SELECT `var` FROM `config` WHERE name = 'Title'" array(1) { ["var"]=> string(10) "CMSIK beta" } BŁĄD W PLIKU MODELS/CONFIG.PHP

Oto wynik
l0ud
  1. <?php
  2. or die('BŁĄD W PLIKU INDEX.PHP');
  3. ?>


pod tym dodaj
  1. <?php
  2. var_dump($tytu);
  3. ?>

i jeszcze raz napisz, co zwraca (tamto cofnij tak jak było)

Czyżbyś źle zbudował foreach()?
Onliner
Wyszło:
Cytat
bool(true)

Wie ktoś co to może być? ja już nie mam siły
l0ud
Zamień tą funkcję getvar() na taką:

  1. <?php
  2. function getvar($name)
  3. {
  4. $this->select(array('var'), 'config', 'name = ' . "'" . $name . "'");
  5.  
  6. $out = $this->get()
  7. or die('BŁĄD W PLIKU MODELS/CONFIG.PHP');
  8.  
  9. return $out;
  10. }
  11. ?>
Onliner
Wielkie dzięki!!!Pomogło
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.