Avatar billede koonz Nybegynder
16. juli 2013 - 13:43 Der er 15 kommentarer og
1 løsning

Loope gennem SQL result og tilføje marker til google map

Nedenstående fungerer med kun 1 row i database. Så snart jeg har 2 fejler siden, og jeg får ikke markør nr. 2 placeret - hvorfor ?

<html>
    <META HTTP-EQUIV=Refresh CONTENT="30">
    <head>
        <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
        <script type='text/javascript' src="http://maps.google.com/maps/api/js?sensor=false&.js"></script>
        <style type='text/css'>
            #map {
              width: 1000px;
              height: 1000px;
            }
        </style>
    </head>
    <body>
    <div id="map"></div>

    <script type='text/javascript'>//<![CDATA[

    var map = new google.maps.Map(document.getElementById('map'), {
        zoom: 15,
        center: new google.maps.LatLng(55, 11),
        mapTypeId: google.maps.MapTypeId.ROADMAP
    });

    function placeBallon(lat, lng, high, tim, nam) {

        //alert(" Adding marker " +  lat + "," + lng + "," + tim);

        this.lat = lat;
        this.long = lng;
       
        var location = new google.maps.LatLng(lat, long);
        var marker = new google.maps.Marker({
            position: location,
            title: ""+tim+" "+nam+ " - Ballon height: " + high + " Meters",
            map: map,
            draggable: false
        });
        map.setCenter(location);

    }
    <?php
            while($row = mysql_fetch_array($result))
            {
                echo "placeBallon(" . $row['Latitude'] . "," . $row['Longitude'] . "," . $row['Height'] . ",'" . $row['Log_Time'] . "','" . $row['Log_Name'] . "')";           
            }           
       
    ?> 

    </script>

    </body>
</html>
17. juli 2013 - 06:20 #1
Kan problemet ligge i database udtrækket, således at du rent faktisk kun får en række trukket ud fra databasen?  Du kan jo teste med

$antal = mysql_num_rows($result);
echo $antal;

Hvordan ser din query ud?
Avatar billede koonz Nybegynder
17. juli 2013 - 07:52 #2
Hej

Jeg har lavet nedenstående test, hvor jeg har lagt "while loopet" op efter min SQL (Som jeg har inkluderet) - det fungerer uden problemer, så umiddelbart mener jeg ikke det kan være database udtræk.

        $result = mysql_query("SELECT Log_Name, Log_Time, Latitude, Longitude, Height FROM T_GODREAM") or die(mysql_error()); 
        while($row = mysql_fetch_array($result))
            {
            echo $row['Log_Name'] . "," . $row['Latitude'];
            echo "<br>";
            }           
   
?>



<html>
    <META HTTP-EQUIV=Refresh CONTENT="30">
    <head>
        <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
        <script type='text/javascript' src="http://maps.google.com/maps/api/js?sensor=false&.js"></script>
        <style type='text/css'>
            #map {
              width: 1000px;
              height: 1000px;
            }
        </style>
    </head>
    <body>
    <div id="map"></div>

    <script type='text/javascript'>//<![CDATA[

    var map = new google.maps.Map(document.getElementById('map'), {
        zoom: 15,
        center: new google.maps.LatLng(55, 11),
        mapTypeId: google.maps.MapTypeId.ROADMAP
    });

    function placeBallon(lat, lng, high, tim, nam) {

        //alert(" Adding marker " +  lat + "," + lng + "," + tim);

        this.lat = lat;
        this.long = lng;
       
        var location = new google.maps.LatLng(lat, long);
        var marker = new google.maps.Marker({
            position: location,
            title: ""+tim+" "+nam+ " - Ballon height: " + high + " Meters",
            map: map,
            draggable: false
        });
        map.setCenter(location);

    }
    <?php
            //while($row = mysql_fetch_array($result))
            //{
            //    echo "placeBallon(" . $row['Latitude'] . "," . $row['Longitude'] . "," . $row['Height'] . ",'" . $row['Log_Time'] . "','" . $row['Log_Name'] . "')";           
            //}           
       
    ?> 

    </script>

    </body>
