• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

Get methode automatische Aktualisierung (datenbank)

Basti2000

New member
Hallo zusammen ich sitze momentan vor einem kleinen Problem und zwar bekomme ich immer die Aktuellen werte aus meiner Datenbank jedoch weis ich nicht wie ich sie einzeln abfragen kann um sie weiter zu bearbeiten

In der ersten Datei lese ich die Daten aus einer Datenbank aus und rechne sie um das Ergebnis sieht dann so aus
PHP:
	$Latitude =$_daten["latitude"];
	$Longitude =$_daten["longitude"];
	$wert=$Longitude;

	echo $Latitude;
	
	echo $Longitude;


Nun möchte ich diese beiden Werte an einen Marker in google maps weitergeben sprich ich benötige sie einzeln zum verarbeiten bis jetzt bekomme ich sie nur immer als eine einzelne ausgabe
PHP:
    <head>
        <title></title>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <script src="//ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script>
    </head>
    <body>
        <div id="reloaded"><?php include('Datenbank.php'); ?></div>
        <script>
        setInterval(function(){
		
		
            $.get('Datenbank.php', function(data) {
			
                $('#reloaded').html(data);
	  // hier will ich z.b den Wert der Longitude
			
            });
        }, 1000);
  </script>
    </body>	 
</html>
 
Du musst die beiden Werte irgendwie voneinander unterscheidbar machen. Also z.B. echo $Latitude.'*'.$Longitude; (ich hoffe, in PHP ist die Konkatenation der Punkt. Sonst wahrscheinlich das +, ich nutze kein PHP, und den Header nicht vergessen!)

Und jetzt im Ajax wieder einlesen und trennen: var lola = data.split('*');
Jetzt steht dir in lola[0] die $Latitude und in lola[1] die $Longitude zur Verügung zwecks Aufruf des Markers.

*verschoben aus JS*
 
Da ohnehin schon jQuery genutzt wird, kann man die beiden Werte auch als JSON-serialisierte Werte übergeben, da entfällt dann der split.

PS. PHP benutzt . für die Konkatenation.
 
Danke erstmal für die Antwort ja hat gut funktioniert für alle die das Selbe Problem haben heir mal meine Lösung
PHP:
<html>
    <head>
        <title></title>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <script src="//ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script>
    </head>
    <body>
        <div id="reloaded"><?php include('Datenbank.php'); ?></div>
        <script>
        setInterval(function(){
		
		
            $.get('Datenbank.php', function(data) {
			
                $('#reloaded').html(data);
			   var lola = data.split('+');
			   	document.write("     "); 
		document.write(lola[0]);
	
			document.write("Latitude");  
			document.write("________");
			document.write(lola[1]);
			
			document.write("Longitude"); 
            });
        }, 1000);
		
		
		
		
		    </script>
			
		<p>wert</p>
    </body>
	 

</html>
 
Leider führt mich das ganze zu einem weiteren Problem mit dem ich nicht gerechnet habe und zwar bekomm ich diese werte nicht in das Script mit der Googel Api wenn ich beides im Selben Script habe so wie hier

PHP:
 <script> 

Hier befindet sich das Script zum auslesen
Hier befindet sich das Googel Api zeug
	
</script>

das Problem hier ist das er natürlich zuerst die endlose Schleife abarbeitet und mier somit nie die Map anzeigt

drehe ich das ganze hat er nie die Positions-Werte für den Marker in der Googel Api und kann somit die Map auch nicht Anziegen

wenn ich das ganze trenne hier dargestellt
PHP:
<script> 
Hier befindet sich das Script zum auslesen
</script>
<script> 
Hier befindet sich die Google Api
</script>

dan hab ich das Problem das ich die werte aus dem oberen Script nicht in das untere Script bekomme ich habe bis jetzt auch keine Anleitung für solch ein vorhaben gesehen hat jemand eine Idee wie ich dieses Problem noch lösen könnte

Hier mal mein Kompletter Script vielleicht ist das Problem dann besser zu verstehen
PHP:
<!DOCTYPE html>

<html>
  <head>
    <title>Karte</title>
<link rel="stylesheet" type="text/css" href="../panel.css"
<style type="text/css">
    <meta name="viewport" content="initial-scale=1.0, user-scalable=no">
    <style>
      html, body, #map-canvas {
	top: 30px; 

	height: 330px;
	WIDTH: 465px;

      }
      #panel {
	position: Absolute;
        top: 370px; 
	width:455px;
       margin-left: 12px;
 
        
        background-color: #006572;
        padding: 5px;
        border: 1px solid #ffffff;
      }
    </style>
   <script src="https://maps.googleapis.com/maps/api/js?v=3.exp&sensor=false&libraries=geometry"></script>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
 <script src="//ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script>




 
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////Hier kommt das Problem
         <script>
               setInterval(function(){
            $.get('Datenbank.php', function(data) {		
                $('#reloaded').html(data);
			  var lola = data.split('+');	  		   	
		//document.write(lola[0]);		#Die werte die ich hier auslese müssen nach var jlat und //var jlong 11 Zeilen wieter unten
          });
        }, 1000);

		    </script>
    <script>	
