PHPセッションをjQueryで直接使用することはできません。ajax呼び出しを行う必要があります。
これを試して。
説明:
- これにより、リンク内の値がキャプチャされ、PHPファイルに投稿され、ページを更新せずに「result」divにデータが出力されます。
(投稿の最後にある私の観察を読むことを忘れないでください)
HTML:
<a href='#' id='country'>USA</a>
<br/>
<div id="result"></div>
JS:
$('#country').click(function(){
// get the value inside the <a> tag
var country = $(this).html();
$.post('process.php', { country:country }, function(data){
// Everything is Ok, so data won't be 0
if(data != 0){
// Print country information
$('#result').html(data);
}
});
});
process.php
<?php
if($_POST() && isset($_POST['country'])){
/* Connect to DB */
$link = mysql_connect('server', 'user', 'pwd');
if (!$link) {
// No connection
print(0);
exit();
}
$db = mysql_select_db('db', $link);
if (!$db) {
// DB selection error
print(0);
exit();
}
/* sanitize the value */
$country = mysql_real_escape_string($_POST['country']);
/* do your query */
$sql = "SELECT * FROM country WHERE country_name = '$country'";
$result = mysql_query($sql);
if(mysql_num_rows($result) > 0){
while($row = mysql_fetch_array($result)){
// At this point I am supposing that you stored in your table
// latitudes and longitudes of countries.
echo "Latitude is: ".$row['latitude']." Longitude is: ".$row['longitude'];
}
} else {
// No results found
print(0);
}
}
?>
観察:
- 他の方法を使用して、国の値をサーバーに送信してみてください。
例えば:
私が持っている場合:
<a href='#' id='country'>United States of America</a>
SQLクエリでは、次のようになります。
SELECT * FROM country WHERE country_name = 'United States of America';
より良い方法は次のとおりです。
<a href='#' id='us'>United States of America</a>
したがって、私のJSでは、 var country = $(this).html();
これを置き換える必要があります。
//outputs 'us'
var country = $(this).attr('id');
次に、SQLクエリで次のようになります。
SELECT * FROM country WHERE country_name = 'us';
コードを使用し、名前を使用しない方が合理的です(名前はユーザーに表示するためのものであり、理解を深めるために、クエリで使用するための値をサニタイズしtrim();
たり、スペースなどを削除するなどの機能を使用したりする際に問題が発生する可能性があります) 。これを行う場合は、コードで国を検索するためにクエリを変更する必要があります。
SELECT * FROM country WHERE country_code = 'us';
お役に立てれば :-)