Ver Mensaje Individual
  #1 (permalink)  
Antiguo 03/11/2012, 13:05
dagj
 
Fecha de Ingreso: septiembre-2012
Mensajes: 14
Antigüedad: 12 años, 3 meses
Puntos: 0
Pregunta Reto para programadores, 2 códigos iguales, uno funciona el otro no ¿Por que?

Buenas, a quien le interese y a quien me pueda ayudar, tengo un problema con dos código cuyos procedimientos son iguales, mas sin embargo por alguna razón uno de ellos no esta funcionando.

Acá voy explicando:

Código PHP:
<?php  

require("phpsqlajax_dbinfo.php"); 

// Start XML file, create parent node

$dom = new DOMDocument("1.0");
$node $dom->createElement("markers");
$parnode $dom->appendChild($node); 

// Opens a connection to a MySQL server

$connection=mysql_connect (localhost$username);
if (!
$connection) {  die('Not connected : ' mysql_error());} 

// Set the active MySQL database

$db_selected mysql_select_db($database$connection);
if (!
$db_selected) {
  die (
'Can\'t use db : ' mysql_error());


// Select all the rows in the markers table

$query "SELECT * FROM markers WHERE 1";
$result mysql_query($query);
if (!
$result) {  
  die(
'Invalid query: ' mysql_error());


header("Content-type: text/xml"); 


// Iterate through the rows, adding XML nodes for each

while ($row = @mysql_fetch_assoc($result)){  
  
// ADD TO XML DOCUMENT NODE  
  
$node $dom->createElement("marker");  
  
$newnode $parnode->appendChild($node);   
  
$newnode->setAttribute("id",$row['id']);
    
$newnode->setAttribute("lat"$row['lat']);  
  
$newnode->setAttribute("lng"$row['lng']); 
  
$newnode->setAttribute("name",$row['name']);
  
$newnode->setAttribute("address"$row['address']);  
  
$newnode->setAttribute("type"$row['type']);
  
$newnode->setAttribute("distance"$row['distance']);


echo 
$dom->saveXML();
?>
Este código funciona a la perfección, cuando lo ejecuto el "echo" me muestra el xml con la info.

Por otro lado tengo esto:

Código PHP:

<?php  

require("phpsqlajax_dbinfo.php"); 

// Start XML file, create parent node

$dom = new DOMDocument("1.0");
$node $dom->createElement("distance");
$parnode $dom->appendChild($node); 

// Opens a connection to a MySQL server

$connection=mysql_connect (localhost$username);
if (!
$connection) {  die('Not connected : ' mysql_error());} 

// Set the active MySQL database

$db_selected mysql_select_db($database$connection);
if (!
$db_selected) {
  die (
'Can\'t use db : ' mysql_error());


// Select all the rows in the markers table

$query "SELECT lat1,lng1,lat2,lng2 FROM distancia";
$result mysql_query($query);
if (!
$result) {  
  die(
'Invalid query: ' mysql_error());


header("Content-type: text/xml"); 


// Iterate through the rows, adding XML nodes for each

while ($row = @mysql_fetch_assoc($result)){  
  
// ADD TO XML DOCUMENT NODE  
  
$node $dom->createElement("distanc");  
  
$newnode $parnode->appendChild($node);   
  
$newnode->setAttribute("lat1",$row['lat1']);
  
$newnode->setAttribute("lng1"$row['lng1']);  
  
$newnode->setAttribute("lat2"$row['lat2']); 
  
$newnode->setAttribute("lng2",$row['lng2']);


echo 
$dom->saveXML();
?>
Este también funciona a la perfección, mostrándome con el echo los datos.
Ahora bien, hasta acá lo que funciona, si se fijan ambos códigos se parecen mucho y funcionan, a continuación colo el código donde esta la falla que aun no veo:


Código HTML:
<script src="https://maps.google.com/maps?file=api&v=2&key=ABQIAAAAjU0EJWnWPMv7oQ-jjS7dYxTPZYElJSBeBUeMSX5xXgq6lLjHthSAk20WnZ_iuuzhMt60X_ukms-AUg"
            type="text/javascript"></script>

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

    var iconBlue = new GIcon(); 
    iconBlue.image = 'http://labs.google.com/ridefinder/images/mm_20_blue.png';
    iconBlue.shadow = 'http://labs.google.com/ridefinder/images/mm_20_shadow.png';
    iconBlue.iconSize = new GSize(3, 5);
    iconBlue.shadowSize = new GSize(6, 5);
    iconBlue.iconAnchor = new GPoint(2, 5);
    iconBlue.infoWindowAnchor = new GPoint(3, 1);

    var iconRed = new GIcon(); 
    iconRed.image = 'http://labs.google.com/ridefinder/images/mm_20_red.png';
    iconRed.shadow = 'http://labs.google.com/ridefinder/images/mm_20_shadow.png';
    iconRed.iconSize = new GSize(12, 20);
    iconRed.shadowSize = new GSize(22, 20);
    iconRed.iconAnchor = new GPoint(6, 20);
    iconRed.infoWindowAnchor = new GPoint(5, 1);

    var customIcons = [];
    customIcons["Cuadricula"] = iconBlue;
    customIcons["Subestacion"] = iconRed;

    function load() {
      if (GBrowserIsCompatible()) {
        var map = new GMap2(document.getElementById("map"));
        map.addControl(new GSmallMapControl());
        map.addControl(new GMapTypeControl());
        map.setCenter(new GLatLng(10.900, -63.800), 11);
 
  
 GDownloadUrl("phpsqlajax_genxml3.php", function(data) {
          var xml = GXml.parse(data);
          var markers = xml.documentElement.getElementsByTagName("marker");
          for (var i = 0; i < markers.length; i++) {
            var name = markers[i].getAttribute("name");
            var address = markers[i].getAttribute("address");
            var type = markers[i].getAttribute("type");
            var point = new GLatLng(parseFloat(markers[i].getAttribute("lat")),
			                        (parseFloat(markers[i].getAttribute("lng"))));
			 
            var marker = createMarker(point, name, address, type);
            map.addOverlay(marker);
          }
        });
      }
    }

    function createMarker(point, name, address, type) {
      var marker = new GMarker(point, customIcons[type]);
      var html = "<b>" + "Nombre: "+ type +" "+ name + "</b> <br/>" + address +" KVA" +"</b> <br/>";
      GEvent.addListener(marker, 'click', function() {
        marker.openInfoWindowHtml(html);
      });
      return marker;
	}
	
	
         GDownloadUrl("distancia.php", function (dat) {
	 var xml = GXml.parse(dat);
          var distance = xml.documentElement.getElementsByTagName("distanc");
          for (var i = 0; i < distance.length; i++) {
        var point = new GLatLng(parseFloat(distance[i].getAttribute("lat1")),
			                        (parseFloat(distance[i].getAttribute("lng1"))));
		var point2 = new GLatLng(parseFloat(distance[i].getAttribute("lat2")),
			                        (parseFloat(distance[i].getAttribute("lng2"))));
		
		 	var polyline = new GPolyline([new GLatLng(point) ,  new GLatLng(point2)]);
			 map.addOverlay(polyline);
			 poly.setMap(map);
				 return distanc;
		  

		  }});


Fijense que hay 2 GDownloadUrl, el que llama marcadores y el que llama los puntos para crear una linea.

Cabe explicar que esto llama a google maps, carga unos puntos que están almacenados en la BD y debería crear lineas rectas entre esos puntos, eso también esta en una bd, se que el código funciona porque cuando coloco coordenadas directamente me crea la linea, el problema esta en recibir el archivo xml desde las paginas que tienen las llamadas a la BD, lo extraño del asunto es que la función GDownloadUrl("phpsqlajax_genxml3.php", function(data) funciona bien, recibe el xml con los puntos de la bd y los grafica en google maps, pero la funcion GDownloadUrl("distancia.php", function (dat) aunque es casi similar no esta recibiendo el xml, probe con un echo de las variables y con eso certifique que ese xml no esta llegando.


Si alguien es capaz de resolver esto, se le agradece, tengo tiempo tras este problema ya.