Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] Tablice w adresie URL.
stroju
post
Post #1





Grupa: Zarejestrowani
Postów: 179
Pomógł: 2
Dołączył: 17.11.2005

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


Hej, chciałbym zapytać czy ktoś kojarzy może funkcję która zmienne w adresie przekształca na tablice, np
Kod
www.google.pl/index.php?a=1&a=4&b=2


Przerobiło na coś takiego:
$a[0] = 1
$a[1] = 4
$b = 2

Jeśli to w ogóle możliwe.
Go to the top of the page
+Quote Post
ctom
post
Post #2





Grupa: Zarejestrowani
Postów: 321
Pomógł: 55
Dołączył: 19.04.2009

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


pytanie jest albo tak proste albo podchwytliwe smile.gif

chcesz z tego stringa wyciągnąć "zmienne" czy chcesz z requesta pobrać zmienne $_GET (!) questionmark.gif


--------------------
Polecam MyDevil hosting idealny dla deweloperów
Go to the top of the page
+Quote Post
com
post
Post #3





Grupa: Zarejestrowani
Postów: 3 034
Pomógł: 366
Dołączył: 24.05.2012

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


http://blog.kowalczyk.cc/2010/10/15/php-pr...-w-zadaniu-get/
Go to the top of the page
+Quote Post
stroju
post
Post #4





Grupa: Zarejestrowani
Postów: 179
Pomógł: 2
Dołączył: 17.11.2005

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


Raczej ta druga opcja, tablicę get znam, ale to nie o to chodziło, natomiast artykuł od com'a jest pomocny, tylko że chciałbym się pozbyć w tym wszystkim nawiasów [], nie wiem czy to jest możliwe, ale choćby na filmweb.pl przy wyszukiwaniu tablice są teoretycznie bez tych nawiasów..
Go to the top of the page
+Quote Post
ctom
post
Post #5





Grupa: Zarejestrowani
Postów: 321
Pomógł: 55
Dołączył: 19.04.2009

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


a tek z ciekawości możesz z tego filmwebu podać przykład jak przekazują w URL zmienna jako tablicę bez [] ?


--------------------
Polecam MyDevil hosting idealny dla deweloperów
Go to the top of the page
+Quote Post
stroju
post
Post #6





Grupa: Zarejestrowani
Postów: 179
Pomógł: 2
Dołączył: 17.11.2005

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


Kod
http://www.filmweb.pl/search/film?q=&genreIds=28&genreIds=6&genreIds=45&startYear=&endYear=&startRate=&endRate=&startCount=&endCount=&sort=TEXT_SCORE&sortAscending=false
Właśnie tutaj dobrze to widać, w przypadku zmiennej genreIds, zastanawiałem się jak to osiągnąć, mod_rewrite ?
Go to the top of the page
+Quote Post
ctom
post
Post #7





Grupa: Zarejestrowani
Postów: 321
Pomógł: 55
Dołączył: 19.04.2009

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


pewnie parsują jakoś ten URL , a nie pobierają przez $_GET

z tym sobie pokombinuj :
Kod
var_dump( explode('&',$_SERVER["REQUEST_URI"]) );


--------------------
Polecam MyDevil hosting idealny dla deweloperów
Go to the top of the page
+Quote Post
stroju
post
Post #8





Grupa: Zarejestrowani
Postów: 179
Pomógł: 2
Dołączył: 17.11.2005

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


no tak, po prostu jestem ciekawy czy php ma coś co pozwala na takie rozwiązanie smile.gif
Go to the top of the page
+Quote Post
Crozin
post
Post #9





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


Będziesz musiał ręcznie przetworzyć tę część URL-a. W świecie PHP przyjęte jest, że argumenty tablicowe w URL-ach mają format tablica[klucz], stąd też i wszystkie wbudowane funkcje działają w ten sposób.

  1. function parseQueryString($qs) {
  2. $return = array();
  3.  
  4. if (strpos($qs, '&') === false) {
  5. $qs = array($qs);
  6. } else {
  7. $qs = explode($qs, '&');
  8. }
  9.  
  10. foreach ($qs as $pair) {
  11. if (strpos($pair, '=') === false) {
  12. $return[$pair] = true;
  13.  
  14. continue;
  15. }
  16.  
  17. list($key, $value) = explode($pair, '=', 2);
  18.  
  19. if (!isset($return[$key])) {
  20. $return[$key] = $value;
  21. } else if (is_array($return[$key])) {
  22. $return[$key][] = $value;
  23. } else {
  24. $return[$key] = array($return[$key]);
  25. $return[$key][] = $value;
  26. }
  27. }
  28.  
  29. return $return;
  30. }
Przy czym nie polecam korzystania z takiego kodu. Te nawiasy w absolutnie niczym nie przeszkadzają, a zaoszczędzą Ci masy problemów. W dodatku takie podejście uniemożliwia Ci skorzystanie z wielowymiarowych tablic oraz wymuszać będzie każdorazowe sprawdzanie czy dany parametr z URL-a jest tablicą czy nie.

Ten post edytował Crozin 4.01.2014, 16:27:32
Go to the top of the page
+Quote Post
stroju
post
Post #10





Grupa: Zarejestrowani
Postów: 179
Pomógł: 2
Dołączył: 17.11.2005

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


no tak, dlatego jeśli już bym cokolwiek wykorzystywał to raczej oparte na prostocie, nawiasy nie są złe, kwestia dobrego kodowania linków, nie mniej jest to jakaś ciekawostka dla rozwiązania filmwebu skoro zdecydowali się na takie rozwiązanie. A z doświadczenia wiem że tam gdzie da się pisać bez pętli to należy tak robić, bo pętle to najgorsze co może być przy większej ilości przejść.
Go to the top of the page
+Quote Post
nospor
post
Post #11





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
A z doświadczenia wiem że tam gdzie da się pisać bez pętli to należy tak robić, bo pętle to najgorsze co może być przy większej ilości przejść.
Chyba lekko przesadzasz albo uogolniasz cos co kiedys zle zrobiles....

A ty myslisz ze filmweb po sparsowaniu tego URLa to nie robi z tego tablicy? Zapewne robi, no chyba ze od razu podczas parsowania buduje niezbedne zapytanie do bazy.
Tak czy siak nie wplywa to na polepszenie predkosci nieuzywanie tutaj [].


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

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 Aktualny czas: 22.08.2025 - 02:48