XML - en localhost funciona pero en internet no

 
Vista:
sin imagen de perfil

en localhost funciona pero en internet no

Publicado por cotarejo (4 intervenciones) el 16/07/2015 23:07:49
Buenas noches, tengo creado un fichero en php que crea un XML para generar puntos de interes en google maps. el fichero se llama generarXMLMarks.php y es así:

<?php


require 'conexiones.php';

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

$sentencia = consultamaps($pdo);

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

while ($row = $sentencia->fetch(PDO::FETCH_ASSOC)){
$node = $dom->createElement("marker");
$newnode = $parnode->appendChild($node);
$newnode->setAttribute("nombre",$row['nombre']);
$newnode->setAttribute("primer_primero", $row['primerprimero']);
$newnode->setAttribute("segundo_primero", $row['segundoprimero']);
$newnode->setAttribute("tercer_primero", $row['tercerprimero']);

$newnode->setAttribute("primer_segundo", $row['primersegundo']);
$newnode->setAttribute("segundo_segundo", $row['segundosegundo']);
$newnode->setAttribute("tercer_segundo", $row['tercersegundo']);


$newnode->setAttribute("primer_postre", $row['primerpostre']);
$newnode->setAttribute("segundo_postre", $row['segundopostre']);
$newnode->setAttribute("tercer_postre", $row['tercerpostre']);

$newnode->setAttribute("cafe", $row['cafe']);
$newnode->setAttribute("pan", $row['pan']);
$newnode->setAttribute("precio", $row['precio']);
$newnode->setAttribute("latitud", $row['latitud']);
$newnode->setAttribute("longitud", $row['longitud']);
}

echo $dom->saveXML();


Y todo correcto, cuando le abro me muestra el XML formado correctamente tal que así:


captura-XML-localhost-funcionando


El caso es que en el mapa de google maps que tiene mi web aparecen los puntos de interes que se generan a través del XML, es decir, todo perfecto y funcionando....

Lo subo a un servidor del instituto para que el profesor pueda verlo y puntuarlo-corregirlo, y observo que en el mapa no me aparecen los puntos de interés... abro directamente la URL y me aparece esto:


captura-XML-internet-no-funcionando


El caso es que se puede pensar que es por algún fallo de la conexión con la BBDD pero no, ya que si miro en el FireBugs en la pestaña de conexiones veo el fichero y lo que me devuelve y es tal que esto:

<?xml version="1.0"?>
<markers><marker nombre="labrador" primer_primero="lentejas" segundo_primero="carne estofada" tercer_primero="alubias pintas" primer_segundo="filete ternera" segundo_segundo="merluza al horno" tercer_segundo="sardinas" primer_postre="platano" segundo_postre="flan" tercer_postre="yogurt" cafe="" pan="" precio="11" latitud="43.4649" longitud="-3.80519"/><marker nombre="bombi" primer_primero="espaguetis" segundo_primero="arroz con bogavante" tercer_primero="paella" primer_segundo="brochetas" segundo_segundo="sardinas" tercer_segundo="huevos con pimientos" primer_postre="queso fresco" segundo_postre="melon" tercer_postre="sandia" cafe="" pan="" precio="12" latitud="43.4667" longitud="-3.78274"/></markers>


Por lo que no sé porqué a nivel local funciona correctamente pero a través de internet no... he cambiado los permisos de las carpetas donde está albergado a 777 y sigue igual... ya no sé qué hacer...

¿¿Alguna idea??

Gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de txema

en localhost funciona pero en internet no

Publicado por txema (2 intervenciones) el 17/07/2015 00:28:09
Hola cotarejo :

Por una parte, Google Maps viene anunciando que los formatos XML no le gustan. JSON es más rápido y flexible en la programación.

En lo que creo que te importa, has de comprobar algo:
localhost/proyect/php/generaXMLMarks.php te genera un XML. ¿tuweb/proyect/php/generaXMLMarks.php te genera el mismo archivo?.
Ten en cuenta que requieres tener en la web la base de datos y generar el archivo correspondiente.

Sería importante muestres el Javascript donde recoges los datos XML para mostrarlos en el mapa
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil

