Ankündigung

Einklappen
Keine Ankündigung bisher.

Navigator Geolocation - Fehlermeldung ausgeben

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Navigator Geolocation - Fehlermeldung ausgeben

    CMS Redaxo 4.6

    Modulcode Umkreissuche

    Hallo,

    ich habe ein Modul für Redaxo (Umkreissuche - Anzeigen im Umkreis von 5... etc. Km anzeigen) geschrieben und finde einen Fehler nicht.

    Das Modul gibt die Fehlermeldung (JQuery) erst beim dritten Reload der Seite aus

    Der JQuery Teil befindet sich am Ende des Codes, ab Zeile 150.

    Hier der Code:

    PHP-Code:
    <?php
    do {

    if(!
    function_exists('removeMC'))
    {
      function 
    removeMC($marker,$data,$item)
      {
        if(
    strcmp($data,'')!=0)
        {
          
    $item preg_replace("/<!--".$marker."/",'',$item);
          
    $item preg_replace("/".$marker."-->/",'',$item);
          
    $item preg_replace("/---".$marker."---/",$data,$item);
        }
        
        return 
    $item;
        }
    }

    $position = array(
      
    'lat' => rex_get('lat''float'), // Latitude
      
    'lon' => rex_get('lon''float'), // Longitude
      
    'acc' => rex_get('acc''float'), // Genauigkeit in Metern
    );

    $error rex_get('error');
    $distance rex_get('distance''int'5);
    $distances = array(5,10,25,50);

    if(!empty(
    $position['lat'] AND !empty($position['lon'])))
    {
      
    // Selectbox zur Auswahl der Distanz
    ?>
    <div id="div_content" align="center" class="ui-content ui-body-a" style="padding-left: 10px; padding-right: 10px;">  
      <form action="<?php echo rex_geturl(); ?>" method="get">
      <fieldset style="border: none;">
        <div class="ui-btn ui-shadow ui-btn-corner-all ui-submit ui-btn-up-a">
        <span class="ui-btn-inner ui-btn-corner-all">
            <span class="ui-btn-text">Umkreis wählen</span>
         </span>
        </div>
        <div class="ui-select">
        <div class="ui-btn ui-shadow ui-btn-corner-all ui-btn-icon-right ui-btn-up-a" data-corners="true" data-shadow="true" data-iconshadow="true" data-wrapperels="span" data-icon="arrow-d" data-iconpos="right" data-theme="a">
        <span class="ui-btn-inner ui-btn-corner-all">
        <span class="ui-btn-text">
        <span>5</span>
        </span>
        </span>
        <select name="distance" id="distance" data-native-menu="true">
        <?php
        
    foreach($distances as $d)
        {
          
    $selected '';
          if(
    $d == $distance)
            
    $selected 'selected';
          
          
    printf('<option value="%d"%s>%d&nbsp;km</option>'$d$selected$d);
        }
    ?>
        </select>
        </div>
        </div>
      </fieldset>
    </form>
    </div>
    <script type="text/javascript">/* <![CDATA[ */
        document.getElementById('distance').onchange = function (e)
        {
          location.href = '<?php echo rex_geturl('''', array('lat' => number_format($position['lat'], 10'.'''),'lon' => number_format($position['lon'], 10'.'''),'acc' => $position['acc']), '&'); ?>&distance=' + this.value;
        }
    /* ]]> */</script><?php
      
    /* Umkreissuche
       * Die Genauigkeit der Position wird in die Umkreissuche mit eingeschlossen, wenn diese ein Fünftel der Distanz nicht überschreitet.
       * Bispiel: Genauigkeit ist 1km, Umkreis ist 5km: Es wird effektiv im Umkreis von 5 + 1 = 6km gesucht.
       * Beispiel: Genauigkeit ist 10km, Umkreis ist 25km: Genauigkeit ist zu unsicher, deshalb wird im Umkreis von 25km gesucht.
      */
      
    error_reporting(E_ALL);
      
    ini_set('display_errors'1);
      
      
    $sql rex_sql::factory(2);
      
    //$sql->setDebug();
      
    $sql->setQuery("
        SELECT
          *,
          (
              6371 * acos(
                  cos(
                      radians("
    .number_format($position['lat'], 10'.''').")
                  ) * cos(
                      radians( lat )
                  ) * cos(
                      radians( lon ) - radians("
    .number_format($position['lon'], 10'.''').")
                  ) + sin(
                      radians("
    .number_format($position['lat'], 10'.''').")
                  ) * sin(
                      radians( lat )
                  )
              )
          ) AS distance
        FROM `"
    .$sql->escape($REX['TABLE_PREFIX'].'sedcards')."`
        WHERE 1
          AND status='1'
          AND (displaybegin < '"
    .date('Y.m.d H:i',time())."' AND (displayend IS NULL OR displayend = '' OR displayend > '".date('Y.m.d H:i',time())."'))
        HAVING 1
          AND distance <= "
    .($distance + (($position['acc'] / 1000) <= ($distance 5) ? ($position['acc'] / 1000) : 0))."
        ORDER BY
          distance, datum ASC
      "
    );//*/
      
      //$sql->setQuery("SELECT * FROM `".$sql->escape($REX['TABLE_PREFIX'].'sedcards')."` WHERE displaybegin != ''");
          
      
    if(!$sql->getRows())
      {
        
    // Keine Datensätze im Umkreis gefunden
        
    break;
      }
      
      
    // Ausgabe aller Datensätze in der Nähe
      
    include_once($REX["INCLUDE_PATH"]."/addons/sedcard_admin/libs/stdlib.php");
      
      
    $vl '<div style="padding-top: 0px; overflow: hidden;"><ul class="ui-listview"><li class="ui-btn ui-btn-icon-right ui-li-has-arrow ui-li ui-li-has-thumb ui-btn-hover-a ui-btn-up-a ui-li-has-count ui-li-count"><div class="ui-btn-inner ui-li"><div class="ui-btn-text"><a class="ui-link-inherit" href="'.rex_getUrl(5,$REX["CUR_CLANG"]).'?id=---ID---"><span class="lady img" style="float: left;"><img class="ui-li-thumb" style="border: 0px;" src="http://www.erotik-leipzig.com/sedcards/---VERZEICHNIS---/img/---BILD---" alt="---NAME" title="---NAME---"></span><p class="ui-li-desc"><strong>---ORT--- ---STADTTEIL---</strong></p><p class="ui-li-desc">---STRASSE---</p><h4 class="ui-li-heading">---NAME---</h4><p class="ui-li-desc"><!--ALTER ---ALTER--- Jahre, ALTER--><!--BH ---BH---, BH--><!--KONFEKTION KF ---KONFEKTION---, KONFEKTION--><!--GROESSE ---GROESSE--- cm, GROESSE--><!--GEWICHT ---GEWICHT--- kg, GEWICHT--><!--INTIMRASUR ---INTIMRASUR---, INTIMRASUR--><!--NATIONALITAET ---NATIONALITAET--- NATIONALITAET--></p></a></div><span class="ui-icon ui-icon-arrow-r ui-icon-shadow"> </span></div></li></ul><div class="clear"></div></div>';
      
      
    $out '';
      foreach(
    $sql->getArray() as $lady)
      {
        
    $item $vl;
        
    $bild '01k.jpg';
        
    $item str_replace("---VERZEICHNIS---",$lady['verzeichnis'],$item);
        
    $item str_replace("---NAME---",strtoupper($lady['name']),$item);
        
    $item str_replace("---STRASSE---",strtoupper($lady['strasse']),$item);
        
    $item str_replace("---BILD---",$bild,$item);
        
    $item str_replace("---ID---",$lady["id"],$item);
        
    $item str_replace("---STADTTEIL---",strtoupper(join(", ",preg_split("/\|/",$lady['stadtteil'],-1,PREG_SPLIT_NO_EMPTY))),$item);
        
    $item str_replace("---ORT---",strtoupper(join(", ",preg_split("/\|/",$lady['ort'],-1,PREG_SPLIT_NO_EMPTY))),$item);
        
    $item removeMC("ALTER",$lady["alter"],$item);
        
    $item removeMC("BH",$lady["bh"],$item);
        
    $item removeMC("KONFEKTION",$lady["konfektion"],$item);
        
    $item removeMC("GROESSE",$lady["groesse"],$item);
        
    $item removeMC("GEWICHT",$lady["gewicht"],$item);
        
    $item removeMC("INTIMRASUR",$lady["intimrasur"],$item);
        
    $item removeMC("NATIONALITAET",$lady["nationalitaet"],$item);
        
    $out .= $item;
      }
      echo 
    $out;
      
      
    // Hier das Modul beenden, weil der Standort schon bekannt ist
      
    break;
    }

    // Standortbestimmung
    ?>
    <div align="center" class="ui-content ui-body-a">
      <div id="wait_msg" style="width: 100%; height: 80px; text-align: center;"><img style="margin-top: 20px" src="../files/images/ajax-loader-big.gif"> <br />
        Bitte warten</div>
    </div>
    <div align="center" class="ui-content ui-body-a">
        <?php if($error): ?>
      <div id="error_msg" style="width: 96%; margin: 2% 0 2% 2%; text-align: left; float: left; border: 1px solid #f7c942; color: #333; text-shadow: 0 1px 0 #fff; background: #faeb9e; background-image: -webkit-gradient(linear, left top, left bottom, from(#fff), to(#faeb9e) ); background-image: -webkit-linear-gradient(top, #fff, #faeb9e); background-image: -moz-linear-gradient(top, #fff, #faeb9e); background-image: -ms-linear-gradient(top, #fff, #faeb9e); background-image: -o-linear-gradient(top, #fff, #faeb9e); background-image: linear-gradient(top, #fff, #faeb9e); padding: 0.4em 0 0 0; font-size: 18px;">
        <div style="padding: 8px;">Für diese Funktion benötigen Sie die Standorterkennung oder den Ortungsdienst (GPS) ihres Mobiltelefons! <br /><br />
            Bitte aktivieren Sie diesen in ihren Einstellungen und rufen Sie die Seite erneut auf. <br /><br />
            Genaue Informationen erhalten Sie von ihrem jeweiligen Telefonhersteller. <br /><br />Fehler: 
          
          <?php
            $msg 
    '';
            switch (
    $_REQUEST['error']){
                case 
    1:
                    
    //msg = "User denied the request for Geolocation."
                    
    $msg += 'CODE = ' error.PERMISSION_DENIED 1;
                    
    $msg .= '<br />Benutzer hat die Anfrage zur Standorterkennung verweigert.';
            break;
                case 
    2:
            
    //msg = "Location information is unavailable.";
            
    $msg .= 'CODE = ' error.POSITION_UNAVAILABLE 2;
            
    $msg .= '<br/>\nStandorterkennung nicht verfügbar.';
            break;
                case 
    3:
            
    //msg = "The request to get user location timed out.";
            
    $msg .= 'CODE = ' error.TIMEOUT 3;
            
    $msg .= '<br/>\nStandorterkennung Timeout.';
            break;
                case 
    4:
            
    //msg = "An unknown error occurred.";
            
    $msg .= 'CODE = ' error.UNKNOWN_ERROR 4;
            
    $msg .= '<br/>\nUnbekannter Fehler ist aufgetreten.';
            break;
            }
            echo 
    $msg;
          
    ?>
          <a id="standort_reload" href="<?php echo rex_getUrl(21,$REX["CUR_CLANG"]); ?>" class="ui-btn ui-shadow ui-btn-corner-all ui-btn-icon-left ui-btn-up-a">
              <span class="ui-btn-inner ui-btn-corner-all">
                <div id="mtext" class="ui-btn-text" style="font-size: small;">Nochmal versuchen</div>
                <span id="mehrzeiten_icon" class="ui-icon ui-icon-refresh ui-icon-shadow">&nbsp;</span>
              </span>
          </a>
        </div>
      </div>
      <?php endif; ?>
    </div>
    <?php

    // Script zur Standortbestimmung nur ausführen, wenn Standort noch nicht bekannt ist und auch kein Fehler aufgetreten ist
    if(empty($_GET))
    {
    ?>
    <script type="text/javascript">/* <![CDATA[ */

    if(!navigator.geolocation)
    {
      location.href = '<?php echo rex_geturl('''', array('error' => 'geo'), '&'); ?>';
    }
    else
      {
        navigator.geolocation.getCurrentPosition(function(position)
        {
            // Position konnte ermittelt werden
            location.href = '<?php echo rex_geturl(); ?>?lat=' + position.coords.latitude + '&lon=' + position.coords.longitude;
        },  function()
        {
            // Position konnte nicht ermittelt werden
            location.href = '<?php echo rex_geturl(); ?>?error=' + fehlercode;
        }, 
        {
            enableHighAccuracy: true,
            timeout: 5000,
            maximumAge: 0
        });
        navigator.geolocation.getCurrentPosition(
        function(pos){
        },
        function(error){
            var msg = "Fehler: ";
            switch (error.code){
                case error.PERMISSION_DENIED:
                    //msg = "User denied the request for Geolocation."
                    msg += 'CODE = ' + error.PERMISSION_DENIED | 1;
                    msg += '<br />Benutzer hat die Anfrage zur Standorterkennung verweigert.';
                                    fehlercode=1;
                    break;
                case error.POSITION_UNAVAILABLE:
                    //msg = "Location information is unavailable.";
                    msg += 'CODE = ' + error.POSITION_UNAVAILABLE | 2;
                    msg += '<br/>\nStandorterkennung nicht verfügbar.';
                                    fehlercode=2;
                    break;
                case error.TIMEOUT:
                    //msg = "The request to get user location timed out.";
                    msg += 'CODE = ' + error.TIMEOUT | 3;
                    msg += '<br/>\nStandorterkennung Timeout.';
                                    fehlercode=3;
                    break;
                case error.UNKNOWN_ERROR:
                    //msg = "An unknown error occurred.";
                    msg += 'CODE = ' + error.UNKNOWN_ERROR | 4;
                    msg += '<br/>\nUnbekannter Fehler ist aufgetreten.';
                                    fehlercode=4;
                    break;
            }
        }
    )
    }
    /* ]]> */</script>
    <?php
    }

    } while(
    false);
    ?>


    Ich bin für jede Hilfe dankbar.

    Gruß Andy


  • #2
    Das Modul gibt die Fehlermeldung (JQuery) erst beim dritten Reload der Seite aus
    und was sagt die?

    Der JQuery Teil befindet sich am Ende des Codes, ab Zeile 150.
    Dann zeig uns doch bitte den relevanten Ausschnitt, schätze niemand wird sich durch den kompletten Code wühlen.

    Kommentar


    • #3
      Moderation: Thema verschoben nach Javascript Ajax und mehr
      [URL="https://gitter.im/php-de/chat?utm_source=share-link&utm_medium=link&utm_campaign=share-link"]PHP.de Gitter.im Chat[/URL] - [URL="https://raindrop.io/user/32178"]Meine öffentlichen Bookmarks[/URL] ← Ich habe dir geholfen ? [B][URL="https://www.amazon.de/gp/wishlist/348FHGUZWTNL0"]Beschenk mich[/URL][/B].

      Kommentar


      • #4
        Du fragst zweimal nach der gelocation, einmal behandelst du nur den Erfolgsfall, einmal nur den Fehlerfall. P.S.: EVA-Prinzip und bissl mehr clean code würde dich auch schneller ans Ziel bringen.
        I like cooking my family and my pets.
        Use commas. Don't be a psycho.
        [URL="http://jscouch.de"]Blog[/URL] - [URL="http://coverflowjs.github.io/coverflow/"]CoverflowJS[/URL]

        Kommentar


        • #5
          "Clean Code" sollte verlinkt sein, sonst versteht man den Wink als Anfänger vielleicht nicht:
          https://de.m.wikipedia.org/wiki/Clean_Code
          http://clean-code-developer.de

          Kommentar

          Lädt...
          X