Wyświetlenie wielowymiarowej tablicy w odpowiednim formacie


(pain3hp) #1
(array) Array

(

      [Internet] => Array

      (

            [1] => tworzenie stron

           [2] => blog

           [3] => serwis webdesign

           [4] => przeglądarka

          [5] => gra internetowa

          [6] => mieszanie kaszy

      )

      [Sport] => Array

      (

          [1] => strona hostingowa

      )

)

To jest tablica którą należy wyświetlić w takiej formie kolumn

INTERNET

  • tworzenie stron

  • blog

  • serwis we

-.....

SPORT

  • strona hostingowa

i tak dalej... i tak dalej... Lecz jest jedno ale: należy je wyświetlać w trzech kolumnach a nie w jednej.... proszę także zwrócić uwagę że tablica zaczyna sie od indexu 1 ( 0 => NULL)


(Xeon Bloomfield) #2

Index'y zawsze zaczynamy od 0. Taki standard.

Narysuj w PAINT (lub wyjaśnij) co ma być wyświetlane w tych trzech kolumnach.


(Sawyer47) #3

Podstawowe pytanie to: gdzie chcesz te kolumny wyświetlać? Na konsolę, do pliku, czy gdzie?


(pain3hp) #4

indexy w moim przypadku zaczynamy od 1 bo indexy to klucze główny z bazy danych....

dlatego ci napisałem że jako zero wstawić NULL

wyswietlenie bedzie w htmlu

schemat kolumn jest taki

159

2610

3711

4812

-- Dodane 25.12.2010 (So) 15:30 --

a język najlepiej PHP tzn ja będę w tym pisał ale jak ktoś pisze w innym to proszę o przykład bez użycia wbudowanych funkcji i bibliotek


(Sawyer47) #5

Kolumny możesz uzyskać chociażby w CSS http://www.w3.org/TR/css3-multicol/ - tyle że webmasterką się nie param i nie wiem czy to jest zaimplementowane we wszystkich przeglądarkach.

Nie dość dokładnie opisałeś o co Ci chodzi: czy klucze w tablicy to "nagłówki" kolumn (czyli są 3 klucze) czy niekoniecznie. No i rozwiązanie dość mocno zależy od tego jak jest napisana strona która ma to wyświetlać.


(Spam) #6

http://codepad.org/PVTiQRcI


(pain3hp) #7

Wasacz nie wiem jak mam ci dziękować !!

Jakbyś mógł omówić co się tutaj dzieje a dokładnie te znaki \t \n bede jeszcze bardziej wdzięczny :slight_smile:

-- Dodane 25.12.2010 (So) 16:21 --

troche się pośpieszyłem, tyle to ja też zrobiłem, ja to musze mieć w trzech kolumnach a twój kod tego nie robi :confused:


(Jim1961) #8

http://codepad.org/RAW5iJBw

może być ??


(Marcin E Pc) #9

Nie wiem o co dokładnie koledze chodzi (3 kolumnach. czyli każde obok siebie ,bo to będą 3 kolumny). czy to jest coś w stylu menu?

Jeżeli menu to pomysł Jim1961 nie jest zbyt dobry, ponieważ tabele służą do wyświetlania danych tabelarycznych. Trzeba byłoby wystylizować listy, na których oparł się Wasacz.

Pozdrawiam


(Drobok) #10

Nie kapuje twojego schematu za pomocą cyferek ;]

Proponowałbym ci zrobić sobie 3 divy i to ich używać jako kolumn.


(pain3hp) #11

czego nie rozumiecie?

MAM np 10 indeksów i je trzeba wyświetlic w trzech kolumnach

159

2610

37

48

trzy kolumny licząc w dół


([alex]) #12

W przykładzie, który podałeś na początku nie masz 10 indeksów, masz 7 indeksów przy czym podzielonych na kategorie.

Podaj może jakiś większy przykład wraz z jego podziałem na kilka kolumn.


(pain3hp) #13

w przykładzie pierwszym są 2 indeksy, układać ma te pierwsze nazwy a pod nimi mają być podkategorie, liczba indeksów oczywiście jest przykładowa bo w rzeczywistości będzie to liczba "X"

Nie wiem dlaczego nie rozumiecie układu mamy X liczb i dzielimy je na trzy, kolumny numerujemy w dół więc jak mamy 9

1 4 7

2 5 8

3 6 9

dla 15 będzie

01 06 11

02 07 12

03 08 13

04 09 14

05 10 15

liczymy w dół a żeby w ostateczności powstały 3 kolumny, rozpiszę takze przyklad dla 10

01 05 09

02 06 10

03 07

04 08

Jak widać są dwa miejsca puste, można by je zniwelować biorąc z kolumny środkowej jedno miejsce i dać je do trzeciej wtedy pierwsza kolumna ma 4 elementy a pozostałe dwie kolumny mają 3

Ja już napisałem sobie funkcje w PHP która zrobi taki układ ale nie potrafię tego połączyć z HTMLem aby tak je generował, a kategorie i podkategorie mam w osobnych bazach, ogólnie już mi sie wszystko miesza a ślęczałem nad tym 3 dni. Największym problemem dla mnie było połączenie foreacha który rozbija tę tablicę i jednocześnie połączyć to z forami w tej funkcji, no i jeszcze trzeba dołożyć HTML

function wypisz($m)

{

   $do = ceil($m/3);

   for($x=0; $x<$do; $x++)

   {

      for($i=$x; $i<$m; $i+=$do)

      {

         echo $i;   

      }

      echo '
';

   }

}

dla niewtajemniczonych ceil() dzieli liczbę i zaokrągla do wyższej jedności, gdy wyjdzie 5.1 to zaokrągla do 6

-- Dodane 29.12.2010 (Śr) 16:06 --

A mówiąc jeszcze prościej chcę zrobić DRZEWO KATEGORII , takie coś jak np na allegro ale tam są dwie kolumny......


(Drobok) #14

Przed forami dodaj sobie diva i zakończ go na końcu funkcji. Po każdym przejściu na początku dołóż sobie diva i na końcu go zakończ. Oczywiście div z float:left ;]

function wypisz($m)';   $do = ceil($m/3);   for($x=0; $x$do; $x++)   {     echo '';      for($i=$x; $i$m; $i+=$do)      {         echo $i;   }    echo '';   }''; [/code]

(pain3hp) #15

rozumiesz że tyle to i sam zrobię? Problem jest w tym że nie mogę zrobić całości, wstaw w to jeszcze ten foreach to ci szczerze podziękuję


([alex]) #16

pain3hp , w podanym przez ciebie przykładzie występują liczby:

1,2,3,4,5,6,1

Liczba 1 występuje dwa razy: raz w $tb['Internet'] oraz raz w $tb['Sport']

Czyli chcesz mieć układ:

1, 4, 1

2, 5

3, 6

Dobrze rozumiem?

function wypisz($tb)

(pain3hp) #17

tablica jest dwuwymiarowa ja chcę "sortować"(układać) wg tego sposobu jedynie jej pierwszy wymiar czyli kategorie


([alex]) #18

Czyli dokładnie to samo tylko wywal wewnętrzny foreach, przy liczeniu ilości oraz przy wyświetleniu.

Skoro sprawdzasz tylko jeden wymiar to zliczyć ilość prościej $Count=count($tb);