</html>
Avatar billede koonz Nybegynder
17. juli 2013 - 08:00 #3
For at teste en ekstra mulighed, har jeg lagt loopet ned igen, hvor jeg så ikke kalder min funktion, men blot skriver nogle af værdierne ud - igen fejler siden, eller den er i hvert fald tom...
Bemærk jeg har erstattet server oplysninger og login med ? nedenstående.

Kan det være noget med man SKAL lave loopet lige efter query ?
Jeg er desværre ikke så godt hjemme i dette :-(

<?php

  mysql_connect("localhost", "????", "????") or die(mysql_error());
    mysql_select_db("????") or die(mysql_error());
   
        $result = mysql_query("SELECT Log_Name, Log_Time, Latitude, Longitude, Height FROM T_GODREAM") or die(mysql_error()); 
?>



<html>
    <META HTTP-EQUIV=Refresh CONTENT="30">
    <head>
        <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
        <script type='text/javascript' src="http://maps.google.com/maps/api/js?sensor=false&.js"></script>
        <style type='text/css'>
            #map {
              width: 1000px;
              height: 1000px;
            }
        </style>
    </head>
    <body>
    <div id="map"></div>

    <script type='text/javascript'>//<![CDATA[

    var map = new google.maps.Map(document.getElementById('map'), {
        zoom: 15,
        center: new google.maps.LatLng(55, 11),
        mapTypeId: google.maps.MapTypeId.ROADMAP
    });

    function placeBallon(lat, lng, high, tim, nam) {

        //alert(" Adding marker " +  lat + "," + lng + "," + tim);

        this.lat = lat;
        this.long = lng;
       
        var location = new google.maps.LatLng(lat, long);
        var marker = new google.maps.Marker({
            position: location,
            title: ""+tim+" "+nam+ " - Ballon height: " + high + " Meters",
            map: map,
            draggable: false
        });
        map.setCenter(location);

    }
    <?php
            while($row = mysql_fetch_array($result))
            {
                echo $row['Log_Name'] . "," . $row['Latitude'];
                echo "<br>";       
            }           
       
    ?> 

    </script>

    </body>
</html>
17. juli 2013 - 09:14 #4
Det var pokkers - du vil ikke være med til at tælle hvor mange rækker du får ud af din sql query?  Det er da ellers en simpel test, som sagt

$antal = mysql_num_rows($result);
echo $antal;

Jeg forstod fra dit oprindelige spørgsmål, at du får den første række fra databasetabellen korrekt udskrevet (markør placeret.)  I #3, får du da heller ikke værdierne fra den første række udskrevet?
Avatar billede koonz Nybegynder
17. juli 2013 - 10:35 #5
Hej
Jeg kan jo se på min test i #2 at jeg får retuneret de 2 rækker som jeg har i databasen.
Men jeg laver der gerne testen hvis du insisterer - hvor skal jeg indsætte koden.
lige efter min sql sætning som i #2 eller nede i mit script som i #3 ?

Jeg udtryke mig måske ikke helt klart...
Den oprindelige kode i spørgsmålet fungerer hvis jeg kun har en post/row i min database - så snart jeg tilføjer post 2 fejler den...
Dog fungerer koden i #2 udemærket med 2 poster i databasen.
17. juli 2013 - 14:18 #6
Du sagde i dit oprindelige spørgsmål, at koden fungerer når der kun er 1 row i databasen, men når du har 2 (jeg antog, at du mente 2 rows i databasen) får du ikke markør nr. 2 placeret.  Min konklusion var, at du med to rows i databasen stadig fik den første row skrevet ud.  Det var på grund af denne forståelse, at jeg søgte efter mulige forklaringer. Jeg kan nu fra #5 forstå, at med 2 rows i databasen får du ingen markør placeret, heller ikke den første.  Det var jeg for dum til at forstå.  (Det stod velsagtens klart for andre.)

