[Javascript] help me !!! array da php a java

  • Creatore Discussione Creatore Discussione echoes
  • Data di inizio Data di inizio

echoes

Nuovo Utente
10 Ott 2015
5
5
0
sto praticamente impazzendo: ho modificato un file di google che prelevava i dati da un array per trasformarli in coordinate, cercando di prelevare i dati da un database ma sia in fase di dichiarazione che di riempimento dell'array non funziona.

PHP:
<!DOCTYPE html>
<html>
  <head>
    <meta name="viewport" content="initial-scale=1.0, user-scalable=no">
    <meta charset="utf-8">
	<script type="text/javascript" src="jquery.js"></script> <!-- funzioni base di jquery -->
    <title>Complex icons</title>
    <style>
      html, body {
        height: 100%;
        margin: 0;
        padding: 0;
      }
      #map {
        height: 100%;
      }
	</style>
	<script type="text/javascript"> 
	miabeaches = new array(); // non la esegue
	</script>	
  </head>
  <body>
    <div id="map"></div>


    <script language="javascript" type="text/javascript">
<!--
 
function initMap() {
// codime mio inizio
	
	   // var miabeaches = new array();
	 
    
<?php 
        $query1 = mysql_query("SELECT * FROM utenti where (id>=1 and id<=3)"); 

    while($row=mysql_fetch_array($query1)){ 
	        
		?>	
		
		miabeaches[<?php echo $row["id"]; ?>]="<?php echo $row["lat"]; ?>"; // non la esegue	
		
		<?php
	    }	
        ?>		
	for (var i = 0; i < miabeaches.length; i++) {
    var miabeach = miabeaches[i];
      
    }
// codice mio fine	 



 var map = new google.maps.Map(document.getElementById('map'), {
    zoom: 14,
    center: {lat: 40.4600608, lng: 17.2607627}
  });

  setMarkers(map);
}
 
Ultima modifica di un moderatore:
  • Like
Reactions: ottofonsuppost
ho fatto qualche modifica al codice.... le variabili me le passa... ma con gli array proprio non ne vuole sapere... appena inserisco qualcosa tipo variabile=....... quindi le parentesi per l'array.... non funziona....
 
  • Like
Reactions: ottofonsuppost
Ma perchè non usi la notazione json che è più semplice, che poi è quella che usa pure Google?

PHP:
miabeach[<?php echo (int)$row['id']; ?>] = <?php echo json_encode( array( 'lat' => $row['lat'] )); ?>;

Che ti torna un array di array in cui miabeach[0] = { lat : 40.4600608 };
Per usarlo usi che so var latitude = miabeach[0].lat;

Che poi ti manca la longitudine, ora non so se esiste nel tuo database ( senza ti voglio vedere a trovare la spiaggia ) ma se c'è come penso ci sia, ti basta fare
PHP:
miabeach[<?php echo (int)$row['id']; ?>] = <?php echo json_encode( array( 'lat' => $row['lat'], 'lng' => $row['log'] )); ?>;
per avere miabeach[0] = { lat : 40.4600608, lng : 17.2607627 };

Attento al casting che ho inserito in PHP, le variabili se non specificato prendono si il tipo d'origine, ma ID nel database sarà pure un intero, ma nel passaggio dopo la lettura non sai affatto se è stato trasformato in una stringa, e dato che id deve essere per forza un intero dato che l'indice di un array in javascript non può essere altro lo forzi con (int) davanti al valore della variabile.
 
  • Like
Reactions: ottofonsuppost
Ma perchè non usi la notazione json che è più semplice, che poi è quella che usa pure Google?

PHP:
miabeach[<?php echo (int)$row['id']; ?>] = <?php echo json_encode( array( 'lat' => $row['lat'] )); ?>;

Che ti torna un array di array in cui miabeach[0] = { lat : 40.4600608 };
Per usarlo usi che so var latitude = miabeach[0].lat;

Che poi ti manca la longitudine, ora non so se esiste nel tuo database ( senza ti voglio vedere a trovare la spiaggia ) ma se c'è come penso ci sia, ti basta fare
PHP:
miabeach[<?php echo (int)$row['id']; ?>] = <?php echo json_encode( array( 'lat' => $row['lat'], 'lng' => $row['log'] )); ?>;
per avere miabeach[0] = { lat : 40.4600608, lng : 17.2607627 };

Attento al casting che ho inserito in PHP, le variabili se non specificato prendono si il tipo d'origine, ma ID nel database sarà pure un intero, ma nel passaggio dopo la lettura non sai affatto se è stato trasformato in una stringa, e dato che id deve essere per forza un intero dato che l'indice di un array in javascript non può essere altro lo forzi con (int) davanti al valore della variabile.

Ti ringrazio e provo subito
 
  • Like
Reactions: ottofonsuppost
Ma perchè non usi la notazione json che è più semplice, che poi è quella che usa pure Google?

PHP:
miabeach[<?php echo (int)$row['id']; ?>] = <?php echo json_encode( array( 'lat' => $row['lat'] )); ?>;

