2012-10-18 2 views
0

Je suis désolé s'il existe un autre article similaire, mais il est difficile de formaliser une question avec mon problème. J'ai donc une page avec Google Maps et deux formulaires qui peuvent ajouter des points sur la carte avec des informations supplémentaires. Une forme fonctionnant très bien, une autre pas très bien. Ma langue est lituanienne, donc j'ai des caractères spéciaux comme 'ąčęėįšųū', et avec la deuxième forme après soumettre j'ai de mauvaises valeurs dans la base de données comme '%u0117%u0161'.La publication de données dans la base de données via javascript entraîne des problèmes d'encodage

enter image description here

Dans l'image numéro 1., ce formulaire fonctionne bien. Numéro 2. est la forme qui fait des problèmes d'encodage, et le numéro 3. est le résultat après soumettre numéro de formulaire 2.

Pour la deuxième forme j'ai utilisé le tutoriel Google (https://developers.google.com/maps/articles/phpsqlinfo_v3), et édité quelques petites choses.

Donc je serais reconnaissant si quelqu'un m'aidera à résoudre ce problème.

code Javascript:

function initMap() { 
map = new google.maps.Map(document.getElementById("map"), { 
zoom: 0, 
center: new google.maps.LatLng(55.203953, 24.873047), 
mapTypeId: google.maps.MapTypeId.ROADMAP, 
mapTypeControl: true, 
panControl: true, 
mapTypeControlOptions: { 
style: google.maps.MapTypeControlStyle.HORIZONTAL_BAR 
}, 
navigationControl: true, 
navigationControlOptions: { 
style: google.maps.NavigationControlStyle.SMALL 
} 
}); 


var html = "<table>" + 
       "<tr><td>Pavadinimas:</td> <td><input type='text' name='name' id='name'/> </td> </tr>" + 
       "<tr><td>Miestas:</td> <td><input type='text' name='city' id='city'/></td> </tr>" + 
       "<tr><td>Adresas:</td> <td><input type='text' name='adress' id='adress'/></td> </tr>" + 
       "<tr><td>Apibudinimas:</td> <td><input type='text' name='description' id='description'/></td> </tr>" + 
       "<tr><td>Type:</td> <td><select id='type'>" + 
       "<option value='Baras' SELECTED>Baras</option>" + 
       "<option value='Restoranas'>Restoranas</option>" + 
       "<option value='Degalinė'>Degalinė</option>" + 
       "</select> </td></tr>" + 
       "<tr><td></td><td><input type='button' value='Save & Close' onclick='saveData()'/></td></tr>"; 

    infowindow = new google.maps.InfoWindow({ 
    content: html 
    }); 

    google.maps.event.addListener(map, "click", function(event) { 
     marker = new google.maps.Marker({ 
      position: event.latLng, 
      map: map 
     }); 
     google.maps.event.addListener(marker, "click", function() { 
      infowindow.open(map, marker); 
     }); 
    }); 

center = bounds.getCenter(); 
map.fitBounds(bounds); 

    } 

    function saveData() { 
     var name = escape(document.getElementById("name").value); 
     var adress = escape(document.getElementById("adress").value); 
     var city = escape(document.getElementById("city").value); 
     var description = escape(document.getElementById("description").value); 
     var type = document.getElementById("type").value; 
     var latlng = marker.getPosition(); 

     var url = "phpsqlinfo_addrow.php?name=" + name + "&adress=" + adress + "&city=" + city + 
     "&description=" + description + "&type=" + type + "&lat=" + latlng.lat() + "&lon=" + latlng.lng(); 
     downloadUrl(url, function(data, responseCode) { 
     if (responseCode == 200 && data.length <= 1) { 
      infowindow.close(); 
      document.getElementById("message").innerHTML = "Location added."; 
     } 

     }); 

    $(document).ready(function() { 
     setTimeout("ReloadPage()", 100); 
     }); 

    } 

     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.responseText, request.status); 
     } 
     }; 

     request.open('GET', url, true); 
     request.send(null); 

    } 

    function ReloadPage() { 
    location.reload(); 
}; 


    function doNothing() {} 

insérer le code PHP:

require("controller/phpsqlinfo_dbinfo.php"); 

// Gets data from URL parameters 
$name = $_GET['name']; 

$adress = $_GET['adress']; 

$city = $_GET['city']; 

$description = $_GET['description']; 

$lat = $_GET['lat']; 

$lon = $_GET['lon']; 

$type = $_GET['type']; 


// Opens a connection to a MySQL server 
$connection=mysql_connect ("localhost", $dbuser, $dbpass); 
if (!$connection) { 
    die('Not connected : ' . mysql_error()); 
} 

// Set the active MySQL database 
$db_selected = mysql_select_db($dbname, $connection); 
if (!$db_selected) { 
    die ('Can\'t use db : ' . mysql_error()); 
} 

// Insert new row with user data 

//$submit="INSERT INTO poi_example (id, name, city, adress, description, lat, lon, type) VALUES (NULL,'$name','$city', '$adress','$description','$lat','$lon','$type');"; 

$query = sprintf("INSERT INTO poi_example " . 
     " (id, name, adress, city, description, lat, lon, type) " . 
     " VALUES (NULL, '%s', '%s', '%s', '%s', '%s', '%s', '%s');", 
     mysql_real_escape_string($name), 
     mysql_real_escape_string($adress), 
      mysql_real_escape_string($city), 
     mysql_real_escape_string($description), 
     mysql_real_escape_string($lat), 
     mysql_real_escape_string($lon), 
     mysql_real_escape_string($type)); 

$result = mysql_query($query); 


//print_r($result); 

if (!$result) { 
    die('Invalid query: ' . mysql_error()); 
} 

?> 
+1

ce ne sont pas de mauvaises valeurs. '% u0117' est [unicode] (http://www.fileformat.info/info/unicode/char/117/index.htm) – RASG

+0

Oui, j'ai utilisé une mauvaise expression, désolé. –

+0

comment obtenez-vous les valeurs de poste au format Unicode ou comme il est –

Répondre

1

Est-il possible que votre base de données (locale?) N'est pas configuré pour utiliser le codage à droite? Je pense que l'UTF-8 par exemple pourrait être mieux adapté au lituanien. Je pense que l'encodage standard de MySQL est quelque chose comme latin1? C'est juste une supposition, mais vous devrez peut-être vérifier cela.

+0

Merci , mais les premières formes, envoyer les bons noms à la base de données. Peut-être que cela peut être le problème avec '$ _POST' et' $ _GET'? dans la première forme j'utilise '$ _POST', dans la seconde' $ _GET' –

+0

Est-ce que les données envoyées via le premier formulaire sont récupérées sur le site web et sont-elles codées correctement? – bentrm

+0

oui c'est correct –

Questions connexes