Med min forståelse korrigeret, så forstår jeg nu, at du fra koden i #2 får udskrevet to rækker når der er to rows i databasen.  I så fald ser jeg ingen grund til at prøve med num_rows.  Jeg frafalder mit forslag.

Men hvorfor funktionen placeBallon() i nogle tilfælde (når der kun er en row i databasen) placerer en markør men i andre tilfælde (når der er mere end en row i databasen) ikke placerer nogen markører kan jeg ikke gennemskue.  Du viser ikke, i dit oprindelige spørgsmål, sammenhængen mellem dit databasekald og funktionen.  Et skridt jeg ville foreslå er, i koden #2, erstatter

echo $row['Log_Name'] . "," . $row['Latitude'];

med

echo "placeBallon(" . $row['Latitude'] . "," . $row['Longitude'] . "," . $row['Height'] . ",'" . $row['Log_Time'] . "','" . $row['Log_Name'] . "')";         

og ser, om du så får alle markører med.
Avatar billede koonz Nybegynder
17. juli 2013 - 15:24 #7
Der kan nemt ske misforståelser i det skrevne ;-)


Nu er jeg ikke så meget hjemme i det her php og Java script - Jeg er egentlig ved at programmere en web del, til en mobil applikation (Object-C).

Men....

Efter at have prøvet #6 skriver den egentlig bare nedenstående ud på skærmen - og placerer et kort uden markører.

placeBallon(55.658391,12.600767,0.556755,'12:54:22','Hans')placeBallon(55.658391,12.600767,0.556755,'12:54:22','Ole')

Jeg vil gætte på at funktions kaldet (placeBallon) skal ligge i Java script delen for at det skal fungere efter hensigten - altså at markørene bliver placeret.
17. juli 2013 - 16:09 #8
Det skulle have været

echo placeBallon(" . $row['Latitude'] . "," . $row['Longitude'] . "," . $row['Height'] . ",'" . $row['Log_Time'] . "','" . $row['Log_Name'] . "');         

Altså med et par anførselstegn fjernet.  Jeg kopierede sætningen, med fejlen, fra koden i dit oprindelige spørgsmål.  Jeg har svært ved at tro, at koden i dit oprindelige spørgsmål (når der kun er en row i databasen) genererer en markør.  Jeg tror koden genererer

placeBallon(55.658391,12.600767,0.556755,'12:54:22','Hans')placeBallon(55.658391,12.600767,0.556755

Tager jeg fejl?
Avatar billede koonz Nybegynder
17. juli 2013 - 20:32 #9
Tak for super feedback.
Jeg vil kigge på det - de næste dage er der ferie, så det bliver nok først en gang i næste uge.

Tusinde tak for hjælpen indtil videre, og gode sommerdage :-)
26. juli 2013 - 12:28 #10
Så gik ugen.  Fik du kikket på det?
Jeg tillader mig at oprette dette som svar, ifald du mener at have haft nytte af mine indlæg.  I modsat fald lukker du vel med eget svar.
Avatar billede koonz Nybegynder
26. juli 2013 - 12:42 #11
Jeg skal nok kigge på det, men der er lige løbet en del andet vand gennem åen, efter jeg er hjemvendt fra ferien ;-)
Avatar billede koonz Nybegynder
26. juli 2013 - 12:51 #12
Dit forslag virker desværre ikke..

Nedenstående kode, skriver lognavnet ud på skærmen og placerer markøren på et google maps kort under (Så længe der kun er en markør i databasen naturligvis).
Eksempel her : http://www.blackend.dk/showPositionNew.php

Nu var ideen at få flere markører i databasen, loope dem igennem og få dem placeret på kortet.
Umiddelbart ville jeg jo synes det skulle være lige til, men det er det åbenbart ikke...

//KODE

$result = mysql_query("SELECT Log_Name, Log_Time, Latitude, Longitude, Height FROM T_GODREAM") or die(mysql_error()); 

$row = mysql_fetch_array($result);

