Javascript Ausgabe Problem zwischen php4 und php5

sid61

Mitglied
Hallo,
wieder mal ein Problem, was ich nicht lösen kann. Ich habe ein kleines Script, welches mir die Daten und Koordinaten von verschiedenen Immobilien ausgibt.

Mit PHP4 klappt das ganz prima und ohne Probleme. Nun habe ich das ganze unter PHP5 installiert und siehe da, Es werden alle Daten korrekt ausgelesen, aber die Map wird nicht mehr angezeigt. Ich habe nun einige Stunden herum experimentiert, verstehe aber nicht, warum die Map nicht angezeigt wird..

Hier ist der Code, der eigentlich funktioniert - jedenfalls unter php4 läuft es super..

Ich habe mal die Stelle im Code markiert, welche ich auskommentiert hatte. Danach wurde mir zumindest die Map angezeigt.

Code:
<?
include ("livecode.php");
// define vars
$name = '';
$lat = '';
$lon = '';
$type = '';
$id = '';

// Get the javascript defining the points after inserting.

############# Wenn ich diese nachfolgende eine Zeile entferne, 
wird mir die Map angezeigt, weil ja keine Daten mehr gesetzt werden 
werden. Irgendwas läuft mit dieser einen Zeile anders, als es bei php4 
der Fall ist. Sobald ich diese Zeile wieder aktiviere, werden alle 
Datensätze korrekt angezeigt, aber die Karte nicht mehr ... 
##########################################

$jsPointsArray = getPointsJS();

#########################################################

$pageHTML = <<<EOH

// Pagestart
<head>

<script src="http://maps.google.com/maps?file=api&amp;v=2&amp;key=$key" type="text/javascript"></script>
</script>
</head>
<body onload="load()" onunload="GUnload()">
<div id="map" style="width: 820px; height: 480px">
<script type="text/javascript">
var mArray = Array();
var map;

function load() {
      	doLoad();
	$jsPointsArray
	addMarkers();
}
function doLoad() {
	if (GBrowserIsCompatible()) {
	   map = new GMap2(document.getElementById("map"));
          map.addControl(new GLargeMapControl());
          map.addControl(new GScaleControl());
          map.addMapType(G_PHYSICAL_MAP);
          // Nachfolgender Output zeigt entsprechende Wunschmap an (Style).. 
          // *  G_NORMAL_MAP normale, 2D Google Maps
          // * G_SATELLITE_MAP Photo Map
          // * G_HYBRID_MAP Map mit Photo und Plan
          // * G_PHYSICAL_MAP Gelaende Map
          map.setCenter(new GLatLng(51.49506473014368,10.37109375), 5, G_PHYSICAL_MAP);
	   map.addControl(new GMapTypeControl());
	   GEvent.addListener(map, 'click', mapClick);
          var overV=new GOverviewMapControl(new GSize(180, 120))
             
             
             map.addControl(overV);
       }
}

var gmarkers = [];
var htmls = [];
var i = 0;

var baseIcon = new GIcon();
baseIcon.iconSize=new GSize(32,32);
baseIcon.shadowSize=new GSize(32,32);
baseIcon.iconAnchor=new GPoint(16,32);
baseIcon.infoWindowAnchor=new GPoint(10,0);

function addMarkers() {
	if (mArray.length) {
		var bounds = new GLatLngBounds();
		for (n=0 ; n < mArray.length ; n++ ) {
			var mData = mArray[n].split(';');
			var point = new GLatLng(mData[0],mData[1]);
			bounds.extend(point);
                     var luder = (mData[2]);
                     var icon = new GIcon(baseIcon,"/images/estate/realestate"+luder+".png");
                     var marker = createMarker(point, icon, mData[3], mData[4], mData[5], mData[6], mData[7],mData[8]);
			map.addOverlay(marker);
                    
                                                 
		}
		map.setCenter(bounds.getCenter(), map.getBoundsZoomLevel(bounds)); 
	}
}

