0

I'm having a problem with passing variables using the URL of my website.

Here's the code:

    function sort(form) {   
        var Page = "?";

        var iweek = form.listWeeks.SelectedIndex;
        var week = form.listWeeks.options[iweek].value;

        var month = form.listMonth.selectedIndex+1; 

        var iyear = form.listYear.selectedIndex;
        var year = form.listYear.options[iyear].value;  

        var URL = Page + "week=" + week + "&month=" + month + "&year=" + year;

        window.location = URL;  

        return false;
    }

When I click the submit button wich refers to this function, the url changes to:

http://localhost/test.php?listWeeks=1&listMonth=August&listYear=2010&Submit=Select

But I would like to change the url to:

http://localhost/test.php?week=1&month=8&year=2010

The strange part is that when I change the code to:

 function sort(form) {

        var Page = "?";

        //var iweek = form.listWeeks.SelectedIndex;
        //var week = form.listWeeks.options[iweek].value;

        var month = form.listMonth.selectedIndex+1; 

        var iyear = form.listYear.selectedIndex;
        var year = form.listYear.options[iyear].value;  

        var URL = Page + "month=" + month + "&year=" + year;

        window.location = URL;  

        return false;
    }

It works.. Could anyone please tell me what the problem might be?

Thanks!

2
  • 1
    This does rather look like JavaScript than PHP code Commented Aug 1, 2013 at 12:01
  • @GeraldSchneider I also noticed, however in my opinion JavaScript is not required here Commented Aug 1, 2013 at 12:02

2 Answers 2

1

You might need to use value attribute in each <option> tag. For example

<select name="listMonth">
  <option value="1">January</option>
  <option value="2">February</option>
  ...
</select>

You can also change <select name="listMonth"> to <select name="month">.

This should work as expected (UPDATE):

<form method="get" action="test.php">
   <select name="month">
     <option value="1">January</option>
     <option value="2">February</option>
     ...
   </select>
   <input type="submit" />
</form>

JavaScript code is not required then.

Sign up to request clarification or add additional context in comments.

3 Comments

I'm using the value attribute in every option tag. When I change listMonth to month it returns August, I want it to be 8 instead.
Well if you look to the code block where I left week out, it works fine. When I add week in the URL it changes the url to some kind of var dump.
I did what you told me to do and it's fixed now, thanks for your quick response! I will think twice before using javascript for this sort of stuff now! Thank you.
0

Something in the two lines of code you comment out is throwing an error. Why exactly that is is impossible to say without seeing more context (such as the form).

This is resulting in the JavaScript falling over and the form submitting as normal.

I'd deal with this by scrapping the JS entirely and removing the name attributes from the form controls that you don't want to appear in the submitted data.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.