Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> jak stworzyc taka tablice wielowymiarowa....
menic
post 6.12.2003, 00:23:09
Post #1





Grupa: Zarejestrowani
Postów: 493
Pomógł: 0
Dołączył: 14.06.2003
Skąd: Tomaszów Lubelski/Rzeszów

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


Chce pobrac dane z bazy i zapisac do postaci tablicy wielowymiarowej. I dąze do otrzymania takie struktury tablicy
Kod
Array

(

    [1] => Array

        (

            [id] => 1

            [idm] => 1

            [name] => telefony stacjonarne

        )

    [1] => Array

        (

            [id] => 2

            [idm] => 1

            [name] => telefony komórkowe

        )

    [1] => Array

        (

            [id] => 3

            [idm] => 1

            [name] => telefony jakies inne

        )

    [2] => Array

        (

            [id] => 4

            [idm] => 2

            [name] => telewizory

        )

    [2] => Array

        (

            [id] => 5

            [idm] => 2

            [name] => radia

        )

)

Jak zauwazyliscie pierwszy index ma byc równy tyle ile [idm].
Upss... Troche namotalem rolleyes.gif
Ale potrzebne mi to jest pózniej do wyświetlania danych w petli gdzie jest zmienny pierwszy index. Mam nadzieje ze zrozumieliscie o co mi chodzi biggrin.gif


--------------------
Jak masz cos zrobic dobrze...
...To musisz zrobić to sam.

Uchwycić moment...
Go to the top of the page
+Quote Post
KaMeLeOn
post 6.12.2003, 01:21:13
Post #2





Grupa: Zarejestrowani
Postów: 680
Pomógł: 0
Dołączył: 1.10.2002
Skąd: Wrocław

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


Otrzymanie takiej stryktury jest fizycznie niemożliwe...
Nie mogą istnieć w jednej tablicy 3 takie same klucze. Proponuję takie rozwiązanie:
Kod
Array

(

    [1] => Array

        (

            [0]  => Array

                (

                    [id] => 1

                    [idm] => 1

                    [name] => telefony stacjonarne

                )

            [1] => Array

                (

                    [id] => 2

                    [idm] => 1

                    [name] => telefony komórkowe

                )

            [2] => Array

                (

                    [id] => 3

                    [idm] => 1

                    [name] => telefony jakies inne

                )

        )

    [2] => Array

        (

            [0] => Array

                (

                    [id] => 4

                    [idm] => 2

                    [name] => telewizory

                )

            [1] => Array

                (

                    [id] => 5

                    [idm] => 2

                    [name] => radia

                )

           // itd...

        )

)

Strukturę tą można przedstawić w prosty sposób:
[php:1:20746b898e]<?php
$tab[1][0]['id'] = 1;
$tab[1][0]['idm'] = 1;
$tab[1][0]['name'] = 'telefony stacjonarne';
$tab[1][1]['id'] = 2;
$tab[1][1]['idm'] = 1;
$tab[1][1]['name'] = 'telefony komorkowe';
$tab[1][2]['id'] = 3;
$tab[1][2]['idm'] = 1;
$tab[1][2]['name'] = 'telefony jakies tam';
// itd...
?>[/php:1:20746b898e]


--------------------
"Czerp z innych, ale nie kopiuj ich. Bądź sobą." Michel Quoist
Go to the top of the page
+Quote Post
menic
post 6.12.2003, 01:46:57
Post #3





Grupa: Zarejestrowani
Postów: 493
Pomógł: 0
Dołączył: 14.06.2003
Skąd: Tomaszów Lubelski/Rzeszów

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


Wiem że stworzenie takiej tablicy jaka podalem jest nie realne, ale chodzilo mi o przedstawienie problemu. Albo moze ja źle mysql i da sie to jakos inaczej zrobic winksmiley.jpg Przedstawie teraz do czego mi to jest potrzebne.
Zazwyczaj gdy musialem wyswietlic w petli np. strukture kategorii i for (tak jak na phpbb) to robilem tak[php:1:10d538156e]<?php
$query = mysql_query( "SELECT * FROM kategorie" );
while( $cat = mysql_fetch_assoc( $query ) )
{
echo '<b>'.$cat['name'].'</b><br />';

$query = mysql_query( "SELECT * FROM fora WHERE cid = '".$cat['id']."'" );
while( $for = mysql_fetch_assoc( $query ) )
{
echo $for['title'];
}
}
?>[/php:1:10d538156e]
Oczywiscie to uproszczony kod. Ale takie rozwiazanie jest mocno nieefektywne gdyz musi pobierac duzo zapytan do bazy danych. Pomyslalem wiec ze mozna wszytskie fora wrzucic do jednej tablicy wielowymiarowej. [php:1:10d538156e]<?php
$query = mysql_query( "SELECT * FROM fora" );
while( $q = mysql_fetch_assoc( $query ) )
{
$for[] = $q;
//Oczywiscie inaczej powinno wygladac stworzenie tej tablicy, lecz nie mam koncepcji sad.gif
}

$query = mysql_query( "SELECT * FROM kategorie" );
while( $cat = mysql_fetch_assoc( $query ) )
{
//Teraz tu bedziemy wyswietlali jakos fora tylko ze wlasnie nie wiem jak sad.gif
//Oczywiscie powinna tu byc petla wyswietlajaca fora nalezace do danej kategorii
echo $for[$cat['id']]['title'];
}
?>[/php:1:10d538156e]Tak to schematycznie wyglada. Teraz powinniscie zalapac i moze podac rozwiazanie smile.gif


--------------------
Jak masz cos zrobic dobrze...
...To musisz zrobić to sam.

Uchwycić moment...
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: 4.07.2025 - 20:11