PHP|Débutant :: Forums

Advertisement

Besoin d'aide ? N'hésitez pas, mais respectez les règles

Vous n'êtes pas identifié(e).

#1 Forum Général PHP » utiliser Géolocalisation HTML5 dans une page php » 11-03-2018 17:36:30

filiplarlibe
Réponses : 0

Bonsoir à tous,

Je développe actuellement un site web sous joomla. Et je voudrais modifier un module existant pour insérer la géolocalisation html5 via le navigateur en javascript. J'ai trouvé plusieurs tuto sur le net mais par contre je rencontre certaines difficultés :

Dans le module joomla, j'ai une page php : page1.php et le template du module dans le dossier template du module, une autre page page1.php dans lequel il y a le code HTML pour le visuel de la page.
Jusque là rien de spécial tout est normal

J'ai trouvé du code pour faire la géolocalisation HTML5 notamment :

<script type="text/javascript">
            if (navigator.geolocation)
              navigator.geolocation.getCurrentPosition(successCallback, errorCallback, {enableHighAccuracy:false});
            else
              alert("Votre navigateur ne prend pas en compte la géolocalisation HTML5");
           
            var lati;
            var longi;
            function successCallback(position){
              lati = position.coords.latitude;
              longi = position.coords.longitude;
              alert("Latitude : " + lati + ", longitude : " + longi);
            }; 
 
            function errorCallback(error){
                            var info = "Erreur lors de la géolocalisation : ";
    switch(error.code) {
    case error.TIMEOUT:
      info += "Timeout !";
    break;
    case error.PERMISSION_DENIED:
  info += "Vous n’avez pas donné la permission";
    break;
    case error.POSITION_UNAVAILABLE:
      info += "La position n’a pu être déterminée";
    break;
    case error.UNKNOWN_ERROR:
      info += "Erreur inconnue";
    break;             
  }
            };

Dans la page1.php, en dessous du code javascript, j'ai actuellement 2 variables php nommés $latitude et $longitude qui servent dans le module pour faire des calculs (notamment des calculs de prières). Aujourd'hui ces 2 variables sont alimentés par l'administration du module. (on définit la latitude et la longitude directement dans le paramètrage du module).

Je voudrais donc trouver un moyen pour que alimenter ces variables $latitude et $longitude avec le résultat du javascript exécuté pour trouver la géolocalisation. J'ai bien compris le problème qui est que le javascript est exécuté côté client alors que le PHP est exécuté côté serveur. Mais j'ai vu qu'apparemment il serait possible d'utiliser de l'ajax pour renvoyer les variables au serveur. Par contre je ne sais pas du tout comment ça fonctionne, j'ai beau lire quelques tuto sur le net, je ne comprends pas tout et en plus ça n'a pas l'air de fonctionner. Et autre point, comme c'est un module joomla, il n'y a qu'une seule page page1.php.

Est-ce qu'il serait possible de renseigner ces variables php soit dans la même page (mais je ne pense pas que ce soit possible) ou soit par l'intermédiaire d'une autre page ? Si par une autre page, comment faire pour modifier le module joomla en ajoutant une autre page ?

Je vous remercie par avance pour votre. Soyez indulgent svp, je suis débutant en développement web, je ne connais pas trop le PHP, Javascript et l'AJAX.

#2 Javascript » géolocalisation HTML5 dans module joomla » 09-03-2018 00:54:12

filiplarlibe
Réponses : 0

Bonsoir à tous,

Je développe actuellement un site web sous joomla. Et je voudrais modifier un module existant pour insérer la géolocalisation html5 via le navigateur en javascript. J'ai trouvé plusieurs tuto sur le net mais par contre je rencontre certaines difficultés :

Dans le module joomla, j'ai une page php : page1.php et le template du module dans le dossier template du module, une autre page page1.php dans lequel il y a le code HTML pour le visuel de la page.
Jusque là rien de spécial tout est normal

J'ai trouvé du code pour faire la géolocalisation HTML5 notamment :

<script type="text/javascript">
            if (navigator.geolocation)
              navigator.geolocation.getCurrentPosition(successCallback, errorCallback, {enableHighAccuracy:false});
            else
              alert("Votre navigateur ne prend pas en compte la géolocalisation HTML5");
           
            var lati;
            var longi;
            function successCallback(position){
              lati = position.coords.latitude;
              longi = position.coords.longitude;
              alert("Latitude : " + lati + ", longitude : " + longi);
            }; 
 
            function errorCallback(error){
                            var info = "Erreur lors de la géolocalisation : ";
    switch(error.code) {
    case error.TIMEOUT:
      info += "Timeout !";
    break;
    case error.PERMISSION_DENIED:
  info += "Vous n’avez pas donné la permission";
    break;
    case error.POSITION_UNAVAILABLE:
      info += "La position n’a pu être déterminée";
    break;
    case error.UNKNOWN_ERROR:
      info += "Erreur inconnue";
    break;             
  }
            };

Dans la page1.php, en dessous du code javascript, j'ai actuellement 2 variables php nommés $latitude et $longitude qui servent dans le module pour faire des calculs (notamment des calculs de prières). Aujourd'hui ces 2 variables sont alimentés par l'administration du module. (on définit la latitude et la longitude directement dans le paramètrage du module).

