Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP][Smarty] - Wykonywanie zapytań
elldiablo
post 22.09.2010, 06:44:21
Post #1





Grupa: Zarejestrowani
Postów: 79
Pomógł: 1
Dołączył: 30.05.2009

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


Witam,

Wykonuje zapytanie do bazy danych, gdzie są 2 rekordy.
  1. $query = 'SELECT * FROM mb_users';
  2. if(PEAR::isError($result = & $dbh->query($query)))
  3. throw new Exception ($result->getMessage());
  4. else {
  5. while($persons = $result->fetchRow(DB_FETCHMODE_OBJECT)) {
  6. if(PEAR::isError($persons))
  7. throw new Exception($persons->getMessage());
  8. $_Id = $persons->USR_id;
  9. $_Name = $persons->USR_name;
  10. $_Surname = $persons->USR_surname;

następnie chciałbym zmienne przesłać do szablonu smarty
Zrobiłem coś takiego
  1. $smarty->assign('persons', $persons);
  2. }
  3. }
  4. }
  5. } catch (Exception $error) {
  6. exit ($error);
  7. }
  8. $content = 'index.tpl';
  9. $smarty->display($content);


W szablonie smarty zrobiłem pętle.
  1. <table border="1" width="100%">
  2. {foreach item=person from=$persons}
  3. <tr>
  4. <td>{$persons->USR_id}</td>
  5. <td>{$persons->USR_name}</td>
  6. <td>{$persons->USR_surname}</td>
  7. </tr>
  8. {/foreach}
  9. </table>


Wynik jest taki, że ostatni rekord jest wyświetlany 5 razy.

Co robię źle, i co należy zrobić żeby skrypt pobrał i wyświetlił mi wszystkie rekordy tylko raz?

Pozdrawiam,
Jacek.
Go to the top of the page
+Quote Post
nospor
post 22.09.2010, 07:30:55
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




while($persons = $result->fetchRow(DB_FETCHMODE_OBJECT)) {
Przeciez tutaj za kazdym razem do $persons wkladasz aktualnie przetwarzany rekord i nadpisujesz poprzedni.
Musisz zrobic z tego tablice i do tablicy zapisywac


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
elldiablo
post 23.09.2010, 11:35:53
Post #3





Grupa: Zarejestrowani
Postów: 79
Pomógł: 1
Dołączył: 30.05.2009

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


Witam ponownie

  1. while($users = $result->fetchRow(DB_FETCHMODE_ASSOC)) {
  2. if(PEAR::isError($users))
  3. throw new Exception($users->getMessage());
  4.  
  5. $user['userid'] = $users['USR_id'];
  6. $user['username'] = $users['USR_name'];
  7. $user['usersurname'] = $users['USR_surname'];
  8. $wynik[] = $user;
  9. }
  10.  
  11. echo '<pre>';
  12. var_dump($wynik);
  13. echo '</pre>';
  14.  
  15. $smarty->assign('wynik', $wynik);


Wynik z tablicy jest następujący:
  1.  
  2. array(3) {
  3. [0]=>
  4. array(3) {
  5. ["userid"]=>
  6. string(1) "1"
  7. ["username"]=>
  8. string(5) "Jacek"
  9. ["usersurname"]=>
  10. string(10) "Flantowicz"
  11. }
  12. [1]=>
  13. array(3) {
  14. ["userid"]=>
  15. string(1) "2"
  16. ["username"]=>
  17. string(8) "Grzegorz"
  18. ["usersurname"]=>
  19. string(7) "Szustak"
  20. }
  21. [2]=>
  22. array(3) {
  23. ["userid"]=>
  24. string(1) "4"
  25. ["username"]=>
  26. string(7) "Marysia"
  27. ["usersurname"]=>
  28. string(8) "Kowalska"
  29. }
  30. }


Szablon smarty wygląda następująco:
  1. {foreach from=$wynik item=res}
  2. <p>{$wynik.username}</p>
  3. <p>{$wynik.usersurname}</p>
  4. {/foreach}


I kod nic mi nie zwraca. Co robię źle?
Proszę o pomoc.

Cześć,

Znalazłem błąd w kodzie smarty:
jest tak:

  1. {foreach item=product from=$products}
  2. <tr>
  3. <td>{$products.Id}</td>
  4. <td><a href="shop.php?id={$products.Id}">{$products.Name}</a></td>
  5. <td>{$products.Price}</td>
  6. </tr>
  7. {/foreach}


a powinno być tak:
$zmienna -> powinna być z "item" a nie z "from"
  1. {foreach item=product from=$products}
  2. <tr>
  3. <td>{$product.Id}</td>
  4. <td><a href="shop.php?id={$product.Id}">{$product.Name}</a></td>
  5. <td>{$product.Price}</td>
  6. </tr>
  7. {/foreach}


Ten post edytował elldiablo 23.09.2010, 07:43:43
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 20.07.2025 - 07:17