ďťż
Podstrony
|
telcocafeMam kod:<?php function smarty_function_filmy($params,&$smarty) { try { $pdo = new PDO('mysql:host='.DB_HOST.';dbname='.DB_NAME.'', DB_USER, DB_PASSWORD); $pdo -> setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); while($row=$pdo->query('SELECT * FROM kategoria')->fetch()) { $film['id'] = $row['id']; $film['kategoria'] = $row['kategoria']; $film_tablica[] = $film; } $pdo = null; $pdo -> closeCursor(); $smarty -> assign('film', $film_tablica); $smarty -> fetch('plugins_templates/filmy.tpl'); } catch (PDOException $e) { print "Error!: " . $e->getMessage() . "<br/>"; die(); } } ?> wywala mi błąd: Fatal error: Allowed memory size of 33554432 bytes exhausted (tried to allocate 16 bytes) in /home/wiciu/domains/wiciu.hekko.pl/public_html/filmy/plugins/function.filmy.php on line 13 chodzi o linię gdzie jest while... Czytałem, że chodzi o przydział pamięci, ale za bardzo nie rozumiem skąd błąd bo baza z której będą pobierane dane ma tylko 14 rekordów składających się z dwóch pól. Normalnie mi pobiera dane ale jak próbuję z wykorzystaniem smarty i pdo to mi coś nie wychodzi, a dopiero się uczę tych technik. Źle pobierasz rekordy. Pętla while nie przechowuje wyników wykonania funkcji. Jest ona wywoływana przy każdym powtórzeniu. Użyj pętli foreach. $res = $db->query(...); foreach($res as $row) { ... }Jeśli chcesz zmniejszyć użycie pamięci, usuń Smarty. Użytkownik Ferrari edytował ten post 06 grudzień 2008, 20:04 zmieniłem na: $result = $pdo->query('SELECT * FROM kategoria'); while($row=$result->fetch()) { $film['kategoria'] = $row['kategoria']; $film['id'] = $row['id']; $film_tablica[] = $film; } $pdo = null; $smarty -> assign('film', $film_tablica); return $smarty -> fetch('plugins_templates/filmy.tpl'); błąd już się nie pojawia ale nie wyświetla mi wszystkich rekordów {foreach item="film" from="$film"} {$film.id}.($film.kategoria)<br> {/foreach} ID wyświetla poprawnie ale zamiast wyświetlić nazwę kategorii to mi wyświetla {$film.kategoria} temat do zamknięcia, problem rozwiązany Użytkownik WojtekP edytował ten post 06 grudzień 2008, 21:09 |
|||
Sitedesign by AltusUmbrae. |