2010-01-21 6 views
1

Bonjour Cher StackOverflowers,PHP loop inside Javascript à l'entête - ce code est-il valide?

Je suis nouveau à la programmation Web et de trouver le mélange de serveur-client confus. J'ai écrit un code très simple qui accepte un tableau PHP 2D [index] [clés] (à partir d'une requête) pour dessiner des marqueurs sur une carte Google (JavaScript). Ça marche. Mais ça ne me semble pas juste! Est-ce vraiment la bonne façon de passer les valeurs de mon tableau PHP dans les fonctions Javascript?

Merci à l'avance Ari


Modifier à nouveau pour plus de clarté, a ajouté 4 espaces, merci pour les conseils!

<head> 

<meta http-equiv="content-type" content="text/html; charset=utf-8"> 

<title><?php echo $title;?></title 

<script src="http://maps.google.com/maps?file=api&amp;v=2&amp;sensor=false&amp;key=GoogleMapsKey" 
type="text/javascript"> 

</script> 

<script type="text/javascript" language="JavaScript"> 

var m_map; 

//Add one marker. 
function addmarker(iLat, iLon) 
{ 
var point = new GLatLng(iLat, iLon); 
m_map.addOverlay(new GMarker(point)); 
} 


function initialize() 

{ 

if (GBrowserIsCompatible()) 
{ 

    m_map = new GMap2(document.getElementById("map_canvas")); 
    m_map.setCenter(new GLatLng(37.4419, -122.1419), 1); 
    m_map.setUIToDefault(); 

    <?php foreach($query as $item):?> 

    var oLat = '<?php echo $item['lat'];?>'; 
    var oLon = '<?php echo $item['lon'];?>'; 

    addmarker(oLat, oLon); 

    <?php endforeach;?> 

} 
}// End initialize() 

</script> 
</head> 

<body onload="initialize()" onunload="GUnload()"> 
<div id="map_canvas" style="width: 500px; height: 300px" ></div> 
+1

Préfixe avec 4 espaces ou 1 onglet pour formater une section en tant que code. Regardez l'aperçu avant de poster. – kennytm

+0

Merci beaucoup, maintenant je l'ai eu !!! – BeMeCollective

Répondre

1
<?php 
foreach($query as $item):?> 

    var oLat = '<?php echo $item['lat'];?>'; 
    var oLon = '<?php echo $item['lon'];?>'; 

    addmarker(oLat, oLon); 

    <?php endforeach;?> 

Le segment de code ci-dessus doit fournir une sortie suivante si vous avez défini la variable $ requête comme $ query = array (array ('lat' => 2, 'lon' => 4), array ('lat '=> 5,' lon '=> 6), array (' lat '=> 7,' lon '=> 8), array (' lat '=> 9,' lon '=> 1));


var oLat = '2'; var oLon = '4';

addmarker (oLat, oLon);

var oLat = '5'; var oLon = '6';

addmarker (oLat, oLon);

var oLat = '7'; var oLon = '8';

addmarker (oLat, oLon);

var oLat = '9'; var oLon = '1';

addmarker (oLat, oLon);

Vérifiez la page source html.

1

Il ne semble pas y avoir de problème intrinsèque avec votre code. Pouvez-vous fournir la sortie?

+0

Salut, je suis désolé, besoin d'éditer une partie du code que la plupart ne montre pas. Je travaille dessus, en remplaçant BeMeCollective

1

Le navigateur ne se soucie pas de savoir comment les valeurs, les structures et même le code y parviennent, à condition que ce soit du JavaScript valide.

1

J'écris:

<?php foreach($query as $item):?> 

addmarker('<?php echo $item['lat'];?>', '<?php echo $item['lon'];?>'); 

<?php endforeach;?> 

parce qu'il est plus concis et il ne déclare pas les deux variables JS plus d'une fois.