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
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());
}
?>
ce ne sont pas de mauvaises valeurs. '% u0117' est [unicode] (http://www.fileformat.info/info/unicode/char/117/index.htm) – RASG
Oui, j'ai utilisé une mauvaise expression, désolé. –
comment obtenez-vous les valeurs de poste au format Unicode ou comme il est –