Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Pętla obraca się tylko raz, a powinna dwa
Turgon
post
Post #1





Grupa: Zarejestrowani
Postów: 800
Pomógł: 0
Dołączył: 26.11.2005
Skąd: Nowy Sącz

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


Dane wejściowe:
Cytat
array(2) { [0]=> array(5) { ["id"]=> string(1) "1" ["title"]=> string(27) "Tytu? rzeczonego news'a... " ["content"]=> string(22) "Jaki? tam tekst news'a" ["autor"]=> string(6) "turgon" ["date"]=> string(19) "2006-12-30 13:41:26" } [1]=> array(5) { ["id"]=> string(1) "2" ["title"]=> string(10) "hafagagaga" ["content"]=> string(19) "Kolejna cze?? newsa" ["autor"]=> string(10) "Shur'tugal" ["date"]=> string(19) "2006-12-30 14:05:16" } }


Kod wykonujący:
  1. <?php
  2. for($i = 0;$i < count($newses)-1;$i++){
  3. $this->view->title = $newses[$i]['title'];
  4. $this->view->content = $newses[$i]['content'];
  5. $this->view->date = $newses[$i]['date'];
  6. $this->view->autor = $newses[$i]['autor'];
  7. $this->view->loadView('news');
  8. $pNews[] = $this->view->render();
  9. }
  10. ?>


Najpierw był foreach, ale też nie działało, to zmieniłem na for. Może mi ktoś wyjaśnić ten fenomen (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif) ?
Go to the top of the page
+Quote Post
phpion
post
Post #2





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




// CUT //
Ile masz elementow w tablicy? 2! Co ci wyjdzie z dzialania count($newses)-1? 2-1=? 1! Czyli ostatecznie masz for($i = 0;$i < 1;$i++)
Jak dla mnie zaden fenomen.

Ten post edytował phpion.com 30.12.2006, 17:43:56
Go to the top of the page
+Quote Post
nasty
post
Post #3





Grupa: Zarejestrowani
Postów: 634
Pomógł: 14
Dołączył: 27.05.2006
Skąd: Berlin

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


to zdejmij ten -1
Go to the top of the page
+Quote Post
Turgon
post
Post #4





Grupa: Zarejestrowani
Postów: 800
Pomógł: 0
Dołączył: 26.11.2005
Skąd: Nowy Sącz

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


Nie, ponieważ numeracja w tablicy zaczyna się od 0.
Go to the top of the page
+Quote Post
nasty
post
Post #5





Grupa: Zarejestrowani
Postów: 634
Pomógł: 14
Dołączył: 27.05.2006
Skąd: Berlin

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


no i co z tego? sprobowales?
W warunku for masz "<" czyli nie wejdzie ci w 2 bo juz nie bedzie < tylko ==
Go to the top of the page
+Quote Post
phpion
post
Post #6





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




Jesli Turgon wie lepiej to niechaj robi jak uwaza.
PS: moze to na Przedszkole??
Go to the top of the page
+Quote Post
Turgon
post
Post #7





Grupa: Zarejestrowani
Postów: 800
Pomógł: 0
Dołączył: 26.11.2005
Skąd: Nowy Sącz

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


Rzeczywiście Nasty - mój błąd.
Ale to i tak niczego nie zmienia. Po jednym obrocie pętli znika drugi element.

Zrobiłem mały test. Dałem normalna pętle foreach robiącą tylko var_dumpa i jest okej. Ale jak robię to samo z moją klasą View nie działa... Hmm...
Go to the top of the page
+Quote Post
nasty
post
Post #8





Grupa: Zarejestrowani
Postów: 634
Pomógł: 14
Dołączył: 27.05.2006
Skąd: Berlin

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


  1. <?php
  2. $pNews[] = $this->view->render();
  3. ?>
wiec blad jest tutaj, przebadaj ta metode.
Go to the top of the page
+Quote Post
Turgon
post
Post #9





Grupa: Zarejestrowani
Postów: 800
Pomógł: 0
Dołączył: 26.11.2005
Skąd: Nowy Sącz

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


Ona wyrabia całą robotę tzn. ładuje szablon przerabia zmienne tak, żeby zamiast $this->vars['zmienna'] było $zmienna i tyle... W ogóle nie jest wykonywany drugi przebieg:

  1. <?php
  2. public function render(){
  3. $viewPath = './views/'.strtolower($this->viewName).'.php';
  4. if(!file_exists($viewPath)){
  5. return;
  6. }
  7. if(strlen($this->vars) > 0){
  8. foreach($this->vars as $key => $val){
  9. ${$key} = $val;
  10. }
  11. }
  12. include_once($viewPath);
  13. $render = ob_get_contents();
  14. if(strlen($this->vars) > 0){
  15. foreach($this->vars as $name => $val){
  16. if(!is_array($val)){
  17. $render = preg_replace('/{'.$name.'}/i',$val,$render);
  18. }
  19. }
  20. }
  21.  
  22. return $render;
  23. }
  24. ?>
