![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 108 Pomógł: 0 Dołączył: 23.04.2010 Ostrzeżenie: (0%) ![]() ![]() |
Witam, zaczełem przerabiać swoją stronę na szablony Smart. I pojawił się pierwszy problem. Otóż przy wykonaniu kodu pojawia się błąd o treści:
Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 36 bytes) in E:\Dropbox\xampp-portable\htdocs\xampp\PJWSTK\users.php on line 16 Jako, że dopiero zaczynam naukę ze Smarty PHP kożystam z manulala zamieszczonego tu Poniżej zamieszczam funkcję z której korzystam w skrypcie, szablon .tpl oraz skrypt PHP.
|
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
while($wynik){
Przecież ty się tutaj zapętlasz i nigdy nie kończysz..... Problem ze smarty nie ma żadnego związku. To są podstawy php ![]() Warunek w WHILE musi się zmieniać, a u ciebie ciągle jest taki sam i prawdziwy ![]() Proszę, tu masz napisane jak pobierać dane z bazy przy pomocy WHILE http://pl1.php.net/manual/pl/mysqli-result.fetch-assoc.php Skorzytaj z tego bo jeszcze nie jesteś na etapie by kombinować. -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 108 Pomógł: 0 Dołączył: 23.04.2010 Ostrzeżenie: (0%) ![]() ![]() |
wyrażeniem w pętli while jest jest wynikiem funkcji db_czytaj() która zwraca wynik funkcji mysqli_fetch_assoc() tak jak w manualu podanym przez Ciebie
|
|
|
![]()
Post
#4
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
A ty nadal nie rozumiesz o czym mówie....
U ciebie $wynik w pętli się nie zmienia. Przec co generujesz niekończącą się pętle. Zaś w manuala warunek w WHILE się zmienia, gdyż masz tam na bięząco wynik mysql_fetch_assoc() który jest zmienny a na końcu jest FALSE i konczy WHILE. -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 108 Pomógł: 0 Dołączył: 23.04.2010 Ostrzeżenie: (0%) ![]() ![]() |
Dobrze myśle ze oczyszciłem kod php z błedów:
Funkcja realizujaca połączenie z baza danych:
Skrypt php
i plik z szablonem
Teraz niestety nic mi nie wyświetla tzn nie wyświetla mi tych rekordów z BD w szablonie |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 590 Pomógł: 107 Dołączył: 25.10.2011 Ostrzeżenie: (0%) ![]() ![]() |
Najpierw wczytujemy z bazy wiersz do zmiennej $wynik2. Potem tworzymy (znowu!) zmienną $wynik2, przypisując jej fragment TEJ SAMEJ zmiennej $wynik2... EDIT: I wszystko to robimy TYLKO PO TO, by podczas odczytywania następnego wiersza utracić te wartości przez nadpisanie je wartościami z właśnie odczytanego nowego wiersza... ![]() Ech... Tak czy inaczej, pisanie kluczowej pętli programu z użyciem jednej zmiennej to dość ciekawe podejście programistyczne. Swoją drogą, nazewnictwo zmiennych ($wynik, $wynik2) znudzi Ci się w okolicy $wynik10, o ile wcześniej nie dostaniesz szału z debugowaniem ("Kruca bomba, który numerek po $wynik dodać, aby znaleźć to, czego szukam?!"). Ten post edytował abort 19.10.2012, 19:44:01 |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 108 Pomógł: 0 Dołączył: 23.04.2010 Ostrzeżenie: (0%) ![]() ![]() |
tak faktycznie bardzo poważny błąd logiczny
poprawiony skrypt
teraz dla odmiany sypie błędami z Smartów Notice: Undefined offset: 0 in E:\Dropbox\xampp-portable\htdocs\xampp\PJWSTK\smarty\templates_c\5f14d12ab6ac7e7a6ed3fab9fca28161a609a98c.file.users.tpl.php on line 56
|
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 590 Pomógł: 107 Dołączył: 25.10.2011 Ostrzeżenie: (0%) ![]() ![]() |
Dawno nie używałem smarty, ale: http://www.smarty.net/docsv2/en/language.f....html.table.tpl - krócej i efektywniej.
Co prawda oznaczona w rozdziale "Custom Functions", ale po wpisaniu w googlach po "smarty display array as table" dostaniesz więcej wyników (to był pierwszy link). |
|
|
![]()
Post
#9
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
while($wynik2=mysqli_fetch_assoc($wynik)){
$users=array( 'user_id'=>$wynik2['user_id'], 'login'=>$wynik2['login'], 'name'=>$wynik2['name'], 'surname'=>$wynik2['surname'], 'email'=>$wynik2['telephone'], ); } Przecież ty tutaj w petli ciągle nadpisujesz $users.... w wyniku czego po pętli w $users masz tylko ostani rekord.... Tak ma być $users = array(); while($wynik2=mysqli_fetch_assoc($wynik)){ $users[]=array( 'user_id'=>$wynik2['user_id'], 'login'=>$wynik2['login'], 'name'=>$wynik2['name'], 'surname'=>$wynik2['surname'], 'email'=>$wynik2['telephone'], ); } I zamiast section używaj FOREACH - jest o niebo czytelniejsze i oniebo trudniej się pomylić. -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]() ![]() |
![]() |
Aktualny czas: 20.08.2025 - 17:28 |