Send checkbox value til URL

Tags:    javascript ajax checkbox php

Hej.

Jeg sidder fast med et problem - og har efterhånden søgt google tyndt uden at kunne finde en løsning.

Jeg er igang med at lave et lille blog-system, og vil her gerne have at brugeren skal kunne sortere i indlæg ved at vælge kategorier i form af en række checkboxes.

<input name="cat" type="checkbox" value="1"/>Kategori 1
<input name="cat" type="checkbox" value="2"/>Kategori 2
<input name="cat" type="checkbox" value="3"/>Kategori 3
<input name="cat" type="checkbox" value="4"/>Kategori 4

Jeg vil altså gerne have at når brugeren klikker på checkbox med kategori 1 - så opdaterer url'en således at den bliver www.blog.com/index.php?cat=1 - og hvis brugeren vælger flere felter så bliver +2+3 etc. tilføjet
(www.blog.com/index.php?cat=1+2+3) således at jeg kan hente dem ind med en $cat=GET_['cat'];

Jeg ved at jeg skal bruge en javascript funktion - og jeg har siddet og set lidt på det, men har ikke kunne stykke noget sammen der virker.

Er der nogle der kan give et hint, eller er der en bedre måde at lave et kategorisystem på?

Tak



4 svar postet i denne tråd vises herunder
1 indlæg har modtaget i alt 1 karma
Sorter efter stemmer Sorter efter dato
første tanke
du vil gerne aflæse dit cat som array, så send det over som et array, problemet er selvføgelig at med get vil den skrive &cat[]= mellem hver værdi.
en løsning er at sende arrayet over som post, og lave en function der sender og manipulerer med din URL

test.php
Fold kodeboks ind/udPHP kode 


index.html
Fold kodeboks ind/udHTML kode 


demo http://test.olsensweb.dk/jacob/



Mange tak for dit svar, som har hjulpet mig godt på vej!

Jeg vil gerne have at den ikke sender til et nyt vindue - men blot bliver i det nuværende.
Kan dette gøres ved at udskifte "test.php" med "document.location.href"?

Jeg vil yderligere gerne have det til at fungere således at der ikke er en submit knap, og at brugeren kan afkrydse checkfelter igen.

Men dette kan jeg vel gøre med onclick="Serialize2String(frm, grp, seperator)" eller hvordan?



Serialize2String(frm, grp, seperator) har kun til opgave at tage de selected værdier fra checkboxene og retunerer dem som en string, med en seperator karakter i mellem
dette sendes over til serveren, og der kan du bruge det direkte eller explode på seperator karakteren
hvorfor vil du bruge + som seperator karakter ?, normal parameter adskillelse er &

kig på
http://test.olsensweb.dk/jacob/index.php click på vis kilde det er ren html/js
http://test.olsensweb.dk/jacob/request.php?source
checkbox.js indeholder bare Serialize2String() som du har set tidligere



Jeg har fået løst det med ren php. Jeg skal ikke kunne sige om dette er den mest optimale løsning - men den virker.

Til interesserede:

Fold kodeboks ind/udPHP kode 


Fold kodeboks ind/udHTML kode 


Koden tilføjer f.eks. ?cat_id=2 til URL'en, og cat_id kan derved hentes gennem $_GET['cat_id'];

Såfremt at URL'en allerede indeholder ?cat_id=3, så vil den ved udførelse af funktionen ændre det til ?cat_id=2.



t