Go to the top of the page
+Quote Post
dr_bonzo
post
Post #10





Grupa: Przyjaciele php.pl
Postów: 5 724
Pomógł: 259
Dołączył: 13.04.2004
Skąd: N/A

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


A jak stwierdzasz ze petla wykonuje sie zla ilosc razy? Echo w niej samej czy w innym miejscu twojego systemu (widok, szablon?(IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) )?
Go to the top of the page
+Quote Post
Turgon
post
Post #11





Grupa: Zarejestrowani
Postów: 800
Pomógł: 0
Dołączył: 26.11.2005
Skąd: Nowy Sącz

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


Echo plus var_dumpy.
Go to the top of the page
+Quote Post
nasty
post
Post #12





Grupa: Zarejestrowani
Postów: 634
Pomógł: 14
Dołączył: 27.05.2006
Skąd: Berlin

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


no to ostatni mozliwy blad jest z funkcjia ktora dostaje $pNews[].
innej mozliwosci nie widze - wymiekam (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif)
Go to the top of the page
+Quote Post
Turgon
post
Post #13





Grupa: Zarejestrowani
Postów: 800
Pomógł: 0
Dołączył: 26.11.2005
Skąd: Nowy Sącz

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


Właśnie sprawdzałem $pNews jest w nim po zakończeniu pętli o jeden za mało rekord...

php mam 5.1.2. No proszę pomóżcie.
Go to the top of the page
+Quote Post
dr_bonzo
post
Post #14





Grupa: Przyjaciele php.pl
Postów: 5 724
Pomógł: 259
Dołączył: 13.04.2004
Skąd: N/A

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


  1. <?php
  2. $pNews = array(); // czemu nie newses? (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) , i czyzby to byl wskaznik ? (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif)
  3. foreach ( $newses as $news ) // gramatycznie powinno byc foreach ( $news as $news ), ale to nie przejdzie (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif)
  4. {
  5. $this->view->title = $news['title']
  6. ...
  7. $pNews[] = $this->view->render();
  8. }
  9.  
  10. $result = ( count( $pNews ) == count( $newses ) );
  11. var_dump( $result );
  12. ?>


i takie cos nie dziala? tzn zwraca false na koncu?
Go to the top of the page
+Quote Post
Turgon
post
Post #15





Grupa: Zarejestrowani
Postów: 800
Pomógł: 0
Dołączył: 26.11.2005
Skąd: Nowy Sącz

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


Jest ta sama ilość nagle teraz, ale pusta jest zawartość czyli bez wartości.
Go to the top of the page
+Quote Post
dr_bonzo
post
Post #16





Grupa: Przyjaciele php.pl
Postów: 5 724
Pomógł: 259
Dołączył: 13.04.2004
Skąd: N/A

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


Cytat
Jest ta sama ilość nagle teraz

Tja, i co jeszcze (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Tzn $pNews jest puste?


  1. <?php
  2. if(!file_exists($viewPath)){
  3. return; // moze ci tutaj wychodzi?
  4. ?>

zdebuguj ta funkcje (render()) I sprawdz ktoredy sterowanie rpzechodzi
Go to the top of the page
+Quote Post
Turgon
post
Post #17





Grupa: Zarejestrowani
Postów: 800
Pomógł: 0
Dołączył: 26.11.2005
Skąd: Nowy Sącz

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


$pNews ma drugą wartość pustą.
Co do tego fragmentu kodu co mi podajesz też nie!

Problemem było include_once. Doszedłem do tego po chwili dedukcji.
Go to the top of the page
+Quote Post
dr_bonzo
post
Post #18





Grupa: Przyjaciele php.pl
Postów: 5 724
Pomógł: 259
Dołączył: 13.04.2004
Skąd: N/A

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


Hahaha -- dobre (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif) LOL, nie moge, zalatwilo mnie to 'once' (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif)
Go to the top of the page
+Quote Post
Turgon
post
Post #19





Grupa: Zarejestrowani
Postów: 800
Pomógł: 0
Dołączył: 26.11.2005
Skąd: Nowy Sącz

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


Po prostu pomyślałem, jaki może być najbanalniejszy problem (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif)
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 14.09.2025 - 14:51