Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Return, zwracanie kilku wartości.
Cinamicom
post 8.07.2013, 10:42:31
Post #1





Grupa: Zarejestrowani
Postów: 117
Pomógł: 0
Dołączył: 8.07.2013

Ostrzeżenie: (0%)
-----


Witam! Od razu mówię, nie mogę uzyć echa do tego.


  1. tutaj zapytanie
  2. foreach($stmt as $row)
  3. {
  4. $title = $row['title'];
  5.  
  6. return '
  7. <h4>'.$title.'</h4>'.$description.'';
  8. }


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.
Go to the top of the page
+Quote Post
Damonsson
post 8.07.2013, 10:46:37
Post #2





Grupa: Zarejestrowani
Postów: 2 355
Pomógł: 533
Dołączył: 15.01.2010
Skąd: Bydgoszcz

Ostrzeżenie: (0%)
-----


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.

Ten post edytował Damonsson 8.07.2013, 10:51:29
Go to the top of the page
+Quote Post
Cinamicom
post 8.07.2013, 11:14:42
Post #3





Grupa: Zarejestrowani
Postów: 117
Pomógł: 0
Dołączył: 8.07.2013

Ostrzeżenie: (0%)
-----


Nie bardzo wiem jak to zrobić.

  1. $bycz = array();
  2. foreach($stmt as $row)
  3. {
  4. $title = $row['title'];
  5. $description = $row['description'];
  6.  
  7. array_push(hmm);
  8.  
  9. }
  10.  
  11. return $bycz;


Ten post edytował Cinamicom 8.07.2013, 11:15:00
Go to the top of the page
+Quote Post
buliq
post 8.07.2013, 11:18:56
Post #4





Grupa: Zarejestrowani
Postów: 559
Pomógł: 93
Dołączył: 4.03.2008
Skąd: Olsztyn

Ostrzeżenie: (0%)
-----


  1. array_push($bycz, '
  2. <h4>'.$title.'</h4>'.$description.'');


--------------------
KTOŚ TU PACZY???

Kompedium wiedzy
Go to the top of the page
+Quote Post
Cinamicom
post 8.07.2013, 11:27:45
Post #5





Grupa: Zarejestrowani
Postów: 117
Pomógł: 0
Dołączył: 8.07.2013

Ostrzeżenie: (0%)
-----


Warning: Invalid argument supplied for foreach() in mój system szablonów

Ten post edytował Cinamicom 8.07.2013, 11:28:15
Go to the top of the page
+Quote Post
buliq
post 8.07.2013, 11:30:32
Post #6





Grupa: Zarejestrowani
Postów: 559
Pomógł: 93
Dołączył: 4.03.2008
Skąd: Olsztyn

Ostrzeżenie: (0%)
-----


no powiedział ci parser gdzie jest problem? nie przekazałeś tablicy ...


--------------------
KTOŚ TU PACZY???

Kompedium wiedzy
Go to the top of the page
+Quote Post
Cinamicom
post 8.07.2013, 11:53:49
Post #7





Grupa: Zarejestrowani
Postów: 117
Pomógł: 0
Dołączył: 8.07.2013

Ostrzeżenie: (0%)
-----


Może jestem tępy, ale nie bardzo rozumiem.. co_jest.gif jak to ma działać.


  1. if(is_array($value)) {
  2. foreach($tags as $tag => $tagvalue) { -
  3. if (!empty($tag)) {
  4. $this->tags['{$'.$tag.'}'] = $tagvalue; --->28linia z błędem
  5. }
  6. }
  7. } else {
  8. $this -> tags['{$'.$tags.'}'] = $value;
  9. }


Ten post edytował Cinamicom 8.07.2013, 11:57:38
Go to the top of the page
+Quote Post
Damonsson
post 8.07.2013, 12:03:05
Post #8





Grupa: Zarejestrowani
Postów: 2 355
Pomógł: 533
Dołączył: 15.01.2010
Skąd: Bydgoszcz

Ostrzeżenie: (0%)
-----


A co to jest? I co to ma wspólnego z tematem? A błąd masz w linijce z foreach przecież.

Ten post edytował Damonsson 8.07.2013, 12:04:04
Go to the top of the page
+Quote Post
Cinamicom
post 8.07.2013, 12:05:31
Post #9





Grupa: Zarejestrowani
Postów: 117
Pomógł: 0
Dołączył: 8.07.2013

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
buliq
post 8.07.2013, 12:07:38
Post #10





Grupa: Zarejestrowani
Postów: 559
Pomógł: 93
Dołączył: 4.03.2008
Skąd: Olsztyn

Ostrzeżenie: (0%)
-----


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.


--------------------
KTOŚ TU PACZY???

Kompedium wiedzy
Go to the top of the page
+Quote Post
Cinamicom
post 8.07.2013, 12:13:41
Post #11





Grupa: Zarejestrowani
Postów: 117
Pomógł: 0
Dołączył: 8.07.2013

Ostrzeżenie: (0%)
-----


"Własne ale ciasne"

w value trzymam kod (ten z array push) a tags to tytuł.

Ten post edytował Cinamicom 8.07.2013, 12:16:59
Go to the top of the page
+Quote Post
buliq
post 8.07.2013, 12:15:34
Post #12





Grupa: Zarejestrowani
Postów: 559
Pomógł: 93
Dołączył: 4.03.2008
Skąd: Olsztyn

Ostrzeżenie: (0%)
-----


"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ć

Ten post edytował buliq 8.07.2013, 12:16:34


--------------------
KTOŚ TU PACZY???

Kompedium wiedzy
Go to the top of the page
+Quote Post
Cinamicom
post 8.07.2013, 12:30:13
Post #13





Grupa: Zarejestrowani
Postów: 117
Pomógł: 0
Dołączył: 8.07.2013

Ostrzeżenie: (0%)
-----


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

  1. public function test($tags,$value)
  2. {
  3. if(is_array($value)) {
  4. foreach($tags as $tag => $tagvalue) {
  5. if (!empty($tag)) {
  6. $this->tags['{$'.$tag.'}'] = $tagvalue;
  7. }
  8. }
  9. } else {
  10. $this -> tags['{$'.$tags.'}'] = $value;
  11. }
  12. }


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.
Go to the top of the page
+Quote Post
Damonsson
post 8.07.2013, 12:34:00
Post #14





Grupa: Zarejestrowani
Postów: 2 355
Pomógł: 533
Dołączył: 15.01.2010
Skąd: Bydgoszcz

Ostrzeżenie: (0%)
-----


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.

Ten post edytował Damonsson 8.07.2013, 12:36:14
Go to the top of the page
+Quote Post
buliq
post 8.07.2013, 12:36:46
Post #15





Grupa: Zarejestrowani
Postów: 559
Pomógł: 93
Dołączył: 4.03.2008
Skąd: Olsztyn

Ostrzeżenie: (0%)
-----


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.


--------------------
KTOŚ TU PACZY???

Kompedium wiedzy
Go to the top of the page
+Quote Post
Cinamicom
post 8.07.2013, 12:40:30
Post #16





Grupa: Zarejestrowani
Postów: 117
Pomógł: 0
Dołączył: 8.07.2013

Ostrzeżenie: (0%)
-----


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.

Ten post edytował Cinamicom 8.07.2013, 13:14:35
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 3.07.2025 - 14:56