1

私はjqueryに問題があります.インタラクティブマップで作業しています.都市のクリックフォームhrefで、SQLクエリに都市名または番号を挿入します.

このリンク リンク都市:

<a href='#' class='city_pr' id=aden> </a>

mysql クエリ:

$sql="select * from project  where    city='$_SESSION[CITY]' AND active =1 ";

以下のリンクをクリックして mysql クエリへのセッションを変更する方法 jquery を使用してページ ナビゲーションをダウンロードする

4

1 に答える 1

4

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';

お役に立てれば :-)

于 2012-05-18T21:33:30.063 に答える