• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 7806
  • Last Modified:

PHP Request Variables

Hey,

I've been using PHP for a few years properly now and there's one thing that's bugged me for a while and I need somebody to give me a hand.

Now, let's say I have a link like this: page.php?1=value1&2=value2

When I add a hyperlink to a page to change 2's value I'd do this: <a href="page.php?2=newvalue">Link</a>

Problem is, 1's value is now lost. So, I created a small script to output the request variables in the address to a string to use in my hyperlinks like this: <a href="page.php<?php echo $urlrequest ?>2=newvalue"></a>

The problem this time is that it will not change the current value of 2, it will just add it to the end like this:
page.php?1=value2&2=value2&2=newvalue.

What is the best way to overcome this issue so that I can change current request variables and possibly even remove specific request variables?

Cheers,
Dan.
0
Phatzer
Asked:
Phatzer
2 Solutions
 
RoonaanCommented:
You could use a function like so:

<?php
$_GET = array('1' => 'Keep me', '2' => 'Change me', '3' => 'Delete me');

$queryString = createQueryStringFromGet(array('2' => 'newvalue'), array('3')); // Change 2 parameter to its new value, and remove '3' parametter.

echo $queryString;

function createQueryStringFromGet($changedAndNewParameters=array(), $removeParameters=array()) {
 
  $newValues = $changedAndNewParameters + $_GET;
 
  foreach($removeParameters as $key) {
    unset($newValues[$key]);
  }

  $queryString = '';
 
  foreach($newValues as $key => $value) {
    $queryString .= empty($queryString) ? '?' : '&';
    $queryString .= $key .'='.urlencode($value);
  }
  return $queryString;
}
?>
0
 
nizsmoDeveloperCommented:
A very good idea would be to use session variables, this will overcome your problem of passing variables within different php pages and make variables accessible to all pages within a session.

To do this:


$_SESSION["2"] = $_REQUEST["2"];
$_SESSION["1"] = $_REQUEST["1"];

Then if you wanted to modify 2, simply:
$_SESSSION["2"] = "newvalue";

This way you will not have to pass along variables as arguments for every page, which saves a lot of trouble and much more elegant.

--------------------------------------------------------

As a side-note, for your line here:
<a href="page.php<?php echo $urlrequest ?>2=newvalue"></a>

do not forget the semi-colon at the end of the echo request (not too sure if this causes problems):
<a href="page.php<?php echo $urlrequest; ?>2=newvalue"></a>
0
 
PhatzerAuthor Commented:
Not tested the solutions yet, but I'm sure that it will be good enough for what I need to know. Using sessions for the info is a pretty good idea actually, in the past, I've only ever used sessions to handle logging in and basic user info.

I'll split points evenly, thanks for the help, I'm sure I'll get round to using the idea soon :)

@nizsmo: The semi-colon thing I know that it wasn't added, I just typed it all here, it's not a final piece of code just an idea that's all.
0

Featured Post

Concerto's Cloud Advisory Services

Want to avoid the missteps to gaining all the benefits of the cloud? Learn more about the different assessment options from our Cloud Advisory team.

Tackle projects and never again get stuck behind a technical roadblock.
Join Now