2012-03-23 25 views
0

このライブ検索が正しく機能するようにしようとしています。入力値のエコー値が一度入力されたとき

それは出力、ユーザーがフォームにアクセスし、さ94302ような値に入り、動作するように想定方法は、データベースフィールドfanDetLocIDの値に等しいvalue=""で、例えば「サンタクララ」のボックスであります。

フォームのHTMLページのロード時に呼び出された

<form method="post" id="FanDetail"> 
<input id="zip" name="zipcode" value="US Zipcode" onFocus="clearText(this)" /> 
</form> 

<div class="success" style="display: none;">Saved!</div> 

のjQuery:

$(document).ready(function(){ 
    $("#zip").keyup(function() { 
     // do magic 
     $.ajax({ 
     type: "POST", 
     url: "../php/getFanLoc.php", 
     data: "zip="+ zip, 
     success: function(){ 
      $('#zip').function(){$('div.success').fadeIn();}; 
      } 
     }); 
    return false; 
    }); 
}); 

PHPファイル:getFanLoc.php方法.keyup()でjqueryので呼ばれています5桁の郵便番号が入力されたとき

<?php 
///////////////////////////////////// 
require_once('../cfg/dbi.php'); ///// 
///////////////////////////////////// 

############### SANITIZE ############### ////////////// 
/////////////////////////////////////////////////////// 
$zip = htmlspecialchars(trim($_POST['zipcode'])); /// 
$zip = mysql_real_escape_string($_POST['zipcode']); /// 
/////////////////////////////////////////////////////// 

try{ 
    $dbh = new PDO("mysql:host=$host;dbname=$dbname",$user,$pass); 
    $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
    ## INSERT CLEAN DATA INTO TABLE… 
    $sth = $dbh->prepare(
    'SELECT fanDetLocID, fanDetLocCity, fanDetLocState FROM fanDetailLocation WHERE fanDetLocZip = ?'); 
    $sth->bindParam(1, $zip); 
    $sth->execute(); 
    if ($res = $sth->fetch(PDO::FETCH_ASSOC)) { 
     printf('%s, %s', 
      htmlspecialchars($res['fanDetLocCity'], ENT_QUOTES, 'UTF-8'), 
      htmlspecialchars($res['fanDetLocState'], ENT_QUOTES, 'UTF-8') 
     ); 
    } 
} 





catch(PDOException $e){ 
    file_put_contents('../../PDODBConnectionErrors.txt', $e->getMessage(), FILE_APPEND); 
} 



?> 

現在の問題:5桁の郵便番号を入力しても何も表示されません。5桁の郵便番号を入力するとこの値が表示されるように助けてください。

SQLクエリを確認しましたが、これは問題なく動作します。入力ボックスには、例えば、カリフォルニア州サンタバーバラのようなfanDetLocCity, fanDetLocCityの値を出力する必要があります。

+1

「私のコードを修正」という質問は、私は出力することができる方法のためにこれを求めているQ&A形式 –

+0

のために良いではない、私は私のコードを書くためにあなたを求めていないよ試してみてください。私はここで学ぶためにここに来ていますが、このタイプの応答は役に立ちません。 – CodeTalk

+0

この応答は「有用」ではありません。これは単にあなたの質問に間違いがあるかどうかの説明です。いくつかの授業や本、チュートリアルなどを使って学ぶ必要があります。このサイトは特定の質問をするためのサイトですが。 1つ持っていますか? –

答えて

0

あなたの主な問題は、echoPDOStatementにしようとしていることです。少なくとも1つのフェッチ操作を実行し、結果セットから値を取得する必要があります。

は、SQL文字列に値を挿入する代わりに、バインドされたパラメータを使用する必要があります。

第3に、私はデータベースに簡単な文字列連結を実行させることに何の意味も見ません。この代わりに

$sth = $dbh->prepare(
    'SELECT fanDetLocID, fanDetLocCity, fanDetLocState FROM fanDetailLocation WHERE fanDetLocZip = ?'); 
$sth->bindParam(1, $zip); 
$sth->execute(); 

if ($res = $sth->fetch(PDO::FETCH_ASSOC)) { 
    printf('%s, %s', 
     htmlspecialchars($res['fanDetLocCity'], ENT_QUOTES, 'UTF-8'), 
     htmlspecialchars($res['fanDetLocState'], ENT_QUOTES, 'UTF-8') 
    ); 
} 
+0

大きなポイントはここ!前にこれを使用していたので、htmlspecialchars($ res ['fanDetLocCity']、ENT_QUOTES、 'UTF-8')、htmlspecialchars($ res ['fanDetLocState']、ENT_QUOTES、 'UTF-8') 'クエリを準備していますか?これは何も表示されていません。更新されたコードを見てください、本当に感謝しています。 – CodeTalk

+0

5文字の郵便番号を入力すると、 'htmlspecialchars($ res ['fanDetLocCity']、$ res ['fanDetLocState']'の値は ' CodeTalk

+0

おそらくこのエラーはjquery自体にあり、 '.ajax()data:" zip = "+ zip"内のこの行は、ページのURLにデータが送られないので誤っている可能性があります。 – CodeTalk

関連する問題