var poly;
var geodesicPoly;
var marker1;
var marker2;		
var jlat = 1; //Hier muss der wert von lola[0] hin
var jlong = 2; //Hier muss der wert von lola[1] hin



//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////



function initialize() {
  var mapOptions = {
    zoom: 4,
    center: new google.maps.LatLng(34, -40.605),
mapTypeId: google.maps.MapTypeId.SATELLITE,
    panControl: false,
    zoomControl: false,
    scaleControl: false
  };

  var map = new google.maps.Map(document.getElementById('map-canvas'),
      mapOptions);

  map.controls[google.maps.ControlPosition.TOP_CENTER].push(
      document.getElementById('info'));

  marker1 = new google.maps.Marker({
    map: map,
    draggable: true,
    position: new google.maps.LatLng(jlat, jlong)
  });

  var bounds = new google.maps.LatLngBounds(marker1.getPosition(),
      marker2.getPosition());
		map.fitBounds(bounds);

  google.maps.event.addListener(marker1, 'position_changed', update);
  google.maps.event.addListener(marker2, 'position_changed', update);

  var polyOptions = {
    strokeColor: '#FF0000',
    strokeOpacity: 1.0,
    strokeWeight: 3,
    map: map,
  };
  poly = new google.maps.Polyline(polyOptions);

  var geodesicOptions = {
    strokeColor: '#CC0099',
    strokeOpacity: 1.0,
    strokeWeight: 3,
    geodesic: true,
    map: map
  };
  geodesicPoly = new google.maps.Polyline(geodesicOptions);
  update();}
function update() {
  var path = [marker1.getPosition(), marker2.getPosition()];
  poly.setPath(path);
  geodesicPoly.setPath(path);
  var heading = google.maps.geometry.spherical.computeHeading(path[0],
      path[1]);
  document.getElementById('heading').value = heading;
  document.getElementById('origin').value = path[0].toString();
  document.getElementById('destination').value = path[1].toString();
}
google.maps.event.addDomListener(window, 'load', initialize);
    </script>
  </head>
  <body>
  <center> <div id="map-canvas"></div>
	</b>
  </body> 
</html>


Ach wenn jemand hier den Marker sucht einfach rausscrollen

falls jemand das gleiche Problem wie ich am Anfang hat hier mal meine Lösung
PHP:
<html>
    <head>
        <title></title>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <script src="//ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script>
    </head>
    <body>
        <div id="reloaded"><?php include('Datenbank.php'); ?></div>
        <script>
        setInterval(function(){
		
		
            $.get('Datenbank.php', function(data) {
			
                $('#reloaded').html(data);
			   var lola = data.split('+');
			   	document.write("     "); 
		document.write(lola[0]);
	
			document.write("Latitude");  
			document.write("________");
			document.write(lola[1]);
			
			document.write("Longitude"); 
            });
        }, 1000);

		    </script>
			
		<p>wert</p>
    </body>
	 

</html>
 
Zuletzt bearbeitet:
das Problem hier ist das er natürlich zuerst die endlose Schleife abarbeitet und mier somit nie die Map anzeigt
falsch.

setInterval() erzeugt keine Endlosschleife. es registriert nur ständig callbacks am Call stack, aber der hat zwischendurch Zeit andere Dinge zu tun.

ich tippe weiterhin auf document.write()

dan hab ich das Problem das ich die werte aus dem oberen Script nicht in das untere Script bekomme
alle deine Werte sind 1) lokal, 2) asynchron. du hast keine Werte, die du woanders verwenden könntest.

du hast da zwei asynchrone Skripte, die miteinander 'reden' sollen, da bietet sich z.B. das Observer Pattern an.
 
Man bekommt recht schnell ne Antwort hier das document.write hatt ich schon rausgenomen ich schau mal was ich zu dem Observer Pattern find
 
hab nen anderen weg gefunden mein Problem zu Lösen wobei ich das ändern einer globalen variabeln in einer Funktion nicht mehr versteh ^^

sollte ja alles so gehen wie hier abgebildet
PHP:
var simple = 20;      // eine globale Variable simple
var global = 50;

function abc() {
   var simple = 100;  // die lokale Variable heißt zwar auch simple, aber hat als
                      // lokale Variable den Vorzug. Mit ihr arbeitet die Funktion.
   
   var local = 2000;  // eine lokale Variable
   
   global = 15;       // ändert die globale Variable global
}

//und hier ist die variable global wieder 50

wie auch immer mein Problem ist erst einmal wieder gelöst

thx an alle
 
der sauberere Weg wäre eher:
Code:
marker = new google.maps.Marker({
    map: map,
    draggable: true,
    position: new google.maps.LatLng(lat, long)
});
setInterval(function () {
  $.getJSON(url, function (data) {
    marker.setPosition(new google.maps.LatLng(data.lat, data.long));
  });
}, 1000);
 
Zurück
Oben