Solved

Remove unwanted variables from URL when using GET in an HTML form

Posted on 2011-09-14
8
420 Views
Last Modified: 2012-05-12
Hi,

I have an HTML form which is self populating from a database. The form is a series of dropdowns. The form is used to choose parameters for a search/filter function, The problem I have is that all variables are sent to the URL even when empty. For example:

http://www.example.co.uk/scooters-list-test.php?model_range=Speedfight&engine_size=&stroke_type=&cooling_system=&colours=&promotion_id_use=&submit=GO!

When really I need the URL to be:

http://www.example.co.uk/scooters-list-test.php?model_range=Speedfight

How do I stop all these unwanted variables from being in the URL? There are a number of reasons why I want them removed.

Here is an example of the form I am using:

			<form method="get" action="scooters-list-test.php?"/>
            <select name = "model_range" > 
            	<option value = "">All Models</option>
				<?php foreach (getListOptions('products_scooters', 'model_range') as $value => $label): ?> 
				<option value = "<?php echo $value;?>" <?php selectedIf($value, @$_REQUEST['model_range']);?>><?php echo $label; ?></option> 
				<?php endforeach ?> 
 			</select>
            <select name = "engine_size"> 
				<option value = "">All Engine Types</option>
				<?php foreach (getListOptions('products_scooters', 'engine_size') as $value => $label): ?> 
				<option value = "<?php echo $value;?>" <?php selectedIf($value, @$_REQUEST['engine_size']);?>><?php echo $label; ?></option> 
				<?php endforeach ?> 
 			</select>
            <select name = "stroke_type"> 
				<option value = "">All Stroke types</option>
				<?php foreach (getListOptions('products_scooters', 'stroke_type') as $value => $label): ?> 
				<option value = "<?php echo $value;?>" <?php selectedIf($value, @$_REQUEST['stroke_type']);?>><?php echo $label; ?></option> 
				<?php endforeach ?> 
 			</select>
            <select name = "cooling_system" > 
				<option value = "">All Cooling Options</option>
				<?php foreach (getListOptions('products_scooters', 'cooling_system') as $value => $label): ?> 
				<option value = "<?php echo $value;?>" <?php selectedIf($value, @$_REQUEST['cooling_system']);?>><?php echo $label; ?></option> 
				<?php endforeach ?> 
 			</select>
            <select name = "colours" > 
				<option value = "">All Colour Options</option>
				<?php foreach (getListOptions('products_scooters', 'colours') as $value => $label): ?> 
				<option value = "<?php echo $value;?>" <?php selectedIf($value, @$_REQUEST['colours']);?>><?php echo $label; ?></option> 
				<?php endforeach ?> 
 			</select>
            <select name = "promotion_id_use" > 
				<option value = "">With / Without Promotion</option>
				<?php foreach (getListOptions('products_scooters', 'promotion_id_use') as $value => $label): ?> 
				<option value = "<?php echo $value;?>" <?php selectedIf($value, @$_REQUEST['promotion_id_use']);?>><?php echo $label; ?></option> 
				<?php endforeach ?> 
 			</select>   
            
           <input type="submit" name="submit" value="GO!" />

Open in new window


0
Comment
Question by:atari2600
  • 4
  • 2
  • 2
8 Comments
 
LVL 4

Expert Comment

by:h4hardy
ID: 36535312
just  replace the below line of code ..and it's work..
<form method="post" action="scooters-list-test.php?"/>

Open in new window


let me know your view.

     
0
 

Author Comment

by:atari2600
ID: 36535337
Hi h4hardy,

Thanks, but I need the relevant variables to show. Otherwise bookmarking a search result will not be practical.
0
 
LVL 4

Expert Comment

by:h4hardy
ID: 36535378
no issue.. you can use the $_POST.. try the below code at your page where the form has been taken away after submitting the things..

in your case your action page is "scooters-list-test.php" so at there just type the below code..


<?php

echo "<pre>";
print_r($_POST);

?>

Open in new window


Note : don't forget to select any value from the  HTML page where the drop down is listed



0
3 Use Cases for Connected Systems

Our Dev teams are like yours. They’re continually cranking out code for new features/bugs fixes, testing, deploying, testing some more, responding to production monitoring events and more. It’s complex. So, we thought you’d like to see what’s working for us.

 
LVL 82

Accepted Solution

by:
leakim971 earned 500 total points
ID: 36535401
Set the onsubmit attribute of your form like this :
<form method="get" action="scooters-list-test.php?" onsubmit="return removeEmpty()">

<script>
function removeEmpty() {
     var f1 = document.getElementsByName("engine_size")[0];
     var f2 = document.getElementsByName("stroke_type")[0];
     var f3 = document.getElementsByName("cooling_system")[0];
     var f4 = document.getElementsByName("colours")[0];
     var f5 = document.getElementsByName("promotion_id_use")[0];
     if(f1.options[f1.selectedIndex].value.length == 0) f1.disabled = true;
     if(f2.options[f2.selectedIndex].value.length == 0) f2.disabled = true;
     if(f3.options[f3.selectedIndex].value.length == 0) f3.disabled = true;
     if(f4.options[f4.selectedIndex].value.length == 0) f4.disabled = true;
     if(f5.options[f5.selectedIndex].value.length == 0) f5.disabled = true;
     return true;
}
</script>

Open in new window

0
 

Author Closing Comment

by:atari2600
ID: 36535487
Great solution! Exactly what I was looking for.
0
 

Author Comment

by:atari2600
ID: 36535501
Out of curiosity how would I remove the:
&submit=GO!
at the end of the URL?
0
 

Author Comment

by:atari2600
ID: 36535539
Actually just worked out how to do that :) Thanks again....
0
 
LVL 82

Expert Comment

by:leakim971
ID: 36535624
>Out of curiosity how would I remove the:
>&submit=GO!

Add this line : document.getElementsByName("submit')[0].disabled = true;

It's a bad practice to give a field the name "submit"
Change it to Submit or mysubmit

0

Featured Post

DevOps Toolchain Recommendations

Read this Gartner Research Note and discover how your IT organization can automate and optimize DevOps processes using a toolchain architecture.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Password hashing is better than message digests or encryption, and you should be using it instead of message digests or encryption.  Find out why and how in this article, which supplements the original article on PHP Client Registration, Login, Logo…
Is your Office 365 signature not working the way you want it to? Are signature updates taking up too much of your time? Let's run through the most common problems that an IT administrator can encounter when dealing with Office 365 email signatures.
In this tutorial viewers will learn how to embed an audio file in a webpage using HTML5. Ensure your DOCTYPE declaration is set to HTML5: : The declaration should display (CODE) HTML5 is supported by the most recent versions of all major browsers…
The viewer will receive an overview of the basics of CSS showing inline styles. In the head tags set up your style tags: (CODE) Reference the nav tag and set your properties.: (CODE) Set the reference for the UL element and styles for it to ensu…

770 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question