Salve, sono giorni che cerco di fare uno script funzionante ma non ne sono capace.
Ho un file kml così strutturato:
codice:
<?xml version="1.0" encoding="UTF-8"?> <kml xmlns="http://earth.google.com/kml/2.0"> <Document> <Placemark> <description> <![CDATA[ <table> <tr><td> <table> <tr><td>User</td><td>Joe Average</td></tr> <tr><td>Activity</td><td>Other 1</td></tr> <tr><td>Route</td><td></td></tr> <tr><td>Start time</td><td>01/06/2008 05:38:51,83</td></tr> <tr><td>Duration</td><td>00:00:09.29</td></tr> <tr><td>Distance</td><td>0.00 km</td></tr> <tr><td>Speed avg</td><td>0.8 km/h</td></tr> <tr><td>Speed max</td><td>0.5 km/h</td></tr> <tr><td>Pace avg</td><td>-- min/km</td></tr> <tr><td>Pace max</td><td>-- min/km</td></tr> </table> </td><td>
</td></tr></table> ]]> </description> <name>01/06/2008 05:35</name> <LookAt> <longitude>10.266193</longitude> <latitude>42.793595</latitude> </LookAt> <visibility>1</visibility> <open>0</open> <Style> <LineStyle><color>ff00ffff</color><width>4</width></LineStyle> <PolyStyle><color>7f00ff00</color></PolyStyle> </Style> <LineString><extrude>1</extrude><altitudeMode>clampToGround</altitudeMode> <coordinates> 10.266193,42.793595,156.0 10.266188,42.793595,155.5 10.266188,42.793597,155.0 10.266188,42.793598,154.5 10.266188,42.793598,154.0 10.266190,42.793598,153.5 10.266190,42.793602,152.5 10.266193,42.793605,152.0 10.266195,42.793608,151.0 </coordinates> </LineString> </Placemark> <Placemark> <name>Start</name> <description> <![CDATA[ ]]> </description> <Style id="start"> <IconStyle id="start"> <Icon><href>root://icons/palette-3.png</href><x>0</x><y>0</y><w>32</w><h>32</h></Icon> </IconStyle> </Style> <Point><coordinates> 10.266193,42.793595,156.0 </coordinates></Point> </Placemark> <Placemark> <name>End</name> <description> <![CDATA[ ]]> </description> <Style id="end"> <IconStyle id="end"> <Icon><href>root://icons/palette-4.png</href><x>160</x><y>128</y><w>32</w><h>32</h></Icon> </IconStyle> </Style> <Point><coordinates> 10.266195,42.793608,151.0 </coordinates></Point> </Placemark> <Placemark> <name>Highest point</name> <description> <![CDATA[ <table> <tr><td>Distance</td><td>0.00 km</td></tr> <tr><td>Speed</td><td>0.3 km/h</td></tr> <tr><td>Pace</td><td>-- min/km</td></tr> <tr><td>Altitude</td><td>156 m</td></tr> <tr><td>Bearing</td><td>270.0</td></tr> </table> ]]> </description> <Style id="highest"> <IconStyle id="highest"> <Icon><href>root://icons/palette-3.png</href><x>96</x><y>64</y><w>32</w><h>32</h></Icon> </IconStyle> </Style> <Point><coordinates> 10.266193,42.793595,156.0 </coordinates></Point> </Placemark> <Placemark> <name>Lowest point</name> <description> <![CDATA[ <table> <tr><td>Distance</td><td>0.00 km</td></tr> <tr><td>Speed</td><td>0.2 km/h</td></tr> <tr><td>Pace</td><td>-- min/km</td></tr> <tr><td>Altitude</td><td>151 m</td></tr> <tr><td>Bearing</td><td>0.0</td></tr> </table> ]]> </description> <Style id="lowest"> <IconStyle id="lowest"> <Icon><href>root://icons/palette-3.png</href><x>96</x><y>64</y><w>32</w><h>32</h></Icon> </IconStyle> </Style> <Point><coordinates> 10.266195,42.793608,151.0 </coordinates></Point> </Placemark> <Placemark> <name>Fastest point</name> <description> <![CDATA[ <table> <tr><td>Distance</td><td>0.00 km</td></tr> <tr><td>Speed</td><td>0.5 km/h</td></tr> <tr><td>Pace</td><td>-- min/km</td></tr> <tr><td>Altitude</td><td>155 m</td></tr> <tr><td>Bearing</td><td>12.6</td></tr> </table> ]]> </description> <Style id="fastest"> <IconStyle id="fastest"> <Icon><href>root://icons/palette-3.png</href><x>96</x><y>64</y><w>32</w><h>32</h></Icon> </IconStyle> </Style> <Point><coordinates> 10.266188,42.793597,155.0 </coordinates></Point> </Placemark> </Document> </kml>
Quello che mi interessa mettere nel database per ogni placemark sono i campi:
name
description
longitude
latitude
coordinates
Ho cercato 2000 forum e post ma non riesco a trovare una spiegazione semplice.
Provando come sotto non mi scrive un bel niente...:
Codice PHP:
$xml = simplexml_load_file('22.kml'); if ($xml != null) { echo "
Success! feed available!
"; } else { echo "
Couldn't fetch the content
"; die; } foreach($xml->Placemark as $placemark) { mysql_unbuffered_query("INSERT INTO kml (name, longitude, latitude, plongitude, platitude, description, coordinates) VALUES (\"$placemark->name\",\"$placemark->longitude\",\"$placemark->latitude\",\"$placemark->plongitude\",\"$placemark->platitude\",\"$placemark->description\",\"$placemark->coordinates\")", $conn); } mysql_close(); echo "records inserted my man!"; die;
Vi prego, un aiutino!