2012-03-23 43 views
0

我試圖讓這個實時搜索正常工作。輸入中的回波值,一旦輸入值

我設想它的工作是,用戶訪問的形式,在像94302一個值進入和輸出的方法是使用「聖克拉拉」例如一個盒子,具有value=""等於數據庫字段fanDetLocID的值。

形式的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其通過jquery的調用由方法.keyup()當輸入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,如聖巴巴拉,CA。

+1

「修復我的代碼」的問題是不利於Q&A形式 – 2012-03-23 04:23:44

+0

我所要求的可能的方式來輸出這個,我不要求你寫我的代碼。我在這裏學習,上面這種迴應沒有幫助。 – CodeTalk 2012-03-23 04:28:06

+0

此迴應並非旨在「有幫助」。這僅僅是解釋你的問題有什麼問題。你必須通過某些類,書或教程學習。雖然這個網站是爲了提出某些問題。拿到一個? – 2012-03-23 04:47:24

回答

0

好吧,您的主要問題是,您正在嘗試echo a PDOStatement。您需要執行至少一次獲取操作並從結果集中檢索值。

其次,你應該真的使用綁定的參數,而不是注入值到您的SQL字符串。

第三,我發現沒有必要讓數據庫執行簡單的字符串連接。試試這個

$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 2012-03-23 15:19:01

+0

在輸入5位數的zip時,需要將'htmlspecialchars($ res ['fanDetLocCity'],$ res ['fanDetLocState']'的值設置爲' CodeTalk 2012-03-23 15:26:19

+0

錯誤是在jquery本身,'.ajax()data:「zip =」+ zip,'這行可能是錯誤的,因爲沒有數據發送到頁面的URL。這可能是問題嗎? – CodeTalk 2012-03-23 15:44:42