Currently I\'m at
http://example.com/topic.php?id=14
and I want to make a link to
http://example.com/topic.php?id=14&
There is no way to write a relative URI that preserves the existing query string while adding additional parameters to it.
You have to:
topic.php?id=14&like=like
I know I'm late to the game, but you can just do ?id=14&like=like
by using http build query as follows:
http_build_query(array_merge($_GET, array("like"=>"like")))
Whatever GET parameters you had will still be there and if like
was a parameter before it will be overwritten, otherwise it will be included at the end.
It is not elegant but possible to do it as one-liner <a>
element
<a href onclick="event.preventDefault(); location+='&like=like'">Like</a>
If you wish to use "like" as a parameter your link needs to be:
<a href="/topic.php?like=like">Like</a>
More likely though is that you want:
<a href="/topic.php?id=14&like=like">Like</a>
function currentUrl() {
$protocol = strpos(strtolower($_SERVER['SERVER_PROTOCOL']),'https') === FALSE ? 'http' : 'https';
$host = $_SERVER['HTTP_HOST'];
$script = $_SERVER['SCRIPT_NAME'];
$params = $_SERVER['QUERY_STRING'];
return $protocol . '://' . $host . $script . '?' . $params;
}
Then add your value with something like;
echo currentUrl().'&value=myVal';
In case you want to add the URL parameter in JavaScript, see this answer. As suggested there, you can use the URLSeachParams API in modern browsers as follows:
<script>
function addUrlParameter(name, value) {
var searchParams = new URLSearchParams(window.location.search)
searchParams.set(name, value)
window.location.search = searchParams.toString()
}
</script>
<body>
...
<a onclick="addUrlParameter('like', 'like')">Like this page</a>
...
</body>