Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Generator Listy z MySQL
Gabrielx
post 26.12.2012, 14:17:28
Post #1





Grupa: Zarejestrowani
Postów: 157
Pomógł: 2
Dołączył: 24.03.2009

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


Witam.

Załóżmy mam taką tabelę w MySQL:
Kod
1---Jeden----0
2---Dwa------0
3---Trzy------2
4---Cztery---2
5---Pięć------4
6---Sześć----0


Czyli po wyświetleniu powinno wyglądać tak:

Kod
|Jeden
|Dwa
||--Trzy
||--Cztery
|||------Pięć
|Sześć

Jak taki efekt osiągnąć generując z DB, za pomocą PHP. Czytałem trochę o RecursiveIteratorIterator oraz RecursiveIterator, lecz nie wiem za bardzo jak zastosować. Dodatkowo każdy element miałby mieć dodaną klasę css (w zależności czy da się rozwinąć, czy jest rozwinięty)

Ten post edytował Gabrielx 26.12.2012, 14:29:23
Go to the top of the page
+Quote Post
radziopoke
post 26.12.2012, 15:59:58
Post #2





Grupa: Zarejestrowani
Postów: 125
Pomógł: 14
Dołączył: 2.06.2010

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


tutaj masz mniej więcej coś takiego w php. Wystarczy, że odpowiednio skomponujesz z danych mysql tablicę, dostosujesz trochę skrypt i powinno współgrać smile.gif
  1. <html>
  2. <body>
  3. <?php
  4. $tab[1]['name']='jeden';
  5. $tab[1]['from']=0;
  6. $tab[2]['name']='dwa';
  7. $tab[2]['from']=0;
  8. $tab[3]['name']='trzy';
  9. $tab[3]['from']=2;
  10. $tab[4]['name']='cztery';
  11. $tab[4]['from']=2;
  12. $tab[5]['name']='piec';
  13. $tab[5]['from']=4;
  14. $tab[6]['name']='szesc';
  15. $tab[6]['from']=0;
  16. $ile=6;
  17. $text = '';
  18. for($i=1; $i<=$ile; $i++)
  19. {
  20. $from=$tab[$i]['from'];
  21. while($from!=0)
  22. {
  23. $text .= '-';
  24. $from = $tab[$from]['from'];
  25. }
  26. $text .= $tab[$i]['name'].'<br>';
  27. }
  28.  
  29. echo $text;
  30. ?>
  31. </body>
  32. </html>


efekt:
Kod
jeden
dwa
-trzy
-cztery
--piec
szesc
Go to the top of the page
+Quote Post
Gabrielx
post 26.12.2012, 16:15:06
Post #3





Grupa: Zarejestrowani
Postów: 157
Pomógł: 2
Dołączył: 24.03.2009

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


Chodziło o listę tak jak w temacie smile.gif (ul, li,ol)
Tamto tylko było przedstawieniem graficznym mojego zamysłu smile.gif

Ps. sory że nie wyraziłem się jasno

Ten post edytował Gabrielx 26.12.2012, 16:18:36
Go to the top of the page
+Quote Post
memory
post 26.12.2012, 23:44:00
Post #4





Grupa: Zarejestrowani
Postów: 616
Pomógł: 84
Dołączył: 29.11.2006
Skąd: bełchatów

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


  1. private function children($rows, $id) {
  2. foreach ($rows as $row) {
  3. if ($row->parent_id == $id)
  4. return true;
  5. }
  6. return false;
  7. }
  8.  
  9. public function mapTree($rows, $parent = 0, $class = "li-menu") {
  10. $result = "<ul>";
  11. foreach ($rows as $row) {
  12. if ($row->parent_id == $parent) {
  13. $result.= "<li><a href='$row->url' class='$class' >$row->name</a>";
  14. if (children($rows, $row->id))
  15. $result.= mapTree($rows, $row->id);
  16. $result.= "</li>";
  17. }
  18. }
  19. $result.= "</ul>";
  20.  
  21. return $result;
  22. }


przykladowe dane
  1. id , name, parent_id +url
  2. 1---Jeden----0
  3. 2---Dwa------0
  4. 3---Trzy------2
  5. 4---Cztery---2
  6. 5---Pięć------4
  7. 6---Sześć----0
Go to the top of the page
+Quote Post
Gabrielx
post 27.12.2012, 15:11:15
Post #5





Grupa: Zarejestrowani
Postów: 157
Pomógł: 2
Dołączył: 24.03.2009

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


Wielkie dzięki, o to mi chodziło smile.gif
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: 14.06.2025 - 00:09