en localhost funciona pero en internet no

Publicado por cotarejo (4 intervenciones) el 17/07/2015 22:35:03
Si efectívamente, puede que google no le gustan los XML estoy de acuerdo, pero no es lógico que un código funcione correctamente en localhost con el WAMP instalado y el mismo código subido a un servidor de internet me genere un error y me diga:

Error de lectura XML: mal formado

El caso es que he pegado todo el código que he hecho en el post anterior, cuando abro el fichero generarXMLMark.php desde localhost me dice esto:


captura-XML-localhost-funcionando


Pero cuando abro el mismo fichero subido al servidor me dice esto:


captura-XML-internet-no-funcionando



Por lo que el fichero generarXMLMark.php desde local me genera el XML al abrirlo en el navegador, pero ese mismo fichero desde la web no funciona me da el error de Error de lectura XML: mal formado


El código que contiene generarXMLMark.php es este:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
<?php
 
require 'conexiones.php';
 
$dom = new DOMDocument("1.0");
$node = $dom->createElement("markers");
$parnode = $dom->appendChild($node);
 
$sentencia = consultamaps($pdo);
 
header("Content-type: text/xml");
 
while ($row = $sentencia->fetch(PDO::FETCH_ASSOC)){
  $node = $dom->createElement("marker");
  $newnode = $parnode->appendChild($node);
  $newnode->setAttribute("nombre",$row['nombre']);
  $newnode->setAttribute("primer_primero", $row['primerprimero']);
  $newnode->setAttribute("segundo_primero", $row['segundoprimero']);
  $newnode->setAttribute("tercer_primero", $row['tercerprimero']);
 
  $newnode->setAttribute("primer_segundo", $row['primersegundo']);
  $newnode->setAttribute("segundo_segundo", $row['segundosegundo']);
  $newnode->setAttribute("tercer_segundo", $row['tercersegundo']);
 
 
  $newnode->setAttribute("primer_postre", $row['primerpostre']);
  $newnode->setAttribute("segundo_postre", $row['segundopostre']);
  $newnode->setAttribute("tercer_postre", $row['tercerpostre']);
 
  $newnode->setAttribute("cafe", $row['cafe']);
  $newnode->setAttribute("pan", $row['pan']);
  $newnode->setAttribute("precio", $row['precio']);
  $newnode->setAttribute("latitud", $row['latitud']);
  $newnode->setAttribute("longitud", $row['longitud']);
}
 
echo $dom->saveXML();
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

en localhost funciona pero en internet no