Che ti torna un array di array in cui miabeach[0] = { lat : 40.4600608 };
Per usarlo usi che so var latitude = miabeach[0].lat;

Che poi ti manca la longitudine, ora non so se esiste nel tuo database ( senza ti voglio vedere a trovare la spiaggia ) ma se c'è come penso ci sia, ti basta fare
PHP:
miabeach[<?php echo (int)$row['id']; ?>] = <?php echo json_encode( array( 'lat' => $row['lat'], 'lng' => $row['log'] )); ?>;
per avere miabeach[0] = { lat : 40.4600608, lng : 17.2607627 };

Attento al casting che ho inserito in PHP, le variabili se non specificato prendono si il tipo d'origine, ma ID nel database sarà pure un intero, ma nel passaggio dopo la lettura non sai affatto se è stato trasformato in una stringa, e dato che id deve essere per forza un intero dato che l'indice di un array in javascript non può essere altro lo forzi con (int) davanti al valore della variabile.

ti inserisco nuovo codice che ancora non produce il risultato :
PHP:
<?php
include("config.inc.php"); //parametri di connessione al database
?>
<!DOCTYPE html>
<html>
  <head>
    <meta name="viewport" content="initial-scale=1.0, user-scalable=no">
    <meta charset="utf-8">
	<script type="text/javascript" src="jquery.js"></script> <!-- funzioni base di jquery -->
    <title>Complex icons</title>
    <style>
      html, body {
        height: 100%;
        margin: 0;
        padding: 0;
      }
      #map {
        height: 100%;
      }
	</style>
	<script type="text/javascript"> 
	alert("ok dichiara");
	miabeaches = new array();
    
	</script>	
  </head>
  <body>
    <div id="map"></div>


    <script language="javascript" type="text/javascript">
<!--

function initMap() {

 var map = new google.maps.Map(document.getElementById('map'), {
    zoom: 14,
    center: {lat: 40.4600608, lng: 17.2607627}
  });

  setMarkers(map);
}
  
	 i=0; 
<?php 
    $query1 = mysql_query("SELECT * FROM utenti where (id>=1 and id<=3)"); 

    while($row=mysql_fetch_array($query1)){ 
	        
		?>	
		miabeaches[i] = <?php echo json_encode( array( 'title' => $row['via'], 'lat' => $row['lat'], 'lng' => $row['lng'], 'zindex' => $row['id'] )); ?>;
		i++;
		<?php
	    }	
        ?>		
	
function setMarkers(map) {
  var image = {
    url: 'd01.png',
    // This marker is 20 pixels wide by 32 pixels high.
    size: new google.maps.Size(20, 32),
    // The origin for this image is (0, 0).
    origin: new google.maps.Point(0, 0),
    // The anchor for this image is the base of the flagpole at (0, 32).
    anchor: new google.maps.Point(0, 32)
  };
  var shape = {
    coords: [1, 1, 1, 20, 18, 20, 18, 1],
    type: 'poly'
  };

    for (var i = 0; i < miabeaches.length; i++) {
    var marker = new google.maps.Marker({
      position: {lat: miabeaches[i].lat, lng: miabeaches[i].lng},
      map: map,
      icon: image,
      shape: shape,
      title: miabeaches[i].title,
      zIndex: miabeaches[i].zindex
    });
  }
  

}

    </script>
    <script async defer
	    src="https://maps.googleapis.com/maps/api/js?key=AIzaSyAtKhnrNidgFv7jU6AiPDJjGAjLMr4sJXQ&signed_in=true&callback=initMap"></script>
        
  </body>
</html>
 
Ultima modifica di un moderatore:
  • Like
Reactions: ottofonsuppost
ciao
prova a scriverla completamente in php
PHP:
<?php
$query1 = mysql_query("SELECT * FROM utenti where (id>=1 and id<=3)");
$i=0;
while($row=mysql_fetch_array($query1)){
 echo "miabeaches[$i] =".json_encode( array( 'title' => $row['via'], 'lat' => $row['lat'], 'lng' => $row['lng'], 'zindex' => $row['id'] )).";";
$i++;
}
?>
 
  • Like
Reactions: ottofonsuppost
ma mi serve l'array java... e non riesco a capire perchè se uso normali variabili vanno bene ma appena uso qualcosa che assomiglia ad un array ( quindi mettendo le [] )..... non funziona
 
  • Like
Reactions: ottofonsuppost
Ciao, questa sintassi è sbagliata
Codice:
miabeaches = new array(); // non la esegue
array in javascript si srive con la maiuscola altrimenti non verrà mai inizializzato
Codice:
var miabeaches = new Array();
Io comunque abbandonerei questa strada e proverei con Ajax, qui trovi una funzione jeuery che fa al caso tuo.
Ti consiglio inoltre di aprire la console del browser e seguire gli errori che ti indica.
 
  • Like
Reactions: ottofonsuppost

Discussioni simili