Page 1 sur 1

Sauvegarde variable après refresh

Posté : 23 août 2022, 20:37
par pleiode
Hello,
J'essaie t'en bien que mal à sauvegarde 2 variables, la latitude et la longitude de la ville que je cherche.

j'essaie de créer une variable session mais ça ne marche pas...

Une aide serait la bienvenue ! Merci :D
<?php
session_start();
?>

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>

    <script>
        var timezone_offset_minutes = new Date().getTimezoneOffset();
        timezone_offset_minutes = timezone_offset_minutes == 0 ? 0 : -timezone_offset_minutes;
        // Timezone difference in minutes such as 330 or -360 or 0
        console.log(timezone_offset_minutes);
    </script>

    <script>
        function initMap() {

            var input = document.getElementById('searchMapInput');
            var autocomplete = new google.maps.places.Autocomplete(input);

            autocomplete.addListener('place_changed', function() {
                var place = autocomplete.getPlace();
                document.getElementById('location-snap').innerHTML = place.formatted_address;
                document.getElementById('lat-span').innerHTML = place.geometry.location.lat();
                document.getElementById('lon-span').innerHTML = place.geometry.location.lng();
            });
        }
    </script>

    <script src="https://maps.googleapis.com/maps/api/js?key=**************&libraries=places&callback=initMap" async defer></script>




    <input id="searchMapInput" type="text" placeholder="Enter a location">

    <ul id="geoData">
        <li>Address: <span id="location-snap"></span></li>
        <?php $_SESSION['latitude'] = '<span id="lat-span"></span></li>' ?>
        <?php $_SESSION['longitude'] = '<span id="lon-span"></span></li>' ?>
    </ul>

    <h1> <?=$latitude?> </h1>

    <?php
    $timezone_offset_minutes = $_GET['timezone_offset_minutes'];
    $timezone_name = timezone_name_from_abbr("", $timezone_offset_minutes * 60, false);
    echo $timezone_name;
    date_default_timezone_set($timezone_name);

    $url = 'http://ws1.metcheck.com/ENGINE/v9_0/json.asp?lat=' . $latitude . '&lon=' . $longitude . '&lid=13308&Fc=As';
    $raw = file_get_contents($url);
    $json = json_decode($raw);

    $dt = new DateTimeImmutable($heure1, new DateTimeZone('UTC'));
    $date = $dt->setTimezone(new DateTimeZone($timezone_name))->format('H') . 'h';

</body>

</html>

Re: Sauvegarde variable après refresh

Posté : 24 août 2022, 08:39
par Spols
Il faut bien comprendre que php s'execute coté serveur et javascript coté client. et que la communication entre les deux n'est pas DU TOUT automatique, il faut l'implémenter et bien y réflèchir

Re: Sauvegarde variable après refresh

Posté : 24 août 2022, 10:45
par pleiode
Oui j'ai vu que c'était assez complexe

Ce que j'essai de faire c'est lorsque l'utilisateur recherche une ville avec l'API Google places cela enregistre la latitude et la longitude dans des variables PHP !

Re: Sauvegarde variable après refresh

Posté : 24 août 2022, 12:57
par Spols
tu devrais envisager du localStorage JS plutot que la session php je pense

Re: Sauvegarde variable après refresh

Posté : 24 août 2022, 16:49
par pleiode
tu devrais envisager du localStorage JS plutot que la session php je pense
Ok merci pour ton aide Spols :)

Du coup j'ai réussi !

En gros je récupère la latitude et longitude de l'API et j'ouvre une nouvelle URL avec celles-ci !

<script>
        function initMap() {

            var searchInput = 'searchMapInput';

            var autocomplete;
            autocomplete = new google.maps.places.Autocomplete((document.getElementById(searchInput)), {
                types: ['geocode']
            });
            google.maps.event.addListener(autocomplete, 'place_changed',

                function() {
                    var near_place = autocomplete.getPlace();
                    var address = near_place.formatted_address;
                    var latitude = near_place.geometry.location.lat();
                    var longitude = near_place.geometry.location.lng();
                    document.getElementById('location-snap').innerHTML = address;
                    document.getElementById('lat-span').innerHTML = latitude;
                    document.getElementById('lon-span').innerHTML = longitude;

                    window.location.href='index.php?adress='+address+'&lat='+latitude+'&long='+longitude;

                });
        }
    </script>