Avatar billede Bjarne Novice
25. oktober 2005 - 20:52 Der er 12 kommentarer og
1 løsning

Ændre i adressen/url'en

Jeg skal ændre noget get-data:

Adressen ser således ud: index.php?page=etellerandet&year=2005&week=43

Og nu vil jeg så gerne ændre week til fx 40 igennem en <select>. Har prøvet nedenstående:

echo '<form method="get">';
echo '<select size="1" name="week" onchange="this.form.submit()"> ';
for($week = 1; $week <= 53; $week++) {
if($week == $_GET['week']) $selected = ' selected="selected"';
else $selected = '';
echo '<option'.$selected.'>'.$week.'</option>';
}
echo '</select></form>';

Det virker dog ikke efter hensigten. Når man ændre til en anden uge, bliver resultatet fx index.php?week=45, hvor det skulle have været index.php?page=etellerandet&year=2005&week=45.

Hvordan laver jeg det?
Avatar billede jaw Nybegynder
25. oktober 2005 - 20:55 #1
Er det altid stationære variabler? Eller kan antallet af variabler også ændre sig?

Hvis de er faste, så lav nogen gemte felter:
echo "<input type='hidden' name='page' value='".$_GET['page']."'>";
Avatar billede Bjarne Novice
25. oktober 2005 - 21:03 #2
jeg vil helst, at det fungerer dynamisk. Hvis jeg pludselig finder på at lave om, og bruge flere GET-variabler, så vil det jo ikke virke mere. Er det meget svært at lave dynamisk?
Avatar billede wordwrap Nybegynder
26. oktober 2005 - 08:49 #3
Noget i den her stil måske ??


echo '<form method="get">';
while (list($key, $val) = each($_GET)){
if($key != "week"){
    echo '<input type="hidden" name="'.$key.'" value="'.$val.'">';
    }
}
echo '<select size="1" name="week" onchange="this.form.submit()"> ';
for($week = 1; $week <= 53; $week++) {
if($week == $_GET['week']) $selected = ' selected="selected"';
else $selected = '';
echo '<option'.$selected.'>'.$week.'</option>';
}
echo '</select></form>';
Avatar billede Bjarne Novice
27. oktober 2005 - 16:46 #4
strange_76: Jeg har prøvet dit script.. Men er er et lille problem med det: Når man ændre en værdi kommer adresselinjen til at se således ud: index.php?page=etellerandet&year=2005&week=45&year=2005&week=44

Omend det virker faktisk.. Men hvordan får jeg scriptet til at slette de gamle værdier? Jeg vil tro, det har noget med sagen at gøre, at year og week er forud defineret med de aktuelle værdier (altså i denne uge: 43 og 2005).
Avatar billede jaw Nybegynder
27. oktober 2005 - 16:48 #5
Hvad bruger du som action i din form?
Avatar billede Bjarne Novice
27. oktober 2005 - 18:49 #6
Jeg har ikke defineret nogle action..
Avatar billede jaw Nybegynder
27. oktober 2005 - 19:04 #7
Okey, så prøv

echo "<form action='".__FILE__."' method='post'>";
Avatar billede jaw Nybegynder
27. oktober 2005 - 19:57 #8
Method skal så lige være get selvfølgelig ;)
Avatar billede Bjarne Novice
27. oktober 2005 - 21:33 #9
Når jeg gør det, kommer der en advarsel hvor der står: c er ikke en registereret protokol.
Avatar billede Bjarne Novice
28. oktober 2005 - 21:52 #10
Nårh, det er sikkert ikke så nemt. Så må jeg nøjes med den hurtige løsning. Hvis I ønsker point må I endelig smide et svar:)
Avatar billede wordwrap Nybegynder
31. oktober 2005 - 10:56 #11
hvis du ikke har fået det til at virke så prøv med:

echo '<form method="get" action='.$_SERVER[PHP_SELF].'>';

Angående point, kan du for min skyld svare selv acceptere dit eget svar.. om jaw vil gøre krav på noget point, er self op til ham :-)
Avatar billede jaw Nybegynder
31. oktober 2005 - 12:31 #12
Nej tak, det gør skam ikke noget, løste jo ikke dit problem...
Avatar billede Bjarne Novice
01. november 2005 - 23:42 #13
Det gør jeg så.. Tak for hjælpen
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester