2013-05-02 2 views
0

Google지도에 내 gps 좌표를 자동으로 표시하는 데 문제가 있습니다. 맵을 정적으로 구현하면 모든 것이 잘 작동하지만 지금은 동적으로 시도합니다. 즉, 새로운 GPS 코디가 데이터베이스에 저장 될 때 맵은 자동으로 새로 고쳐 져야합니다.AJAX로 자동 MySQL 쿼리 및 결과 출력

모든 것을 하나의 .php 파일에 구현했습니다. 항목을 선택하는 좌표와지도를 사용자에게 있어야 표시하려면 항목에 대한 링크는 다음과 같습니다 - 나는지도 그것에 하나 새로 고침 I 후 경로를 볼 수있는 첫 번째 새로 고치기 전에>http://trackmyrun1.at/index.php?page=show_runs&data1=get&data2=1

<?php 
    $result = mysql_query("SELECT * FROM fifa_gps WHERE run_id=".$_GET['data2'].""); 

    while ($line = mysql_fetch_array($result)) { 
    $cords[] = "new google.maps.LatLng(" . $line['lat'] . ", " . $line['longt'] . "),"; 
    } 

    $cord_start = explode("(", $cords[0]); 
    $cord_pos_start = explode(")", $cord_start[1]); 

    $cord_end = explode("(", $cords[count($cords)-1]); 
    $cord_pos_end = explode(")", $cord_end[1]); 

    echo $sys->overall_distance($_GET['data2']); 
    ?>  

    <div id="map-canvas" style="height:400px"/> 
    <script type="text/javascript"> 
    var seconds = 1; 
    var divid = "map-canvas"; 
    var url = "http://localhost/alt/FIFA-Europaliga/index.php?page=show_runs&data1=get&data2=<?php echo $_GET['data2']; ?>"; 

      function refreshdiv(){ 

      // The XMLHttpRequest object 

      var xmlHttp; 
      try{ 
      xmlHttp=new XMLHttpRequest(); // Firefox, Opera 8.0+, Safari 
      } 
      catch (e){ 
      try{ 
      xmlHttp=new ActiveXObject("Msxml2.XMLHTTP"); // Internet Explorer 
      } 
      catch (e){ 
      try{ 
      xmlHttp=new ActiveXObject("Microsoft.XMLHTTP"); 
      } 
      catch (e){ 
      alert("Your browser does not support AJAX."); 
      return false; 
      } 
      } 
      } 

      // Timestamp for preventing IE caching the GET request 

      fetch_unix_timestamp = function() 
      { 
      return parseInt(new Date().getTime().toString().substring(0, 10)) 
      } 

      var timestamp = fetch_unix_timestamp(); 
      var nocacheurl = url+"?t="+timestamp; 

      // The code... 

      xmlHttp.onreadystatechange=function(){ 
      if(xmlHttp.readyState==4){ 
      document.getElementById(divid).innerHTML=xmlHttp.responseText; 
      setTimeout('refreshdiv()',seconds*1000); 
      } 
      } 
      xmlHttp.open("GET",nocacheurl,true); 
      xmlHttp.send(null); 
      } 

      // Start the refreshing process 

      var seconds; 
      window.onload = function startrefresh(){ 
      setTimeout('refreshdiv()',seconds*1000); 
      } 
      <!-- 
    refreshdiv(); 
    // --> 
    </script> 
    <script type="text/javascript"> 
    function initialize() { 
    var myLatLng = new google.maps.LatLng(<?php echo $cord_pos_start[0]; ?>); 
    var mapOptions = { 
     zoom: 15, 
     center: myLatLng, 
     mapTypeId: google.maps.MapTypeId.ROADMAP 
    }; 

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

    var flightPlanCoordinates = [ 
     <?php echo implode('', $cords); ?> 
    ]; 

    var image_start = 'http://labs.google.com/ridefinder/images/mm_20_green.png'; 

    var marker = new google.maps.Marker({ 
     position: myLatLng, 
     map: map, 
     title:"Start", 
     icon: image_start  
    }); 

    var image_end = 'http://labs.google.com/ridefinder/images/mm_20_red.png'; 

    var endMarker = new google.maps.Marker({ 
     position: new google.maps.LatLng(<?php echo $cord_pos_end[0]; ?>), 
     map: map, 
     title:"Ende", 
     icon: image_end  
    }); 

    var flightPath = new google.maps.Polyline({ 
     path: flightPlanCoordinates, 
     strokeColor: "#FF0000", 
     strokeOpacity: 0.5, 
     strokeWeight: 5 
    }); 

    flightPath.setMap(map); 
    } 
    initialize(); 
    </script> 
    .... 

이 오류를 얻으십시오 :

Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\Alt\FIFA-Europaliga\content\show_runs.php on line 4

Notice: Undefined variable: cords in C:\xampp\htdocs\Alt\FIFA-Europaliga\content\show_runs.php on line 8

Notice: Undefined offset: 1 in C:\xampp\htdocs\Alt\FIFA-Europaliga\content\show_runs.php on line 9

Notice: Undefined variable: cords in C:\xampp\htdocs\Alt\FIFA-Europaliga\content\show_runs.php on line 11

누군가 나를 도울 수 있습니까?

답변

0

쿼리를 실행하기 전에 서버에 연결하고 데이터베이스를 선택해야합니다.

$db = mysql_connect('hostname|ip', 'user', 'password'); 
mysql_select_db('database_name', $db); 
$result = mysql_query('SELECT ...', $db); 

쿼리가 실패하면 mysql_query는 리소스를 예상하고 부울을 가져 오는 오류를 설명하는 false를 반환합니다.

mysql_fetch_array가 리소스를 필요로한다는 경고는 쿼리가 실패했다는 것을 의미합니다. 이 실패 할 수 있습니다 이유는 다음과 같습니다

  • 표가 존재하지 않는 데이터베이스에
  • 누락 된 권한이 잘못 입력되어 올바른 데이터베이스에 연결되지 않았습니다

    1. 잘못 입력 필드, 쿼리 등 (잘못된 쿼리)

    모든 경우에 mysql_error()을 인쇄하여 오류를 확인할 수 있습니다.

  • +0

    index.php 파일에 databse로 연결됩니다. show_runs 파일이 index.php에 포함 된 다음 querry를 엽니 다. – user2326712

    +0

    다른 가능한 대답은 쿼리가 실패한다는 것입니다. 데이터베이스 서버에서 쿼리를 실행할 수 있습니까? 내 생각 엔 당신이 실수를하게 될 것입니다. – mbarlocker

    +0

    처음 새로 고침하기 전에지도가 표시된 올바른지도를 얻습니다. 두 번째 새로 고침을 실행하면 그 오류가 throw됩니다. – user2326712