function createMarker(point, icon, title, category, id, agent, thumb, agentphone) {
	var marker = new GMarker(point, {icon:icon,title:title});
	GEvent.addListener(marker, "click", function() {
		marker.openInfoWindowHtml('<div style="width:250px; height:305px"><img src="/components/com_wohnraum24/img/thb/'+ thumb +'"></img><table class="yellowbox" width="250px" border="0" cellspacing="1" cellpadding="2"><tr><td width="14%"><img src="http://www.tutorials.de/forum/images/home.png" alt="Object Title and Type" width="24" height="24" align="middle" /></td><td width="86%" valign="middle"><b>' + title + '</b><br>Property Type:&nbsp;' + category + '</td></tr></table><p><table class="greenbox" width="250px" border="0" cellspacing="1" cellpadding="2"><tr><td width="14%"><img src="http://www.tutorials.de/forum/images/zoom-in.png" alt="Detailview" width="24" height="24" align="middle" /></td><td width="86%" valign="middle"><a href="/index.php?option=com_wohnraum24&task=view&id=' + id + '" target="_blank"><center><img id="showdetail" src="http://www.tutorials.de/forum/images/showdetail.png" width="118" height="28" hspace="0" vspace="0" border="0" alt="Show Details"></a><center></td></tr></table><b>Contact your Agent:</b><table class="bluebox" width="250px" border="0" cellspacing="1" cellpadding="2"><tr><td width="14%"><img src="http://www.tutorials.de/forum/images/user.png" alt="Your Agent" width="24" height="24" align="middle" /></td><td width="86%" valign="middle">'+ agent + '</td></tr><tr><td width="14%"><img src="http://www.tutorials.de/forum/images/call-accept.png" alt="Call us" width="24" height="24" align="middle" /></td><td width="86%" valign="middle">'+ agentphone + '</td></tr></table></div>');});
	
return marker;
}
function mapClick(marker, point) {
	if (!marker) {
		oLat = document.getElementById("lat");
		oLat.value = point.y;
		oLon = document.getElementById("lon");
		oLon.value = point.x;
		oDesc = document.getElementById("name");
		oDesc.value = 'name';
                
	}
}
</script>
</div>
</body>
</html>
EOH;
print $pageHTML;
function getPointsJS() {
include ("livecode.php");
 mysql_connect($host,$user,$password);
	@mysql_select_db($database) or die( "Unable to select database");
	$sql = "SELECT j.`id`, j.`type` AS type2, j.`name`, j.`postcode`, j.`state`, j.`lat`, j.`lon`, jt.`name` AS category, ja.`name` AS agent, ja.`mobile` AS agentphone, jh.`thumb` FROM jos_hp_properties j, jos_hp_prop_types jt, jos_hp_agents ja, jos_hp_photos jh WHERE  j.lat <> 0.00000000 AND j.lon <> 0.00000000 AND jh.property=j.id AND jh.ordering=1 AND jt.id=j.type AND ja.id=j.agent";
	$result = mysql_query($sql) or DBError("LINE: " .__LINE__. " $sql");
	$nRows = mysql_num_rows($result);

	$javaScript = '';
	if ($nRows) {
		while ($row = mysql_fetch_assoc($result)) {
			$row{'type2'}= htmlspecialchars(htmlentities($row{'type2'}));
                        $row{'name'} = htmlspecialchars(htmlentities($row{'name'}));
		        $row{'name'} = str_replace(';',',',$row{'name'});
                        $row{'type'}= htmlspecialchars(htmlentities($row{'type'}));
                        $row{'state'}= htmlspecialchars(htmlentities($row{'state'}));
                        $row{'category'}= htmlspecialchars(htmlentities($row{'category'}));
                        $row{'agent'}= htmlspecialchars(htmlentities($row{'agent'}));
                        $row{'id'}= $row{'id'};
			$javaScript .= "mArray.push('{$row{'lat'}};{$row{'lon'}};{$row{'type2'}};{$row{'name'}};{$row{'category'}};{$row{'id'}};{$row{'agent'}};{$row{'thumb'}};{$row{'agentphone'}}')\n";
                                         
		}
		print "<h3><span class=\"style6\">Nachfolgend Ihre gesuchten Immobilien..</span></h3>\n";
		}
	else {
		print "<h3><span class=\"style6\">Es gibt keine Immobilien zu dieser Abfrage..</span></h3>\n";
	}
	return $javaScript;
}
function assertTable() {
}
function DBError($sql){
	print "Error: \n" . mysql_error() . "\n";
	print "<hr>\n";
	print "$sql\n";
	print "<hr>\n";
	exit;
}
?>

Was mache ich falsch ?
Kann mir jemand was dazu sagen

Gruss Kasimir
 
Zuletzt bearbeitet:

Sven Mintel

Mitglied
Moin,

ich glaube nicht, dass es sich dort um ein JS-Problem handelt, JS bekommt nichts davon mit, was auf dem Server vor sich geht....wahrscheinlicher ist, dass unter PHP5 ein Fehler entsteht, welcher JS danach in die Knie zwingt.

Das Beispiel nachzustellen ist etwas kompliziert ohne die Daten aus der DB, es wäre daher gut, wenn du den Quelltext, so wie er im Browser vorhanden ist, posten könntest.
Evtl. dazu noch das funktionierende Beispiel mit PHP4...damit man einen Vergleich hat.