Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Pętla obraca się tylko raz, a powinna dwa
Forum PHP.pl > Forum > PHP
Turgon
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 biggrin.gif?
phpion
// 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.
nasty
to zdejmij ten -1
Turgon
Nie, ponieważ numeracja w tablicy zaczyna się od 0.
nasty
no i co z tego? sprobowales?
W warunku for masz "<" czyli nie wejdzie ci w 2 bo juz nie bedzie < tylko ==
phpion
Jesli Turgon wie lepiej to niechaj robi jak uwaza.
PS: moze to na Przedszkole??
Turgon
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...
nasty
  1. <?php
  2. $pNews[] = $this->view->render();
  3. ?>
wiec blad jest tutaj, przebadaj ta metode.
Turgon
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. ?>
dr_bonzo
A jak stwierdzasz ze petla wykonuje sie zla ilosc razy? Echo w niej samej czy w innym miejscu twojego systemu (widok, szablon?questionmark.gif)?
Turgon
Echo plus var_dumpy.
nasty
no to ostatni mozliwy blad jest z funkcjia ktora dostaje $pNews[].
innej mozliwosci nie widze - wymiekam biggrin.gif
Turgon
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.
dr_bonzo
  1. <?php
  2. $pNews = array(); // czemu nie newses? tongue.gif, i czyzby to byl wskaznik ? tongue.gif
  3. foreach ( $newses as $news ) // gramatycznie powinno byc foreach ( $news as $news ), ale to nie przejdzie 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?
Turgon
Jest ta sama ilość nagle teraz, ale pusta jest zawartość czyli bez wartości.
dr_bonzo
Cytat
Jest ta sama ilość nagle teraz

Tja, i co jeszcze 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
Turgon
$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.
dr_bonzo
Hahaha -- dobre biggrin.gif LOL, nie moge, zalatwilo mnie to 'once' biggrin.gif
Turgon
Po prostu pomyślałem, jaki może być najbanalniejszy problem biggrin.gif
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.