Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [smarty] wyswietlanie miast wg liter
marianekxx
post
Post #1





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 16.12.2010

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


Witam wszystkich forumowiczow.
Jest to moj pierwszy post.

Mam problem z wyswietleniem danych w taki sposob jak na obrazku pod adresem: http://www.fotosik.pl/pokaz_obrazek/05e3d6851a9fac9b.html
Czyli wyswietlamy litere, a nastepnie w 3 kolumnach wyswietlamy nazwy maist dla dane litery.
Tylko tutaj wazna jest tez kolejnosc kolumn czyli:
1 2 3
4 5 6

a nie
1 3 5
2 4 6

O ile zrobienie tego bez szablonow smarty nei ejst zbyt trudne to ze smarty nie wiem jak to zrobic.

Mianowicie mam 2 tablice:
1. zawiera litery od a-z
  1. <?
  2. $tab_litery=array ('A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'R', 'S', 'Ś', 'T', 'U', 'W', 'Z', 'Ż');
  3. ?>

2. pobieram z bazy liste miast
  1. <?php
  2. $miasta= $db->get_results("SELECT * FROM miasta ORDER by miasta ", ARRAY_A);
  3. foreach($miasta as $m) {
  4.  
  5. .............
  6. }
  7. .................
  8. ?>

I teraz tak nie wiem czy do tablicy z nazwami miast dodac pole z litera miasta - czy zrobic to inaczej ?
Jak najpierw przygotowac dane (tablice) a pozniej wyswietlic je z pomoca smarty. ?

Poradzilem juz sobie z wyswietleniem danych w 3 kolumnach.
  1. <table>
  2. {section name=i loop=$miasta}
  3. {if $smarty.section.i.index is div by 3}<tr>{/if}
  4. <td>
  5. <a href="/miasto.php?id={$miasta[i].id}">{$miasta[i].nazwa}</a>
  6. </td>
  7. {if ($smarty.section.i.index+1) is div by 3}</tr>{/if}
  8. {/section}
  9. </table>
  10.  


Z gory dzieki za pomoc.

Ten post edytował marianekxx 16.12.2010, 14:35:23
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
nospor
post
Post #2





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




  1. //pobranie wszystkich danych
  2. $sql = 'select * from city '.
  3. 'order by NAME asc'; //sortujemy po nazwie
  4. $res = mysql_query($sql) or die(mysql_error());
  5.  
  6. //najpierw pozyskamy niezbędne dane
  7. $cities = array();
  8. while ($row = mysql_fetch_array($res)){
  9. $name = $row['NAME'];
  10.  
  11. //jeśli będziemy w bazie mieli miasta z nazwami zaczynającymi
  12. //się od polskich liter należy użyć modułu mb_string
  13. $firstLetter = strtoupper(substr($name,0,1));
  14.  
  15. //jeśli nie było jeszcze danej litery, to ją tworzymy
  16. if (!isset($cities[$firstLetter]))
  17. $cities[$firstLetter] = array();
  18.  
  19. //dodajemy kolejne miasta do danej litery
  20. $cities[$firstLetter][] = $row;
  21. }
  22. print_r($cities);

O to chodziło?

Co do smarty to będą dwa FOREACH. Jeden przeleci po literach a drugi po miastach w literach. Identyczna zasada jak w php (w kodzie co jest u mnie w arcie)
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 27.12.2025 - 21:29