Autor wpisu: piotrooo89, dodany: 30.11.2009 15:31, tagi: php
Dość często spotykamy się z problemem przesłania tablic albo to za pomocą formularza albo za pomocą pojedynczego linku. Jako że tablicę są bardzo fajnym narzędziem w jezykach programowania warto było by wiedzieć jak można je swobodnie przesyłać w PHP. Zapraszam do zapoznania się z niniejszym artykułem.
1. Wysyłanie tablic za pomocą formularzy
Na pierwszy ogień weźmy formularze. Aby swobodnie móc operować na tablicach potrzebne nam będą pewne funkcje tj.: serialize, unserialize, urldecode i urlencode. Zobaczmy jak działają owe funkcje:
A tak wygląda kod do przesyłania naszych tablic:
- $tab[1]='jeden';
- $tab[2]='dwa';
- $tab[3]='trzy';
- $tab_2_send = serialize($tab);
- $tab_2_send = urlencode($tab_2_send);
- ?>
- <form method="get" action="">
- <input type="hidden" name="tablica" value="<?=$tab_2_send?>" />
- <input type="submit" value="ok" />
- </form>
- <?
- if ($_GET['tablica'])
- {
- $show_tab = urldecode($_GET['tablica']);
- $show_tab = unserialize($show_tab);
- print_r($show_tab);
- }
- ?>
Wyjaśnienie:
- $tab – jest naszą tablicą którą chcemy wysłać,
- $tab_2_send – jest to tablica na którą zadziałaliśmy funkcją serializującą i zakodowaliśmy ja dla paska adresu,
- $show_tab – dekodujemy ją i “rozserializujemy” aby nie było różnych dziwnych znaczków,
- print_r($show_tab) – pokazuje nam tablice którą przesłaliśmy.
2. Wysłanie tablic za pomocą linków
Kolejną dość fajna funkcją związaną z PHP jest możliwość przesłania tablicy za pomocą klikalnego linka. Sprawa nie wygląda aż tak skomplikowanie jak się może wdawać. Dlaczego? Ponieważ paser PHP ma w sobie wbudowaną funkcję http_build_query, która dokonuje wszystko za nas, bez jakichkolwiek problemów.
Składnia tej funkcji jest możliwie najprostsza:
- string http_build_query ( array $formdata [, string $numeric_prefix [, string $arg_separator ]] )
jako pierwszy argument podajemy tablice na której chcemy działać, kolejny jest prefiks jaki ma pojawić się przed każdą daną (prefiks ten jest definiowany przez użytkownika) i trzeci parametr to separator jakim mają być oddzielone poszczególne wartości z tablicy.
Nasz kod wygląda tak:
- <?
- $tab[1]='jeden';
- $tab[2]='dwa';
- $tab[3]='trzy';
- $t = http_build_query($tab);
- echo '<a href="?'.$t.'">Wyślij tablice</a>';
- ?>
w tym wypadku link wygląda tak: ?1=jeden&2=dwa&3=trzy
Możemy np. dodać sobie nasz prefiks i wtedy wywołanie funkcji przyjmuje postać:
- $t = http_build_query($tab, 'moj_prefiks_');
a link: ?moj_prefiks_1=jeden&moj_prefiks_2=dwa&moj_prefiks_3=trzy,
Ostatnią własnością jaką dysponuje ta funkcja jest dodawanie własnego separatora:
- $t = http_build_query($tab, 'moj_prefiks_', '|');
i teraz otrzymujemy link z zadeklarowanym przez nas separatorem: ?moj_prefiks_1=jeden|moj_prefiks_2=dwa|moj_prefiks_3=trzy.
To tak pokrótce jeśli chodzi o wysyłanie danych tablicowych za pomocą PHP.
Kanał ATOM