Publicado por cotarejo (4 intervenciones) el 17/07/2015 22:50:38
El fichero que recoge la información generada en XML y lo trata "javascript" se llama maps.js y tiene esto:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
function load() {
 
      var map = new google.maps.Map(document.getElementById("map"), {
        center: new google.maps.LatLng(43.463509, -3.795022),
        zoom: 13,
        mapTypeId: 'roadmap'
 
      });
 
      var infoWindow = new google.maps.InfoWindow;
 
 
      downloadUrl("php/generaXMLMarks.php", function(data) {
        var xml = data.responseXML;
        var markers = xml.documentElement.getElementsByTagName("marker");
        for (var i = 0; i < markers.length; i++) {
          var nombre = markers[i].getAttribute("nombre");
 
          var primerprimero = markers[i].getAttribute("primer_primero");
          var segundoprimero = markers[i].getAttribute("segundo_primero");
          var tercerprimero = markers[i].getAttribute("tercer_primero");
 
          var primersegundo = markers[i].getAttribute("primer_segundo");
          var segundosegundo = markers[i].getAttribute("segundo_segundo");
          var tercersegundo = markers[i].getAttribute("tercer_segundo");
 
          var primerpostre = markers[i].getAttribute("primer_postre");
          var segundopostre = markers[i].getAttribute("segundo_postre");
          var tercerpostre = markers[i].getAttribute("tercer_postre");
 
 
          var cafevariable = markers[i].getAttribute("cafe");
          if (cafevariable.value === 0) {
                var cafe = "No";
            }else{
                var cafe = "Si";
            }
          var panvariable = markers[i].getAttribute("pan");
          if (panvariable.value === 0) {
                var pan = "No";
            }else{
                var pan = "Si";
            }
          var precio = markers[i].getAttribute("precio");
          var point = new google.maps.LatLng(
              parseFloat(markers[i].getAttribute("latitud")),
              parseFloat(markers[i].getAttribute("longitud")));
              var nombremayusculas = nombre.toUpperCase();
          var html = "Restaurante <b id='destacar2'>" + nombremayusculas + "</b><br/>\n\
           <p>Primer primero: <em class='destacar3'>"+primerprimero+"</em><br>Segundo primero: <em class='destacar3'>"+segundoprimero+"</em><br>Tercer primero:<em class='destacar3'>"+tercerprimero+"</em><br>Primer segundo:<em class='destacar3'> "+primersegundo+"</em><br>Segundo segundo: <em class='destacar3'>"+segundosegundo+"</em><br>Tercer segundo: <em class='destacar3'>"+tercersegundo+"</em><br>Primer postre: <em class='destacar3'>"+primerpostre+"</em><br>Segundo postre: <em class='destacar3'>"+segundopostre+"</em><br>Tercer postre: <em class='destacar3'>"+tercerpostre+"</em><br>Café: <em class='destacar3'>"+cafe+"</em><br>Pan: <em class='destacar3'>"+pan+"</em><br>Precio: <em class='destacar3'>"+precio+"€</em></p><br>";
          var mouseover = "Restaurante <b>"+nombre+"</b>";
          var marker = new google.maps.Marker({
            map: map,
            position: point,
            icon: "img/icono.png"
          });
 
 
          bindInfoWindow(marker, map, infoWindow, html);
          hover(marker, map, infoWindow, mouseover);
          }
        });
       }
 
     marker.setIcon('img/icono.png');
 
    function bindInfoWindow(marker, map, infoWindow, html) {
      google.maps.event.addListener(marker, 'click', function() {
        infoWindow.setContent(html);
        infoWindow.open(map, marker);
      });
    }
 
    function hover(marker, map, infoWindow, html) {
      google.maps.event.addListener(marker, 'mouseover', function() {
        infoWindow.setContent(html);
        infoWindow.open(map, marker);
      });
    }
 
    function downloadUrl(url, callback) {
      var request = window.ActiveXObject ?
          new ActiveXObject('Microsoft.XMLHTTP') :
          new XMLHttpRequest;
 
      request.onreadystatechange = function() {
        if (request.readyState === 4) {
          request.onreadystatechange = doNothing;
          callback(request, request.status);
        }
      };
 
      request.open('GET', url, true);
      request.send(null);
    }
    function doNothing() {}
    //]]>

¿¿¿ Porqué puede ser que desde el firefox en localhost con wamp funcione todo correctamente pero desde el servidor web en internet no funcione???


Gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de txema

en localhost funciona pero en internet no

Publicado por txema (2 intervenciones) el 18/07/2015 10:36:18
Dado que comenzamos por el error en generarXMLMark.php (estimo que el error de la columna 295 sea el cierre de la línea), comenzaría por cambiar en tu archivo la línea header("Content-type: text/xml"); inmediantamente después de <?php incluso por encima del require

Si con ello sigue apareciendo el mismo u otro error, optaría por cambiar los signos < > " ' & por &lt; &gt; &quot; &39; &amp; mediante str_replace() respectivamente.

Nos comentas si aparecen nuevos errores en el archivo generarXMLMark.php

Una vez se corrijan los errores, nos comentas si se solucionan los problemas o, en su caso, aparecen otros en el Javascript
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil

en localhost funciona pero en internet no

Publicado por cotarejo (4 intervenciones) el 18/07/2015 12:30:31
Buenos días, por fin funcionando!!! cambié la cabecera por encima del require y seguia dando el mismo fallo... me fijé en que había uno de los campos que estaba vacío "sigo sin enternder porqué ya que con esa misma consulta en localhost funcionaba correctamente" el caso es que de los campos que aparecían vacíos los quité de la consulta, también del javascript y del XML y ahora funciona correctamente.



GRACIAS!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar