Cinamicom
8.07.2013, 10:42:31
Witam! Od razu mówię, nie mogę uzyć echa do tego.
tutaj zapytanie
foreach($stmt as $row)
{
$title = $row['title'];
return '
<h4>'.$title.'</h4>'.$description.'';
}
no i problem w tym, że wyświetli mi tylko 1 tytuł i 1 opis, choć mam ich na prawdę x;
Jak to zrobić dobrze?
Dziękuje.
Damonsson
8.07.2013, 10:46:37
http://stackoverflow.com/questions/3579892...3579950#3579950 - Co do tytułu tematu.
A dla Twojego przykładu, to chyba najlepiej jakbyś stworzył pustą tablicę przed foreach, w foreach array_push. I dopiero za foreach, całą tablicę zwracał w returnie, pod jedną zmienną. Bo przecież możesz też chcieć zwrócić jeszcze coś innego oprócz tego, wtedy przyda się link powyżej.
Cinamicom
8.07.2013, 11:14:42
Nie bardzo wiem jak to zrobić.
foreach($stmt as $row)
{
$title = $row['title'];
$description = $row['description'];
}
return $bycz;
buliq
8.07.2013, 11:18:56
<h4>'.$title.'</h4>'.$description.'');
Cinamicom
8.07.2013, 11:27:45
Warning: Invalid argument supplied for foreach() in mój system szablonów
buliq
8.07.2013, 11:30:32
no powiedział ci parser gdzie jest problem? nie przekazałeś tablicy ...
Cinamicom
8.07.2013, 11:53:49
Może jestem tępy, ale nie bardzo rozumiem..

jak to ma działać.
foreach($tags as $tag => $tagvalue) { -
$this->tags['{$'.$tag.'}'] = $tagvalue; --->28linia z błędem
}
}
} else {
$this -> tags['{$'.$tags.'}'] = $value;
}
Damonsson
8.07.2013, 12:03:05
A co to jest? I co to ma wspólnego z tematem? A błąd masz w linijce z foreach przecież.
Cinamicom
8.07.2013, 12:05:31
No bo Warning: Invalid argument supplied for foreach() in [xxx]/Template.php on line 28
Tamten skrypt z returnem, wysyła mi to do tego z templata.
buliq
8.07.2013, 12:07:38
Mother of God ...
To nie może być linia z błędem, bo wyraźnie napisałeś że chodzi o foreach (2 linie wyżej, tam gdzie stoi -)
$tags nie jest typu tablicowego,
skąd masz $value?
$value zamień na $tags
Jeżeli tworzysz własny system szablonów, przestań. Jest wiele rozwiązań lepszych od twojego, zanim jeszcze zaczniesz myśleć o swoim. Ameryki nie odkryjesz.
Cinamicom
8.07.2013, 12:13:41
"Własne ale ciasne"
w value trzymam kod (ten z array push) a tags to tytuł.
buliq
8.07.2013, 12:15:34
"ciasne ale Własne" jeżeli już, inaczej nie ma sensu ...
trzymasz tam ten kod, ok.
Zastanów się logicznie, w jakim celu sprawdzasz czy zmienna jest tablicą, jeżeli jej nie używasz w tym fragmencie kodu?
@edit:
Z tym kodem co dodałeś to ja już się pogubiłem, co robisz a co chcesz uzyskać
Cinamicom
8.07.2013, 12:30:13
Opowiem to od początku..
$this->test('test', $this->view('test'));
1 parametr to $tags (używam go w szablonie {$nazwa}), 2 parametr to kod. To idzie do poniższego skryptu
public function test($tags,$value)
{
foreach($tags as $tag => $tagvalue) {
$this->tags['{$'.$tag.'}'] = $tagvalue;
}
}
} else {
$this -> tags['{$'.$tags.'}'] = $value;
}
}
Co w efekcie prowadzi do użycia w szablonie: {$test} i wykonuje mi się kod z 2 parametru ($value)
2 parametrem mam funkcję view('test') - ona ma mi wyświetlić listę rekordów. Jeśli zrobie to tak jak w 1 poście, wyświetli mi tylko 1 rekord, bo nie jest to tablica.
Damonsson
8.07.2013, 12:34:00
No ok, ale co tych chcesz foreachować? String "test"? To podajesz w parametrze przecież.
Poza tym nie znam lepszego systemu szablonów niż samo w sobie PHP, ale to już rzecz gustu.
buliq
8.07.2013, 12:36:46
Zastanów się jeszcze raz, pomyśl, może weź kartę i długopis i sobie rozpisz ....
z ciała metody wynika:
1. podaj mi 2 parametry
2. sprawdź czy drugi jest tablicą
3. jeżeli tak to zignoruj go, bo go nie potrzebuję ale w zamian pierwszy parametr wrzuć do foreach i módl się żeby on był tablicą
4. jeżeli nie to zrób coś tam.
Cinamicom
8.07.2013, 12:40:30
Hmm, czyli jak powinien wyglądać taki prawidłowy kod, taki prościutki. Nie było by problemu, gdybym użył echo zamiast return. Jednakże gdy użyje echo, to ten kod nie jest w tym miejscu na stronie gdzie dałem, tylko poza wszystkimi divami.
No i nie w każdym używam foreacha.
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.