echo $row['Log_Name'];
echo "<br>";
?>

<html>
    <META HTTP-EQUIV=Refresh CONTENT="30">
    <head>
        <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
        <script type='text/javascript' src="http://maps.google.com/maps/api/js?sensor=false&.js"></script>
        <style type='text/css'>
            #map {
              width: 1000px;
              height: 1000px;
            }
        </style>
    </head>
    <body>
    <div id="map"></div>

    <script type='text/javascript'>//<![CDATA[

    var map = new google.maps.Map(document.getElementById('map'), {
        zoom: 15,
        center: new google.maps.LatLng(55, 11),
        mapTypeId: google.maps.MapTypeId.ROADMAP
    });

    function placeBallon(lat, lng, high, tim, nam) {

        //alert(" Adding marker " +  lat + "," + lng + "," + tim);

        this.lat = lat;
        this.long = lng;
       
        var location = new google.maps.LatLng(lat, long);
        var marker = new google.maps.Marker({
            position: location,
            title: ""+tim+" "+nam+ " - Ballon height: " + high + " Meters",
            map: map,
            draggable: false
        });
        map.setCenter(location);

    }
    <?php
        echo "placeBallon(" . $row['Latitude'] . "," . $row['Longitude'] . "," . $row['Height'] . ",'" . $row['Log_Time'] . "','" . $row['Log_Name'] . "')";
    ?> 

    </script>

    </body>
</html>
Avatar billede koonz Nybegynder
26. juli 2013 - 13:06 #13
Lavede en test, med kun 1 record i databasen og uden at ændre andet end nedenstående
Følgende placerer en markør på kortet

  <?php
        $row = mysql_fetch_array($result);
        echo "placeBallon(" . $row['Latitude'] . "," . $row['Longitude'] . "," . $row['Height'] . ",'" . $row['Log_Time'] . "','" . $row['Log_Name'] . "')";

    ?> 


Følgende fungerer ikke (Siden er blank)

    <?php
        while($row = mysql_fetch_array($result))
        {
        echo "placeBallon(" . $row['Latitude'] . "," . $row['Longitude'] . "," . $row['Height'] . ",'" . $row['Log_Time'] . "','" . $row['Log_Name'] . "')";
        }
    ?>
27. juli 2013 - 18:47 #14
Jamen velkommen tilbage.  Jeg håber du har haft en god ferie.

Jeg skal lige have taget tråden op igen.  Jeg lader #13 ligge for nu.  Du siger, at med kun en række i databasen resulterer koden #12 i at kortet tegnes og markøren vises.  Hvis nu du har to eller flere rækker i databasen, så skulle koden meget gerne resultere i det samme, nemlig at markøren fra den første række vises.  Kan du bekræfte det?  Hvis det er således, at med koden i #12 og to rækker i databasen vises ingen af markørerne, så er der næsten magik med i spillet.  Hvis du med to rækker i databasen og koden i #12 får den første markør, så er det måske til at finde ud af.  Jeg ved godt, at det du vil opnå ikke er at få den første markør, men dem alle, men med to rækker i databasen og koden #12, er det så hvad diu får. den første markør vist?
03. august 2013 - 09:02 #15
Jeg skal bakke ud.  Du oprettede spørgsmålet, men jeg kan forstå, at du ikke for tiden har tid til at gøre det færdigt. 

Så må vi jo håbe på, at andre kommer ind senere.  Men chancen for at få indlæg fra andre på denne tråd er nok ringe, fordi den nu er nogen tid gammel.  Jeg vil foreslå, at du lukker tråden (med eget svar) og så, når tiden er inde, opretter et frisk spørgsmål, som så vil få frisk opmærksomhed.
Avatar billede koonz Nybegynder
29. september 2013 - 12:52 #16
Desværre fik jeg aldrig tid til at afslutte projektet.
Det er indtil videre sat på hold - måske jeg tager det op igen.

Jeg har en dog en ide om at det skal gøres anderledes.
Forløbig tak for hjælpen.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester