Permalänk

Query strings

Hej.
Blir inte riktigt klock på dessa Query strings. Hittar ingen bra förklaring till hur de riktigt fungerar. Vilka begränsningar finns? Kan jag skicka www.test.com?a=1?a=2 och läsa ut som en array?

Är det någon som vet var jag kan hitta någon slags guide eller kanske till och med orkar förklara? Specifikationen är lite väl häftig.

Tack så länge!

Visa signatur

6600K@4,5GHz 1,25V | EVGA 980Ti | Samsung 950 Pro m.2

Permalänk
Hedersmedlem

Vad är det du vill göra? Skicka parametrar via ett sådant anrop som du sedan kan använda i ett PHP-script?

Visa signatur

Nu med kortare användarnamn, men fortfarande bedövande långa inlägg.

Permalänk
Inaktiv

Vilket språk är det du jobbar i?

Query strings ser ut som följande: www.test.com?a=1&b=2&c=3

Den första har alltså ett "?", medan resterande har "&".

I PHP så kan du t.ex. läsa ut värdena som en array med hjälp av "$_GET".

Alltså, om du vill få ut värdet för "a" så skriver du "echo $_GET['a'];".

Permalänk
Skrivet av phz:

Vad är det du vill göra? Skicka parametrar via ett sådant anrop som du sedan kan använda i ett PHP-script?

Skrivet av anon227748:

Vilket språk är det du jobbar i?

Query strings ser ut som följande: www.test.com?a=1&b=2&c=3

Den första har alltså ett "?", medan resterande har "&".

I PHP så kan du t.ex. läsa ut värdena som en array med hjälp av "$_GET".

Alltså, om du vill få ut värdet för "a" så skriver du "echo $_GET['a'];".

Jag använder PHP. Vill ha data i stil med
Pizza: 1,4,9,25
Dryck: 9,5,1,4

Hur skickar jag sådan data?

Visa signatur

6600K@4,5GHz 1,25V | EVGA 980Ti | Samsung 950 Pro m.2

Permalänk
Medlem
Skrivet av tomten_alle:

Jag använder PHP. Vill ha data i stil med
Pizza: 1,4,9,25
Dryck: 9,5,1,4

Hur skickar jag sådan data?

Det gör du genom att skicka parametrarna till scriptet

T.ex
test.php?pizza=1,4,9,25&dryck=9,5,1,4

För att hämta den datan använder du GET metoden som automatiskt letar efter data du specifierat efter ?

T.ex

if(isset($_GET['pizza'])){ $pizza = $_GET['pizza']; $dryck = $_GET['dryck']; print_r(split(",", $pizza)); print_r(split(",", $dryck)); }

Du använder split för att seperera siffrorna från , och får på så sätt en array med varje nummer som du enkelt kommer åt. Du kan använda explode, preg_split eller något annat du föredrar också.

Hoppas det hjälpte.

EDIT: http://www.ysquared.org/php/basics/use-the-query-string/ Dom förklarar lite mer specifikt hur det fungerar.

Visa signatur

ᕦ(ツ)ᕤ

Permalänk
Hedersmedlem
Skrivet av Fronix:

Det gör du genom att skicka parametrarna till scriptet

T.ex
test.php?pizza=1,4,9,25&dryck=9,5,1,4

För att hämta den datan använder du GET metoden som automatiskt letar efter data du specifierat efter ?

T.ex

if(isset($_GET['pizza'])){ $pizza = $_GET['pizza']; $dryck = $_GET['dryck']; print_r(split(",", $pizza)); print_r(split(",", $dryck)); }

Du använder split för att seperera siffrorna från , och får på så sätt en array med varje nummer som du enkelt kommer åt. Du kan använda explode, preg_split eller något annat du föredrar också.

Hoppas det hjälpte.

EDIT: http://www.ysquared.org/php/basics/use-the-query-string/ Dom förklarar lite mer specifikt hur det fungerar.

PHP använder vanligen syntaxen:

test.php?pizza[]=1&pizza[]=4&pizza[]=9&pizza[]=25&dryck[]=9&dryck[]=5&dryck[]=1&dryck[]=4

för att skicka vektorer. Ovanstående sträng ger att $_GET['pizza'] automatiskt är just vektorn [1, 4, 9, 25], utan att behöva splitta manuellt. Detta gör att exempelvis <select name="pizza_toppings[]" multiple> fungerar för att ge en vektor med alla användarens markerade val.

Det är även så den inbyggda http_build_query() jobbar. Den går ytterligare ett steg och kör en URL-kodning på hakparanteserna, så den skulle i själva verket bygga strängen:

$ php -r 'echo http_build_query(["pizza"=>[1, 4, 9, 25], "dryck"=>[9, 5, 1, 4]]);' pizza%5B0%5D=1&pizza%5B1%5D=4&pizza%5B2%5D=9&pizza%5B3%5D=25&dryck%5B0%5D=9&dryck%5B1%5D=5&dryck%5B2%5D=1&dryck%5B3%5D=4

Såg fyra år senare att jag glömt några likhetstecken — fixat!
Visa signatur

Nu med kortare användarnamn, men fortfarande bedövande långa inlägg.