Je voudrais donc trouver un moyen pour que alimenter ces variables $latitude et $longitude avec le résultat du javascript exécuté pour trouver la géolocalisation. J'ai bien compris le problème qui est que le javascript est exécuté côté client alors que le PHP est exécuté côté serveur. Mais j'ai vu qu'apparemment il serait possible d'utiliser de l'ajax pour renvoyer les variables au serveur. Par contre je ne sais pas du tout comment ça fonctionne, j'ai beau lire quelques tuto sur le net, je ne comprends pas tout et en plus ça n'a pas l'air de fonctionner. Et autre point, comme c'est un module joomla, il n'y a qu'une seule page page1.php.

Est-ce qu'il serait possible de renseigner ces variables php soit dans la même page (mais je ne pense pas que ce soit possible) ou soit par l'intermédiaire d'une autre page ? Si par une autre page, comment faire pour modifier le module joomla en ajoutant une autre page ?

Je vous remercie par avance pour votre. Soyez indulgent svp, je suis débutant en développement web, je ne connais pas trop le PHP, Javascript et l'AJAX.

#3 Re : Forum Général PHP » Utiliser php dans javascript pour traitement sur value d'une combobox » 25-03-2010 12:46:42

Merci beaucoup pour ton aide.

J'ai utilisé la fonction split qui marche très bien.
Désolé je ne connaissais pas cette fonction, en même temps je débute en javascript et php.

Merci beaucoup.

#4 Forum Général PHP » Utiliser php dans javascript pour traitement sur value d'une combobox » 25-03-2010 12:46:42

filiplarlibe
Réponses : 2

Bonjour à tous,

J'explique mon problème :

J'ai 2 listes dans mon formulaire et 1 bouton :

1 pour la liste des pays
1 pour la liste des villes (en fonction du pays sélectionné)
Dans les <option> de la liste des villes je stocke en value :

l'id du pays | latitude | longitude | timezone (4 valeurs séparés par des |)


Quand je clique sur le bouton :

J'ai du javascript qui s'exécute pour récupérer la value de la liste ville :



 
//BOUTON
<input type="submit" value=" Go " onClick="viewMonth(0);">
 
//JAVASCRIPT
 
<script type="text/javascript">
function viewMonth(offset)
  {
    var valeur = document.getElementById('listeville').value;

J'aimerais maintenant utiliser ma fonction php qui permet de récupérer la Xème valeur de ma value de la liste ville.
Par ex : je voudrais récupérer la latitude de la value (en utilisant une fonction php) et la mettre dans une variable javascript car j'ai d'autres traitements à faire en javascript dessus plus loin dans le code.

Je ne sais pas si j'ai été suffisamment clair.
En tout cas je ne vois pas comment faire.
Pouvez-vous m'aider s'il vous plait?

Merci d'avance.

#5 Re : Forum Général PHP » Pb listes déroulantes Ajax et php avec Internet Explorer » 24-03-2010 15:09:04

C'est normal que tu ne le vois pas dans le code HTML car c'est l'ajax qui le gère. C'est la fonction onChange="xajax_SelectVille(this.value)" qui va le gèrer en exécutant le code ajax et en créant du code javascript.

Mais de toute façon, ça marche sur tous les navigateurs sauf Internet Explorer.

#6 Forum Général PHP » Pb listes déroulantes Ajax et php avec Internet Explorer » 24-03-2010 15:09:04

filiplarlibe
Réponses : 3

Bonjour à tous et toutes,

J'ai un problème avec l'utilisation d'Ajax pour alimenter dynamiquement 1 liste déroulante par rapport à la sélection d'un pays d'une 1ère liste déroulante.
En fait le code que j'ai fait ne marche pas sur Internet Explorer mais par contre sur les autres ça marche.

Voici le code que j'utilise :

Code AJAX :

function SelectVille($idpays)
{
// créé un nouvel objet permettant d'envoyer une réponse au côté client
   $objResponse = new xajaxResponse();
   $options="";
   $db      = JFactory::getDBO();
//Requête SQL pour rechercher les villes par rapport à l'ID Pays

    $select = 'v.*';
    $from = '#__ville AS v';

    $wheres[] = 'v.id_pays = '.$idpays;
    $order  = 'v.ville';

    $query = "SELECT " . $select .
        "\n FROM " . $from .
        "\n WHERE " . implode( "\n  AND ", $wheres ) .
        "\n ORDER BY " . $order;
       
  $db->setQuery($query);
  $villes = $db->loadObjectList();

for($row_count=0; $row_count < count($villes); $row_count++)
{
   // on place toutes les villes dans des options valables pour la liste SELECT
   $options .= '<option value="'.Trim($villes[$row_count]->id).'">'.Trim($villes[$row_count]->ville).'</option>';
}
   // l'Ajax remplacera le innerHTML (html intérieur) de la listeville pour y mettre $options
   $objResponse->addAssign("listeville","innerHTML",$options);
   

   // envoie la réponse en XML
   return $objResponse->getXML();
}

require_once("components/com_auto/views/auto/xajax/xajax.inc.php");
$xajax = new xajax();
$xajax->registerFunction("SelectVille");
$xajax->processRequests();
?>

Code HTML pour les 2 listes déroulantes :

<?php
$xajax->printJavascript("components/com_auto/views/auto/xajax/");
?>
<SELECT name="pays" id="pays" onChange="xajax_SelectVille(this.value)">

Voilà, il doit y avoir une fonction ou quelque chose qui n'est pas compatible avec IE mais je ne vois pas.
Est-ce que vous pouvez m'éclairer car je cherche mais je ne trouve rien.

Merci d'avance pour votre aide.

Pied de page des forums

Propulsé par FluxBB