![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 190 Pomógł: 1 Dołączył: 20.05.2005 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
Witam!
Mam w Smarty petle section, a w niej chce przegladac 2 tablice. Array1 jest indeksowana od 0 do 19 - i z tym nie ma problemu. Natomiast array2 jest indeksowana od 1 do 20 - czyli w tym samym powtorzeniu petli musze podac dla array2 wartosc indeksu o 1 wieksza. Tylko jak to zrobic?? Ponizszy przyklad powoduje blad:
Taki cudak rowniez nie dziala:
Jak to zrobic? |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 113 Pomógł: 5 Dołączył: 12.09.2006 Skąd: Pruszków/Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Ale co ci konkretnie nie dziala - nie odczytuje sie wartosc petli, wywala blad ? Ja na twoim miejscu wrzucilbym do tego section przy okazji poglad kazdego kroku petli (moze nawet JavaScriptowym alertem) i zobaczyl co jest w te wartosci podstawiane.
-------------------- "Człowiek dążący do swego celu może być skuteczny tylko w przypadku, jeśli każdą minutę swego życia wykorzysta z maksymalną korzyścią dla osiągnięcia zaplanowanego celu. Jeśli stworzył dla siebie system kar i karze sam siebie za każdą zmarnowaną minutę. Człowiekowi w zupełności wystarczą 3-4 godziny snu, cały pozostały czas może być wykorzystany dla osiągnięcia upragnionego celu." -- Wiktor Suworow
Java devBlog KulturalnyChlebik |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 1 597 Pomógł: 30 Dołączył: 19.02.2003 Skąd: Tychy Ostrzeżenie: (0%) ![]() ![]() |
1) Smarty nie odbywa się po stronie przeglądarki.
2) użyj foreach tam, jest key -------------------- Zapraszam na mój php blog, tworzenie stron.
|
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 190 Pomógł: 1 Dołączył: 20.05.2005 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
Cytat Ale co ci konkretnie nie dziala - nie odczytuje sie wartosc petli, wywala blad ? Zaleznie jaka konstrukcje wykombinuje, to albo nie ma zadnej wartosci, albo smarty wywala blad skladni w szablonie. Problem w tym, ze nie wiem jak podac odpowiedni index dla tablicy. Obojetnie, czy to bedzie $smarty.section.test.iteration czy cos innego - nie moge tego uzyc jako wartosci indeksu przy odczytywaniu z pol tablicy. Cytat Smarty nie odbywa się po stronie przeglądarki. Za bardzo nie wiedzialem gdzie to przypiac. php tez to nie jest... Cytat użyj foreach tam, jest key To tez nie zmienia sytuacji, bo mam $key z jednej tablicy, ale zeby odczytac odpowiedni wiersz z 2 tablicy, to jako index potrzebuje $key+1. A jak to mam napisac? To jest poprawne skladniowo, ale to zly nr indeksu:
A to juz powoduje blad skladni:
|
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 113 Pomógł: 5 Dołączył: 12.09.2006 Skąd: Pruszków/Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Nie przetestuje tego na razie bo nie mam czasu, ale szybkie mysli:
1. Sprawdz na poziomie PHP czy w tych tablicach w ogole cos jest ![]() 2. W Smarty sprawdz sama pierwsza tablice (ta indeksowana od 0) - czy wyswietlane sa zawarte w niej wartosci. 3. Co to znaczy, ze masz druga tablice indeksowana od 1? Tzn. czy jest to tablica asocjacyjna, gdzie liczby sa indeksami, czy po prostu tablica, w ktorej elementy zaczynaja sie od 1, a w komorce tablicy o indeksie 0 po prostu nic nie ma? No bo jezeli okazuje sie, ze jest to tablica asocjacyjna to zapis $zmienna + 1 nie ma sensu bo to nie liczby, tylko string. Daj znac jak cos, w nocy usiade na powaznie. Pzdr. -------------------- "Człowiek dążący do swego celu może być skuteczny tylko w przypadku, jeśli każdą minutę swego życia wykorzysta z maksymalną korzyścią dla osiągnięcia zaplanowanego celu. Jeśli stworzył dla siebie system kar i karze sam siebie za każdą zmarnowaną minutę. Człowiekowi w zupełności wystarczą 3-4 godziny snu, cały pozostały czas może być wykorzystany dla osiągnięcia upragnionego celu." -- Wiktor Suworow
Java devBlog KulturalnyChlebik |
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 190 Pomógł: 1 Dołączył: 20.05.2005 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
Tablice sprawdzalem w php - sa w porzadku. Pierwsza moge bez problemu wyswietlic w smarty.
Druga jest indeksowana liczbowo (nie asocjacyjnie), przy czym tylko dla niektorych liczb sa w niej wartosci, np. moga byc tylko dla indeksu 3 i 7: Kod array(1) { [3]=> array(2) { ["f1"]=> string(2) "v1" ["f2"]=> string(2) "v2" } [7]=> array(2) { ["f1"]=> string(2) "v1" ["f2"]=> string(2) "v2" } } Minimalna wartosc indeksu to 1, a maksymalna 20. |
|
|
![]()
Post
#7
|
|
![]() Grupa: Przyjaciele php.pl Postów: 1 590 Pomógł: 40 Dołączył: 11.01.2007 Skąd: Centrum Ostrzeżenie: (0%) ![]() ![]() |
Tak jak sf proponuje wykorzystać foreach.
Pokaż strukturę tych tablic w PHP .. wyświetl je w ten sposób :
a postaramy się coś wymyślić. -------------------- 404
|
|
|
![]()
Post
#8
|
|
![]() Grupa: Zarejestrowani Postów: 113 Pomógł: 5 Dołączył: 12.09.2006 Skąd: Pruszków/Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Re: Cienki i sf - oczywiscie, ze mozna tak zrobic, ale prawda jest taka, ze wlasnie z section w Smartym sa problemy jak cholera i zasadniczo wykorzystanie tej petli do tego, do czego zostala stworzona (tzn. przechodzenia przez zwykla tablice nieasocjacyjna) jest utrudnione. Nie tak dawno tez probowalem zmusic section do poprawnego zachowania i mi nie wyszlo mimo usilnych prob.
Rozwiazanie zas tutaj okazalo sie banalnie proste, wystarczylo to wrzucic na spokojnie na warsztat. Z PHP przekazuje do Smarty 2 tablice, obydwie nieasocjacyjne. I kod wyglada sobie tak:
1. Wyrzuc to .value z wartosci tablicy - u mnie kiedy tego uzywam to wyskakuje mi 1 element stringa umieszczonego pod pierwszym indeksem. Mowiac krotko - kiedy w tablicy[0] mam wartosc 'jeden' do kiedy uzyje Twojej notacji mam po podstawieniu literke 'j'. 2. Skoro ty sie chcesz odwolywac do 1 elementu wyzej to uzycie $smarty.section.test.iteration jest jak najbardziej poprawne bo przeciez wartosc ta zawsze startuje od 1. Ja skojarzlyem te zmienna z inna by miec pewnosc, ze to wszystko dziala, ale jak nawet w miejsce $array2[$licznik] wstawie $array2[$smarty.ect....] to i tak mi dziala. Pzdr Chlebik -------------------- "Człowiek dążący do swego celu może być skuteczny tylko w przypadku, jeśli każdą minutę swego życia wykorzysta z maksymalną korzyścią dla osiągnięcia zaplanowanego celu. Jeśli stworzył dla siebie system kar i karze sam siebie za każdą zmarnowaną minutę. Człowiekowi w zupełności wystarczą 3-4 godziny snu, cały pozostały czas może być wykorzystany dla osiągnięcia upragnionego celu." -- Wiktor Suworow
Java devBlog KulturalnyChlebik |
|
|
![]()
Post
#9
|
|
![]() Grupa: Przyjaciele php.pl Postów: 1 590 Pomógł: 40 Dołączył: 11.01.2007 Skąd: Centrum Ostrzeżenie: (0%) ![]() ![]() |
@chlebik no właśnie .. skoro z section są problemy to lepiej korzystać z foreach, który takich problemów nie robi i działa miło i przyjemnie
![]() Czekam na widok tej tablicy generowanej w PHP bo chciałbym się przekonać, czy rzeczywiście jest tak trudne do zrobienia to wyświetlanie tego w section/foreach -------------------- 404
|
|
|
![]()
Post
#10
|
|
![]() Grupa: Zarejestrowani Postów: 113 Pomógł: 5 Dołączył: 12.09.2006 Skąd: Pruszków/Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Aj no trudne - wyzwanie i tyle
![]() -------------------- "Człowiek dążący do swego celu może być skuteczny tylko w przypadku, jeśli każdą minutę swego życia wykorzysta z maksymalną korzyścią dla osiągnięcia zaplanowanego celu. Jeśli stworzył dla siebie system kar i karze sam siebie za każdą zmarnowaną minutę. Człowiekowi w zupełności wystarczą 3-4 godziny snu, cały pozostały czas może być wykorzystany dla osiągnięcia upragnionego celu." -- Wiktor Suworow
Java devBlog KulturalnyChlebik |
|
|
![]()
Post
#11
|
|
![]() Grupa: Zarejestrowani Postów: 190 Pomógł: 1 Dołączył: 20.05.2005 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
No wiec zamieszczam strukture obu tablic, oczywiscie troche skrocona.
Pierwsza, 20 pol indeksowanych od 0 do 19: Kod Array ( [0] => Array ( [columnId] => 81 [columnNumber] => 1 [columnComment] => ) ... ... ... [19] => Array ( [columnId] => 100 [columnNumber] => 20 [columnComment] => ) ) I druga, mozliwe indeksy od 1 do 20, przy czym w tablicy sa obecne tylko niektore z nich: Kod Array ( [2] => Array ( [columnId] => 82 [personId] => 11 [name] => Jurek [surname] => Jurczak ... ... ... ) [6] => Array ( [columnId] => 90 [personId] => 16 [name] => Marek [surname] => Markowski ... ... ... ) ) W 1 iteracji chce odczytac element 1 tablicy o indeksie 0 i element 2 tablicy o indeksie 1 (jesli istnieje). W 2 iteracji chce odczytac element 1 tablicy o indeksie 1 i element 2 tablicy o indeksie 2 (jesli istnieje). I tak dalej... |
|
|
![]()
Post
#12
|
|
![]() Grupa: Zarejestrowani Postów: 113 Pomógł: 5 Dołączył: 12.09.2006 Skąd: Pruszków/Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Wroc, czekaj - nie rozumiem czegos. To znaczy, ze caly czas mowiles o tablicy tablic? Bo juz sie gubie.
-------------------- "Człowiek dążący do swego celu może być skuteczny tylko w przypadku, jeśli każdą minutę swego życia wykorzysta z maksymalną korzyścią dla osiągnięcia zaplanowanego celu. Jeśli stworzył dla siebie system kar i karze sam siebie za każdą zmarnowaną minutę. Człowiekowi w zupełności wystarczą 3-4 godziny snu, cały pozostały czas może być wykorzystany dla osiągnięcia upragnionego celu." -- Wiktor Suworow
Java devBlog KulturalnyChlebik |
|
|
![]()
Post
#13
|
|
![]() Grupa: Przyjaciele php.pl Postów: 1 590 Pomógł: 40 Dołączył: 11.01.2007 Skąd: Centrum Ostrzeżenie: (0%) ![]() ![]() |
Dla tak stworzonych tablic w PHP możesz wykonać w Smartach takie coś:
a pętla w Smartach wyglądała tak: Nie wiem czy o taki efekt Ci chodzi, ale może coś pomogłem. -------------------- 404
|
|
|
![]()
Post
#14
|
|
![]() Grupa: Zarejestrowani Postów: 190 Pomógł: 1 Dołączył: 20.05.2005 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
Cytat Nie wiem czy o taki efekt Ci chodzi, ale może coś pomogłem. O to wlasnie chodzilo. Dziekuje ![]() Kluczem do sukcesu okazalo sie: Kod {assign var=g value=$smarty.section.x.index+1} Jak juz mam ta zmienna to reszta jest prosta. Ale na to rozwiazanie nie wpadlem ![]() |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 19.07.2025 - 07:00 |