Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: jak stworzyc taka tablice wielowymiarowa....
Forum PHP.pl > Forum > PHP
menic
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
KaMeLeOn
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]
menic
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
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.