3

I have spent more than 2 months trying to solve this coding problem. First of all I know JavaScript runs on the client side and PHP runs on server.

I have two PHP pages (index23.php and index24.php), both use HTML/PHP and JS.

I'm using the HTML5 geolocation API:

<body onload="getLocation()">

<p id="demo"></p>

<script>
var x = document.getElementById("demo");

function getLocation()
{
    if (navigator.geolocation)
    {
        navigator.geolocation.getCurrentPosition(showPosition);
    }
    else
    {
        x.innerHTML="Geolocation is not supported by this browser.";
    }
}

function showPosition(position)
{
    x.innerHTML= "+" + position.coords.latitude + "+" + position.coords.longitude;  
}
</script>

I can see the geocode values on my current PHP page (index23.php). Then I click an HTML form button and the browser goes to another page (index24.php).

How can I pass the JavaScript values on the first PHP page to the second PHP page using the submit button on the form?

This is my form:

<form id="searchbox" action="index24.php" method="get">
<input name="q" type="text" placeholder="Type here"/>
<input id="submit" type="submit" value="Search"></form>
0

3 Answers 3

6

what you need to do is make a input type hidden and send value through it

<input name="bla"  type="hidden" value="blabla"> 

also html is not server side .. only php is. i hope image below explain

enter image description here

image source

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

1 Comment

like for the picture :D
1

index23.php:

<html>
<head>
<script type="text/javascript">
function getLocation(){
    var x = document.getElementById("demo");
    if (navigator.geolocation){
        navigator.geolocation.getCurrentPosition(showPosition);
    }else{
        x.innerHTML="Geolocation is not supported by this browser.";
    }
}
function showPosition(position){
    var x = document.getElementById("demo"),latitude=document.getElementById("latitude"),longitude=document.getElementById("longitude");
    x.innerHTML="+" + position.coords.latitude + "+" + position.coords.longitude;
    latitude.value = position.coords.latitude;
    longitude.value = position.coords.longitude;
}

</script>

</head>
<body onload="getLocation()">

    <p id="demo"></p>
    <form id="searchbox" action="index24.php" method="get">
    <input name="q" type="text" placeholder="Type here"/>
    <input name="latitude" id="latitude" type="hidden">
    <input name="longitude" id="longitude" type="hidden">
    <input id="submit" type="submit" value="Search"></form>
</body></html>

index24.php

$latitude = $_GET['latitude'];
$longitude = $_GET['longitude'];

1 Comment

you would have to switch over to $_POST method for it to not show in the URL
0

You can add the values to the form dynamically when you get the coordinates.

<form id="searchbox" action="index24.php" method="get">
<input name="q" type="text" placeholder="Type here"/>
<input id="submit" type="submit" value="Search">
<input name="latitude" type="hidden" id="latitude" value="" />
<input name="longitude" type="hidden" id="longitude" value="" />
</form>
<script>
var x=document.getElementById("demo");
function getLocation()
{
  if (navigator.geolocation)
  {
    navigator.geolocation.getCurrentPosition(showPosition);
  }
  else{x.innerHTML="Geolocation is not supported by this browser.";}
}
function showPosition(position)
{
  document.getElementById('latitude').value = position.coords.latitude;
  document.getElementById('longitude').value = position.coords.longitude;
  x.innerHTML="+" + position.coords.latitude + "+" + position.coords.longitude;    
}
</script>

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.